Arifa za push
Fikisha majibu ya maafisa na kampeni hata wakati programu imefungwa, pamoja na deep link inayoelekeza moja kwa moja kwenye mazungumzo sahihi. Programu yako ndiyo inayomiliki mfumo mdogo wa push; SDK husajili tokeni na kufungua mazungumzo.
Nini Respondo hutuma#
- Push za ujumbe — jibu la afisa au la AI katika mazungumzo ambayo mgeni ni sehemu yake.
- Push za kampeni — kampeni za push zinazotoka nje, ambazo pia huripoti beacon ya ufunguzi.
Push za ujumbe daima hubeba deep link ya muundo respondo://conversation/<id>. Push za kampeni hubeba deep link iliyosanidiwa kwenye kampeni — ni ya hiari, na isipowekwa push haina deep link.
Apple (APNs)#
Push ya iOS hupitia APNs moja kwa moja — hakuna tegemezi ya Firebase. Kutoka akaunti yako ya Apple Developer, pata:
- Ufunguo wa APNs Auth Key (ufunguo wa tokeni wa
.p8). - Key ID ya ufunguo huo.
- Team ID yako.
- bundle id ya programu.
Google (FCM)#
Push ya Android hupitia Firebase Cloud Messaging. Kutoka mradi wako wa Firebase, pata:
- JSON ya service account yenye jukumu la Cloud Messaging.
- Kitambulisho cha mradi wa Firebase (Firebase console → Project settings) — huwekwa kama sehemu yake tofauti katika fomu ya push ya dashibodi kando ya JSON ya service account.
- package name ya programu ya Android, na uunganishe programu na mradi uleule wa Firebase (
google-services.json).
Usanidi ndani ya Respondo#
Ongeza ufunguo wa APNs na service account ya FCM pamoja na kitambulisho cha mradi wake kwenye kituo chako cha wijeti ndani ya dashibodi. Hicho ndicho kitu pekee Respondo inachohitaji ili kutuma kwenye mifumo yote miwili.
Muundo wa payload#
Payload daima hukaa chini ya ufunguo mkuu respondo — uwepo wake ndio njia SDK inayotofautisha push yake na nyingine (kwenye iOS ndani ya userInfo, kwenye Android kama mfuatano wa JSON ndani ya 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"
}
}Thamani zote ni string tambarare. Kichwa na mwili wa arifa huwasilishwa na usafirishaji wa jukwaa — aps.alert kwenye APNs na message.notification kwenye FCM — si ndani ya kipengee cha respondo.
Push za kampeni pia hujumuisha delivery_id inayotumika kuripoti beacon ya ufunguzi, na zinaweza kubeba funguo za ziada za string tambarare kutoka data ya push ya kampeni.
Kushughulikia mibofyo na hali ya mbele#
Arifa inapobofywa, kabidhi payload ghafi kwa SDK. Huichanganua payload na kufungua mazungumzo sahihi, ikirudisha false ikiwa push si ya Respondo (katika hali hiyo ishughulikie mwenyewe).
Android: RespondoPushPayload.from(data)?.let { Respondo.handlePush(it) }
iOS: Respondo.handlePush(userInfo: userInfo)
Flutter: Respondo.handlePushData(message.data)Nakala rudufu huunganishwa kwa message_id, na wakati mazungumzo yaleyale yamefunguliwa mbele, arifa ya mfumo hukandamizwa — SDK hushughulikia yote mawili kiotomatiki.
Kusajili tokeni za vifaa#
Programu yako hupata tokeni ya kifaa kutoka mfumo wake mdogo wa push na kuipitisha kwa setPushToken. Ita clearPushToken mtumiaji anapotoka.
- Android — tokeni ya usajili ya FCM kutoka
FirebaseMessaging.getToken(). - iOS (asilia) — tokeni ya kifaa ya APNs (hex) kutoka
didRegisterForRemoteNotificationsWithDeviceToken. - iOS kupitia Flutter (firebase_messaging) — tumia
getAPNSToken(), sigetToken(). Kupitisha tokeni ya FCM kwenye iOS huipeleka APNs, ambako si tokeni halali ya kifaa na push hazifiki kamwe.getAPNSToken()inaweza kuwa null kwa muda mfupi baada ya uzinduzi — jaribu tena baada ya kusubiri kidogo ikiwa ndivyo.
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 inahitaji tokeni ya APNs; Android inahitaji tokeni ya FCM.
final token = Platform.isIOS
? await FirebaseMessaging.instance.getAPNSToken()
: await FirebaseMessaging.instance.getToken();
if (token != null) Respondo.setPushToken(token);
// FCM hubadilisha tokeni yake ya usajili; weka Android sambamba.
if (!Platform.isIOS) {
FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}