पुश नोटिफिकेशन
ॲप बंद असतानाही सपोर्ट प्रतिनिधींची उत्तरे आणि मोहिमा पोहोचवा — थेट योग्य संभाषणात नेणाऱ्या डीप लिंकसह. पुश सबसिस्टम तुमच्या ॲपच्या ताब्यात असते; SDK फक्त टोकन नोंदवते आणि संभाषणे उघडते.
Respondo काय पाठवते#
- मेसेजचे पुश — अभ्यागत सहभागी असलेल्या संभाषणातील सपोर्ट प्रतिनिधी किंवा AI चे उत्तर.
- मोहिमेचे पुश — बाहेर जाणाऱ्या पुश मोहिमा, ज्या उघडल्याची नोंद (open beacon) देखील पाठवतात.
मेसेजच्या पुशमध्ये नेहमी respondo://conversation/<id> या स्वरूपाची डीप लिंक असते. मोहिमेच्या पुशमध्ये मोहिमेवर कॉन्फिगर केलेली डीप लिंक असते — ती ऐच्छिक आहे, आणि ठरवलेली नसेल तर पुशमध्ये डीप लिंक नसते.
Apple (APNs)#
iOS पुश थेट APNs वर चालतात — Firebase ची गरज नाही. तुमच्या Apple Developer खात्यातून हे मिळवा:
- APNs Auth Key (
.p8टोकन की). - त्या कीचा Key ID.
- तुमचा Team ID.
- ॲपचा bundle id.
Google (FCM)#
Android पुश Firebase Cloud Messaging मधून जातात. तुमच्या Firebase प्रकल्पातून हे मिळवा:
- Cloud Messaging भूमिका असलेला service account JSON.
- Firebase प्रोजेक्ट ID (Firebase कन्सोल → Project settings) — डॅशबोर्डच्या पुश फॉर्ममध्ये service-account JSON शेजारी स्वतंत्र फील्ड म्हणून भरला जातो.
- Android ॲपचे package name, आणि ॲप त्याच Firebase प्रकल्पाशी जोडा (
google-services.json).
Respondo मध्ये कॉन्फिगरेशन#
डॅशबोर्डमध्ये तुमच्या विजेट चॅनेलला APNs की आणि प्रोजेक्ट ID सह FCM service account जोडा. दोन्ही प्लॅटफॉर्मवर पाठवण्यासाठी Respondo ला एवढेच लागते.
payload चे स्वरूप#
payload नेहमी रूटमधल्या respondo की खाली असते — ती असल्यामुळेच SDK स्वतःचे पुश इतरांपासून वेगळे ओळखते (iOS वर userInfo मध्ये, Android वर data["respondo"] मध्ये JSON स्ट्रिंग म्हणून).
{
"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"
}
}सर्व मूल्ये सपाट स्ट्रिंग असतात. नोटिफिकेशनचे शीर्षक आणि मजकूर प्लॅटफॉर्मच्या ट्रान्स्पोर्टमधून येतात — APNs वर aps.alert आणि FCM वर message.notification — respondo ऑब्जेक्टच्या आत नाही.
मोहिमेच्या पुशमध्ये delivery_id देखील असतो, जो उघडल्याची नोंद (open beacon) पाठवण्यासाठी वापरला जातो, आणि मोहिमेच्या पुश डेटामधल्या अतिरिक्त सपाट स्ट्रिंग की देखील असू शकतात.
टॅप आणि फोरग्राउंड हाताळणे#
नोटिफिकेशनवर टॅप झाल्यावर कच्चा payload SDK ला द्या. SDK तो payload वाचते आणि योग्य संभाषण उघडते; पुश Respondo चा नसेल, तर ते false परत करते (अशा वेळी तो तुम्ही स्वतः हाताळा).
Android: RespondoPushPayload.from(data)?.let { Respondo.handlePush(it) }
iOS: Respondo.handlePush(userInfo: userInfo)
Flutter: Respondo.handlePushData(message.data)डुप्लिकेट पुश message_id नुसार एकत्र केले जातात, आणि तेच संभाषण फोरग्राउंडमध्ये उघडे असताना सिस्टीम नोटिफिकेशन दाखवले जात नाही — या दोन्ही गोष्टी SDK आपोआप सांभाळते.
डिव्हाइस टोकन नोंदवणे#
तुमचे ॲप स्वतःच्या पुश सबसिस्टमकडून डिव्हाइस टोकन मिळवते आणि ते setPushToken ला देते. लॉगआउटच्या वेळी clearPushToken कॉल करा.
- Android —
FirebaseMessaging.getToken()कडून मिळणारा FCM रजिस्ट्रेशन टोकन. - iOS (नेटिव्ह) —
didRegisterForRemoteNotificationsWithDeviceTokenकडून मिळणारा APNs डिव्हाइस टोकन (hex). - Flutter मधून iOS (firebase_messaging) —
getAPNSToken()वापरा,getToken()नाही. iOS वर FCM टोकन दिल्यास तो APNs कडे जातो, जिथे तो वैध डिव्हाइस टोकन नसतो आणि पुश कधीच पोहोचत नाहीत.getAPNSToken()लाँचनंतरच्या पहिल्या काही क्षणांत null असू शकतो — तसे असल्यास थोड्या वेळाने पुन्हा प्रयत्न करा.
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 ला APNs टोकन लागतो; Android ला FCM टोकन लागतो.
final token = Platform.isIOS
? await FirebaseMessaging.instance.getAPNSToken()
: await FirebaseMessaging.instance.getToken();
if (token != null) Respondo.setPushToken(token);
// FCM आपला रजिस्ट्रेशन टोकन बदलत राहते; Android ला त्याच्याशी जुळवून ठेवा.
if (!Platform.isIOS) {
FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}