Dokümanlar

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 (.p8 token 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.

Kimlik bilgilerinin API üzerinden ayarlanması ve tam alan referansı, SDK erişiminizle birlikte teslim edilen push kurulum kılavuzunda ele alınır.

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 payloadjson
{
  "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).

Bir dokunmayı işleme (platform başına)text
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.

Hangi belirtecin geçirileceği. Backend her teslimatı platforma göre yönlendirir — iOS doğrudan APNs’e gider, Android FCM’e gider — bu yüzden push kütüphanenizin size ne döndürdüğüne bakılmaksızın, platformun yerel taşımasının belirtecini kaydetmelisiniz:
  • Android — FirebaseMessaging.getToken() ile alınan FCM kayıt belirteci.
  • iOS (yerel) — didRegisterForRemoteNotificationsWithDeviceToken ile 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.
Android — FirebaseMessagingServicekotlin
override fun onNewToken(token: String) {
    Respondo.setPushToken(token)
}
iOS — AppDelegateswift
func application(
    _ application: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
    let token = deviceToken.map { String(format: "%02x", $0) }.joined()
    Respondo.setPushToken(token)
}
Flutter — firebase_messagingdart
// 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);
}