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.
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"]).
{
"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).
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.
- 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 anggetToken(). 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 anggetAPNSToken()sa mga unang sandali pagkatapos ng paglulunsad — kung ganoon, subukan muli pagkalipas ng maikling paghihintay.
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)
}// 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);
}