Powiadomienia push
Dostarczaj odpowiedzi operatorów i kampanie, gdy aplikacja jest zamknięta, z linkiem głębokim prosto do właściwej rozmowy. Twoja aplikacja jest właścicielem podsystemu push; SDK rejestruje tokeny i otwiera rozmowy.
Co wysyła Respondo#
- Push wiadomości — odpowiedź operatora lub AI w rozmowie, w której uczestniczy odwiedzający.
- Push kampanii — wychodzące kampanie push, które dodatkowo raportują sygnalizator otwarcia.
Push wiadomości zawsze niosą link głęboki w postaci respondo://conversation/<id>. Push kampanii niosą link głęboki skonfigurowany w kampanii — jest opcjonalny, a gdy nie jest ustawiony, push nie zawiera linku głębokiego.
Apple (APNs)#
Push na iOS działa bezpośrednio na APNs — bez zależności od Firebase. Ze swojego konta Apple Developer uzyskaj:
- Klucz uwierzytelniający APNs (klucz tokenowy
.p8). - Key ID tego klucza.
- Twój Team ID.
- bundle id aplikacji.
Google (FCM)#
Push na Androidzie przechodzi przez Firebase Cloud Messaging. Ze swojego projektu Firebase uzyskaj:
- JSON konta usługi z rolą Cloud Messaging.
- Identyfikator projektu Firebase (konsola Firebase → Project settings) — wpisywany jako osobne pole w formularzu push w panelu, obok JSON-a konta usługi.
- nazwę pakietu aplikacji Android i połącz aplikację z tym samym projektem Firebase (
google-services.json).
Konfiguracja w Respondo#
Dodaj klucz APNs oraz konto usługi FCM wraz z jego identyfikatorem projektu do kanału widgetu w panelu. To wszystko, czego Respondo potrzebuje, aby wysyłać na obie platformy.
Format payloadu#
Payload zawsze żyje pod głównym kluczem respondo — jego obecność to sposób, w jaki SDK odróżnia własne push od innych (na iOS w userInfo, na Androidzie jako ciąg JSON w data["respondo"]).
{
"respondo": {
"type": "message",
"conversation_id": "a1c4e7b2-5d38-4f6a-9e10-3b7c2d5f8a90",
"message_id": "e9a3c1f6-4b8d-4e0a-b5f3-1d7b2a4e9c63",
"deep_link": "respondo://conversation/a1c4e7b2-5d38-4f6a-9e10-3b7c2d5f8a90"
}
}Wszystkie wartości to płaskie ciągi znaków. Tytuł i treść powiadomienia są dostarczane przez transport platformy — aps.alert w APNs i message.notification w FCM — a nie wewnątrz obiektu respondo.
Push kampanii zawiera dodatkowo delivery_id używany do zaraportowania sygnalizatora otwarcia i może nieść dodatkowe płaskie klucze tekstowe z danych push kampanii.
Obsługa dotknięć i pierwszego planu#
Po dotknięciu powiadomienia przekaż surowy payload do SDK. Parsuje ono payload i otwiera właściwą rozmowę, zwracając false, jeśli push nie jest pushem Respondo (w takim przypadku obsłuż go samodzielnie).
Android: RespondoPushPayload.from(data)?.let { Respondo.handlePush(it) }
iOS: Respondo.handlePush(userInfo: userInfo)
Flutter: Respondo.handlePushData(message.data)Duplikaty są scalane po message_id, a gdy ta sama rozmowa jest otwarta na pierwszym planie, systemowe powiadomienie jest tłumione — SDK obsługuje oba przypadki automatycznie.
Rejestrowanie tokenów urządzeń#
Twoja aplikacja pobiera token urządzenia ze swojego podsystemu push i przekazuje go do setPushToken. Wywołaj clearPushToken przy wylogowaniu.
- Android — token rejestracyjny FCM z
FirebaseMessaging.getToken(). - iOS (natywnie) — token urządzenia APNs (hex) z
didRegisterForRemoteNotificationsWithDeviceToken. - iOS przez Flutter (firebase_messaging) — użyj
getAPNSToken(), a niegetToken(). Przekazanie tokena FCM na iOS wysyła go do APNs, gdzie nie jest on prawidłowym tokenem urządzenia i push nigdy nie docierają.getAPNSToken()może być null w pierwszych chwilach po uruchomieniu — jeśli tak, ponów po krótkim opóźnieniu.
override fun onNewToken(token: String) {
Respondo.setPushToken(token)
}func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
let token = deviceToken.map { String(format: "%02x", $0) }.joined()
Respondo.setPushToken(token)
}// iOS potrzebuje tokena APNs; Android potrzebuje tokena FCM.
final token = Platform.isIOS
? await FirebaseMessaging.instance.getAPNSToken()
: await FirebaseMessaging.instance.getToken();
if (token != null) Respondo.setPushToken(token);
// FCM rotuje swój token rejestracyjny; utrzymuj synchronizację na Androidzie.
if (!Platform.isIOS) {
FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}