Dokumentasi

Pemberitahuan push

Hantar balasan kakitangan sokongan dan kempen ketika aplikasi ditutup, dengan pautan dalam terus ke perbualan yang betul. Aplikasi anda memiliki subsistem push; SDK pula mendaftarkan token dan membuka perbualan.

Apa yang dihantar Respondo#

  • Push mesej — balasan kakitangan sokongan atau AI dalam perbualan yang disertai pelawat itu.
  • Push kempen — kempen push keluar, yang turut melaporkan isyarat pembukaan.

Push mesej sentiasa membawa pautan dalam berbentuk respondo://conversation/<id>. Push kempen membawa pautan dalam yang dikonfigurasi pada kempen — ia tidak wajib, dan apabila tidak ditetapkan, push itu tidak mengandungi pautan dalam.

Apple (APNs)#

Push iOS berjalan terus melalui APNs — tanpa kebergantungan pada Firebase. Daripada akaun Apple Developer anda, dapatkan:

  • Satu APNs Auth Key (kunci token .p8).
  • Key ID bagi kunci tersebut.
  • Team ID anda.
  • bundle id aplikasi.

Google (FCM)#

Push Android berjalan melalui Firebase Cloud Messaging. Daripada projek Firebase anda, dapatkan:

  • Satu service account JSON dengan peranan Cloud Messaging.
  • ID projek Firebase (konsol Firebase → Project settings) — dimasukkan sebagai medannya sendiri dalam borang push papan pemuka di sebelah service-account JSON.
  • package name aplikasi Android, dan sambungkan aplikasi itu kepada projek Firebase yang sama (google-services.json).

Konfigurasi dalam Respondo#

Tambah kunci APNs dan service account FCM berserta ID projeknya pada saluran widget anda dalam papan pemuka. Itu sahaja yang Respondo perlukan untuk menghantar ke kedua-dua platform.

Cara menetapkan kelayakan melalui API dan rujukan penuh medannya dibincangkan dalam panduan persediaan push yang disertakan bersama akses SDK anda.

Format payload#

Payload sentiasa berada di bawah kunci akar respondo — kehadirannya ialah cara SDK membezakan push miliknya daripada push lain (pada iOS dalam userInfo, pada Android sebagai rentetan JSON dalam data["respondo"]).

payload respondojson
{
  "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"
  }
}

Semua nilai ialah rentetan rata. Tajuk dan isi pemberitahuan dihantar oleh pengangkutan platform — aps.alert pada APNs dan message.notification pada FCM — bukan di dalam objek respondo.

Push kempen turut menyertakan delivery_id yang digunakan untuk melaporkan isyarat pembukaan, dan mungkin membawa kunci rentetan rata tambahan daripada data push kempen itu.

Mengendalikan ketikan & latar depan#

Apabila pemberitahuan diketik, serahkan payload mentah itu kepada SDK. SDK menghurai payload tersebut dan membuka perbualan yang betul, serta memulangkan false jika push itu bukan push Respondo (kendalikannya sendiri dalam kes tersebut).

Mengendalikan ketikan (mengikut platform)text
Android:  RespondoPushPayload.from(data)?.let { Respondo.handlePush(it) }
iOS:      Respondo.handlePush(userInfo: userInfo)
Flutter:  Respondo.handlePushData(message.data)

Pendua digabungkan mengikut message_id, dan selagi perbualan yang sama terbuka di latar depan, pemberitahuan sistem akan ditahan — SDK menguruskan kedua-duanya secara automatik.

Mendaftarkan token peranti#

Aplikasi anda mendapatkan token peranti daripada subsistem push miliknya dan menghantarnya ke setPushToken. Panggil clearPushToken semasa log keluar.

Token yang mana perlu didaftarkan. Backend menghalakan setiap penghantaran mengikut platform — iOS terus ke APNs, Android ke FCM — jadi anda mesti mendaftarkan token pengangkutan asli platform berkenaan, bukan sebarang token yang kebetulan dipulangkan oleh pustaka push anda:
  • Android — token pendaftaran FCM daripada FirebaseMessaging.getToken().
  • iOS (asli) — token peranti APNs (hex) daripada didRegisterForRemoteNotificationsWithDeviceToken.
  • iOS melalui Flutter (firebase_messaging) — gunakan getAPNSToken(), bukan getToken(). Menghantar token FCM pada iOS bermakna ia dihantar ke APNs, dan di sana ia bukan token peranti yang sah, jadi push tidak akan sampai. getAPNSToken() boleh menjadi null pada saat-saat awal selepas pelancaran — cuba semula selepas jeda singkat jika begitu.
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 memerlukan token APNs; Android memerlukan token FCM.
final token = Platform.isIOS
    ? await FirebaseMessaging.instance.getAPNSToken()
    : await FirebaseMessaging.instance.getToken();
if (token != null) Respondo.setPushToken(token);

// FCM menggilir token pendaftarannya; pastikan Android sentiasa segerak.
if (!Platform.isIOS) {
  FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}