Push bildirimleri
Uygulama kapalıyken bile temsilci yanıtlarını ve kampanyaları, doğrudan doğru konuşmaya giden bir derin bağlantıyla teslim edin. Push alt sistemi uygulamanıza aittir; SDK belirteçleri kaydeder ve konuşmaları açar.
Respondo neler gönderir#
- Mesaj push’ları — ziyaretçinin parçası olduğu bir konuşmadaki bir temsilci veya yapay zeka yanıtı.
- Kampanya push’ları — bir açılma işareti (beacon) de raporlayan giden push kampanyaları.
Mesaj push’ları her zaman respondo://conversation/<id> biçiminde bir derin bağlantı taşır. Kampanya push’ları, kampanyada yapılandırılan derin bağlantıyı taşır — bu isteğe bağlıdır ve ayarlanmadığında push derin bağlantı içermez.
Apple (APNs)#
iOS push doğrudan APNs üzerinde çalışır — Firebase bağımlılığı yoktur. Apple Developer hesabınızdan şunları edinin:
- Bir APNs Auth Key (
.p8token key’i). - O anahtarın Key ID’si.
- Team ID’niz.
- Uygulama bundle id’si.
Google (FCM)#
Android push, Firebase Cloud Messaging üzerinden geçer. Firebase projenizden şunları edinin:
- Cloud Messaging rolüne sahip bir servis hesabı JSON’u.
- Firebase proje kimliği (Firebase konsolu → Project settings) — panodaki push formunda servis hesabı JSON’unun yanında kendi alanı olarak girilir.
- Android uygulamasının paket adı ve uygulamayı aynı Firebase projesine bağlayın (
google-services.json).
Respondo’da yapılandırma#
APNs anahtarını ve proje kimliğiyle birlikte FCM servis hesabını paneldeki widget kanalınıza ekleyin. Respondo’nun her iki platforma da gönderim yapması için gereken budur.
Payload biçimi#
Payload her zaman bir kök respondo anahtarının altında bulunur — SDK, kendi push’unu başkalarınınkinden onun varlığıyla ayırt eder (iOS’ta userInfo içinde, Android’de data["respondo"] içinde bir JSON dizesi olarak).
{
"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"
}
}Tüm değerler düz dizelerdir. Bildirim başlığı ve gövdesi platform taşıması tarafından teslim edilir — APNs’te aps.alert, FCM’de message.notification — respondo nesnesinin içinde değil.
Kampanya push’ları ayrıca açılma işaretini (beacon) raporlamak için kullanılan bir delivery_id içerir ve kampanyanın push verilerinden ek düz dize anahtarları taşıyabilir.
Dokunmaları & ön planı işleme#
Bir bildirime dokunulduğunda, ham payload’ı SDK’ya verin. SDK payload’ı ayrıştırır ve doğru konuşmayı açar; push bir Respondo push’u değilse false döndürür (bu durumda onu kendiniz işleyin).
Android: RespondoPushPayload.from(data)?.let { Respondo.handlePush(it) }
iOS: Respondo.handlePush(userInfo: userInfo)
Flutter: Respondo.handlePushData(message.data)Kopyalar message_id ile birleştirilir ve aynı konuşma ön planda açıkken sistem bildirimi bastırılır — SDK her ikisini de otomatik olarak halleder.
Cihaz belirteçlerini kaydetme#
Uygulamanız cihaz belirtecini kendi push alt sisteminden alır ve setPushToken’a geçirir. Çıkışta clearPushToken’ı çağırın.
- Android —
FirebaseMessaging.getToken()ile alınan FCM kayıt belirteci. - iOS (yerel) —
didRegisterForRemoteNotificationsWithDeviceTokenile alınan APNs cihaz belirteci (hex). - Flutter üzerinden iOS (firebase_messaging) —
getToken()değil,getAPNSToken()kullanın. iOS’ta FCM belirtecini geçirmek onu APNs’e gönderir; orada geçerli bir cihaz belirteci değildir ve push’lar asla ulaşmaz.getAPNSToken(), açılıştan sonraki ilk anlarda null olabilir — öyleyse kısa bir gecikmeden sonra yeniden deneyin.
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 APNs belirtecine ihtiyaç duyar; Android FCM belirtecine ihtiyaç duyar.
final token = Platform.isIOS
? await FirebaseMessaging.instance.getAPNSToken()
: await FirebaseMessaging.instance.getToken();
if (token != null) Respondo.setPushToken(token);
// FCM, kayıt belirtecini döndürür; Android'i senkron tutun.
if (!Platform.isIOS) {
FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}