ਪੁਸ਼ ਸੂਚਨਾਵਾਂ
ਐਪ ਬੰਦ ਹੋਣ ਦੇ ਬਾਵਜੂਦ ਸਹਾਇਤਾ ਕਰਮੀਆਂ ਦੇ ਜਵਾਬ ਅਤੇ ਮੁਹਿੰਮਾਂ ਪਹੁੰਚਾਓ — deep link ਸਿੱਧਾ ਸਹੀ ਗੱਲਬਾਤ ਵਿੱਚ ਲੈ ਜਾਂਦਾ ਹੈ। ਪੁਸ਼ ਦਾ ਸਬ-ਸਿਸਟਮ ਤੁਹਾਡੀ ਐਪ ਦਾ ਹੁੰਦਾ ਹੈ; SDK ਟੋਕਨ ਦਰਜ ਕਰਦਾ ਹੈ ਅਤੇ ਗੱਲਬਾਤਾਂ ਖੋਲ੍ਹਦਾ ਹੈ।
Respondo ਕੀ ਭੇਜਦਾ ਹੈ#
- ਸੁਨੇਹਾ ਪੁਸ਼ — ਉਸ ਗੱਲਬਾਤ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਮੀ ਜਾਂ AI ਦਾ ਜਵਾਬ, ਜਿਸ ਵਿੱਚ ਵਿਜ਼ਿਟਰ ਸ਼ਾਮਲ ਹੈ।
- ਮੁਹਿੰਮ ਪੁਸ਼ — ਬਾਹਰ ਭੇਜੀਆਂ ਪੁਸ਼ ਮੁਹਿੰਮਾਂ, ਜੋ ਖੁੱਲ੍ਹਣ ਦਾ ਬੀਕਨ ਵੀ ਭੇਜਦੀਆਂ ਹਨ।
ਸੁਨੇਹਾ ਪੁਸ਼ਾਂ ਵਿੱਚ ਹਮੇਸ਼ਾ ਇਸ ਰੂਪ ਦਾ deep link ਹੁੰਦਾ ਹੈ: respondo://conversation/<id>। ਮੁਹਿੰਮ ਪੁਸ਼ਾਂ ਵਿੱਚ ਉਹ deep link ਹੁੰਦਾ ਹੈ ਜੋ ਮੁਹਿੰਮ ਉੱਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੋਵੇ — ਇਹ ਚੋਣਵਾਂ ਹੈ, ਅਤੇ ਸੈੱਟ ਨਾ ਹੋਣ ਉੱਤੇ ਪੁਸ਼ ਵਿੱਚ ਕੋਈ deep link ਨਹੀਂ ਹੁੰਦਾ।
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 project ID (Firebase console → Project settings) — ਡੈਸ਼ਬੋਰਡ ਦੇ ਪੁਸ਼ ਫਾਰਮ ਵਿੱਚ service-account JSON ਦੇ ਨਾਲ ਆਪਣੇ ਵੱਖਰੇ ਖ਼ਾਨੇ ਵਿੱਚ ਭਰਿਆ ਜਾਂਦਾ ਹੈ।
- Android ਐਪ ਦਾ package name, ਅਤੇ ਐਪ ਨੂੰ ਉਸੇ Firebase ਪ੍ਰੋਜੈਕਟ ਨਾਲ ਜੋੜੋ (
google-services.json)।
Respondo ਵਿੱਚ ਸੈਟਿੰਗ#
ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ ਆਪਣੇ ਵਿਜੇਟ ਚੈਨਲ ਨਾਲ APNs ਕੁੰਜੀ ਅਤੇ FCM service account ਉਸ ਦੇ project ID ਸਮੇਤ ਜੋੜੋ। ਦੋਹਾਂ ਪਲੇਟਫ਼ਾਰਮਾਂ ਉੱਤੇ ਭੇਜਣ ਲਈ 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"
}
}ਸਾਰੇ ਮੁੱਲ ਸਿੱਧੀਆਂ (flat) ਸਤਰਾਂ ਹਨ। ਸੂਚਨਾ ਦਾ ਸਿਰਲੇਖ ਅਤੇ ਮਜ਼ਮੂਨ ਪਲੇਟਫਾਰਮ ਦੀ ਢੋਆ-ਢੁਆਈ ਰਾਹੀਂ ਪਹੁੰਚਦੇ ਹਨ — APNs ਉੱਤੇ aps.alert ਅਤੇ FCM ਉੱਤੇ message.notification — ਨਾ ਕਿ respondo ਆਬਜੈਕਟ ਦੇ ਅੰਦਰ।
ਮੁਹਿੰਮ ਵਾਲੇ ਪੁਸ਼ ਵਿੱਚ delivery_id ਵੀ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਖੁੱਲ੍ਹਣ ਦਾ ਬੀਕਨ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ; ਨਾਲ ਹੀ ਉਨ੍ਹਾਂ ਵਿੱਚ ਮੁਹਿੰਮ ਦੇ push data ਵਿੱਚੋਂ ਵਾਧੂ ਸਿੱਧੀਆਂ ਸਤਰ-ਕੁੰਜੀਆਂ ਵੀ ਹੋ ਸਕਦੀਆਂ ਹਨ।
ਟੈਪ ਤੇ ਫ਼ੋਰਗਰਾਊਂਡ ਸੰਭਾਲਣਾ#
ਸੂਚਨਾ ਉੱਤੇ ਟੈਪ ਹੋਣ ਵੇਲੇ ਕੱਚਾ payload 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 registration token। - 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 ਆਪਣਾ registration token ਬਦਲਦਾ ਰਹਿੰਦਾ ਹੈ; Android ਨੂੰ ਸਿੰਕ ਵਿੱਚ ਰੱਖੋ।
if (!Platform.isIOS) {
FirebaseMessaging.instance.onTokenRefresh.listen(Respondo.setPushToken);
}