Dokumentasyon

Mga push notification

Ihatid ang mga sagot ng tagasuporta at ang mga kampanya kahit sarado ang app, na may deep link diretso sa tamang usapan. Ang app ninyo ang may hawak ng push subsystem; ang SDK ang nagrerehistro ng mga token at nagbubukas ng mga usapan.

Ano ang ipinapadala ng Respondo#

  • Mga push ng mensahe — sagot ng tagasuporta o ng AI sa usapang kinabibilangan ng bisita.
  • Mga push ng kampanya — mga papalabas na push campaign, na nag-uulat din ng open beacon.

Palaging may dalang deep link na may anyong respondo://conversation/<id> ang mga push ng mensahe. Ang mga push ng kampanya ay may dalang deep link na naka-configure sa kampanya — opsyonal ito, at kapag hindi nakatakda, walang deep link ang push.

Apple (APNs)#

Direktang tumatakbo sa APNs ang push sa iOS — walang dependency sa Firebase. Mula sa Apple Developer account ninyo, kunin ang:

  • APNs Auth Key (token key na .p8).
  • Ang Key ID ng susing iyon.
  • Ang Team ID ninyo.
  • Ang bundle id ng app.

Google (FCM)#

Dumadaan sa Firebase Cloud Messaging ang push sa Android. Mula sa proyekto ninyo sa Firebase, kunin ang:

  • JSON ng service account na may role na Cloud Messaging.
  • Ang Firebase project ID (Firebase console → Project settings) — inilalagay bilang sarili nitong field sa push form ng dashboard katabi ng JSON ng service account.
  • Ang package name ng Android app, at ikonekta ang app sa parehong proyekto sa Firebase (google-services.json).

Pag-configure sa Respondo#

Idagdag ang APNs key at ang FCM service account kasama ang project ID nito sa widget channel ninyo sa dashboard. Iyon lang ang kailangan ng Respondo para makapagpadala sa parehong plataporma.

Ang pagtatakda ng mga kredensyal sa pamamagitan ng API at ang buong sanggunian ng mga field ay tinatalakay sa gabay sa pag-setup ng push na kasama ng access ninyo sa SDK.

Format ng payload#

Palaging nasa ilalim ng root key na respondo ang payload — sa pagkakaroon nito nakikilala ng SDK ang sariling push nito mula sa iba (sa iOS ay nasa userInfo, sa Android ay bilang JSON string sa data["respondo"]).

payload ng 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"
  }
}

Payak na string ang lahat ng halaga. Ang title at body ng notification ay inihahatid ng transport ng plataporma — aps.alert sa APNs at message.notification sa FCM — hindi sa loob ng object na respondo.

May kasama ring delivery_id ang mga push ng kampanya, na ginagamit sa pag-uulat ng open beacon, at maaaring may dala pa silang dagdag na payak na string key mula sa push data ng kampanya.

Paghawak ng tap at foreground#

Kapag na-tap ang notification, ibigay ang hilaw na payload sa SDK. Sinusuri nito ang payload at binubuksan ang tamang usapan, at nagbabalik ng false kung hindi push ng Respondo ang natanggap (sa ganoong kaso, kayo ang humawak nito).

Paghawak ng tap (bawat plataporma)text
Android:  RespondoPushPayload.from(data)?.let { Respondo.handlePush(it) }
iOS:      Respondo.handlePush(userInfo: userInfo)
Flutter:  Respondo.handlePushData(message.data)

Pinagsasama ang mga duplicate ayon sa message_id, at habang bukas sa foreground ang parehong usapan, pinipigil ang notification ng sistema — parehong awtomatikong inaasikaso ng SDK.

Pagrehistro ng device token#

Kinukuha ng app ninyo ang device token mula sa sarili nitong push subsystem at ipinapasa ito sa setPushToken. Tawagin ang clearPushToken sa pag-log out.

Aling token ang ipapasa. Iniruruta ng backend ang bawat paghahatid ayon sa plataporma — direktang napupunta sa APNs ang iOS, sa FCM naman ang Android — kaya kailangan ninyong irehistro ang token ng native na transport ng plataporma, hindi kung ano man ang ibinabalik ng push library ninyo:
  • Android — ang FCM registration token mula sa FirebaseMessaging.getToken().
  • iOS (native) — ang APNs device token (hex) mula sa didRegisterForRemoteNotificationsWithDeviceToken.
  • iOS sa pamamagitan ng Flutter (firebase_messaging) — gamitin ang getAPNSToken(), hindi ang getToken(). Kapag ipinasa ninyo ang FCM token sa iOS, napupunta ito sa APNs kung saan hindi ito wastong device token at hindi kailanman dumarating ang mga push. Puwedeng null ang getAPNSToken() sa mga unang sandali pagkatapos ng paglulunsad — kung ganoon, subukan muli pagkalipas ng maikling paghihintay.
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
// APNs token ang kailangan sa iOS; FCM token naman sa Android.
final token = Platform.isIOS
    ? await FirebaseMessaging.instance.getAPNSToken()
    : await FirebaseMessaging.instance.getToken();
if (token != null) Respondo.setPushToken(token);

// Iniikot ng FCM ang registration token nito; panatilihing naka-sync ang Android.
if (!Platform.isIOS) {
  FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}