ஆவணங்கள்

புஷ் அறிவிப்புகள்

செயலி மூடியிருக்கும்போதும் அலுவலர் பதில்களையும் பிரச்சாரங்களையும், சரியான உரையாடலுக்கு நேரடியாக அழைத்துச் செல்லும் deep link-உடன் வழங்குங்கள். புஷ் அமைப்பு உங்கள் செயலிக்கே சொந்தம்; SDK டோக்கன்களைப் பதிவு செய்து உரையாடல்களைத் திறக்கிறது.

Respondo என்ன அனுப்புகிறது#

  • செய்திப் புஷ்கள் — பார்வையாளர் பங்கேற்கும் ஒரு உரையாடலில் அலுவலர் அல்லது AI அளிக்கும் பதில்.
  • பிரச்சாரப் புஷ்கள் — வெளிச்செல்லும் புஷ் பிரச்சாரங்கள்; இவை திறப்பு சமிக்ஞையையும் (open beacon) தெரிவிக்கின்றன.

செய்திப் புஷ்கள் எப்போதும் respondo://conversation/<id> வடிவிலான deep link ஒன்றைச் சுமந்து வருகின்றன. பிரச்சாரப் புஷ்கள் பிரச்சாரத்தில் உள்ளமைத்த deep link-ஐச் சுமந்து வருகின்றன — அது விருப்பத்தேர்வு; அமைக்கப்படாதபோது புஷ்ஷில் deep link எதுவும் இருக்காது.

Apple (APNs)#

iOS புஷ் நேரடியாக APNs வழியாகவே இயங்குகிறது — Firebase சார்பு எதுவும் இல்லை. உங்கள் Apple Developer கணக்கிலிருந்து இவற்றைப் பெறுங்கள்:

  • ஒரு APNs Auth Key (.p8 token key).
  • அந்தச் சாவியின் 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 சாவியையும், project ID-உடன் FCM service account-ஐயும் சேருங்கள். இரண்டு தளங்களுக்கும் அனுப்ப Respondo-வுக்குத் தேவை இவ்வளவே.

API வழியாக அந்த அனுமதிச் சான்றுகளை அமைப்பதும், புலங்களின் முழுப் பட்டியலும், உங்கள் SDK அணுகலுடன் வழங்கப்படும் புஷ் அமைப்பு வழிகாட்டியில் விளக்கப்பட்டுள்ளன.

Payload வடிவம்#

Payload எப்போதும் ஒரு வேர் respondo சாவிக்குக் கீழேயே இருக்கும் — அது இருப்பதைக் கொண்டுதான் SDK தன் புஷ்ஷை மற்றவற்றிலிருந்து பிரித்து அறிகிறது (iOS-இல் userInfo-இல், Android-இல் data["respondo"] இல் JSON சரமாக).

respondo payloadjson
{
  "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 string-கள். அறிவிப்பின் title-உம் body-உம் தளத்தின் transport வழியாக வழங்கப்படுகின்றன — APNs-இல் aps.alert, FCM-இல் message.notification — respondo object-க்குள் அல்ல.

பிரச்சாரப் புஷ்கள் திறப்பு சமிக்ஞையைத் தெரிவிக்கப் பயன்படும் delivery_id-ஐயும் உள்ளடக்குகின்றன; பிரச்சாரத்தின் push data-விலிருந்து கூடுதல் flat string சாவிகளையும் சுமந்து வரலாம்.

தட்டல்களையும் முன்னணி நிலையையும் கையாளுதல்#

அறிவிப்பைத் தட்டியதும், மூல payload-ஐ SDK-க்கு அனுப்புங்கள். அது payload-ஐப் பிரித்துப் படித்து சரியான உரையாடலைத் திறக்கிறது; அந்தப் புஷ் Respondo-வுடையது இல்லையென்றால் false என்று திருப்பும் (அந்த நிலையில் அதை நீங்களே கையாளுங்கள்).

தட்டலைக் கையாளுதல் (தளம் வாரியாக)text
Android:  RespondoPushPayload.from(data)?.let { Respondo.handlePush(it) }
iOS:      Respondo.handlePush(userInfo: userInfo)
Flutter:  Respondo.handlePushData(message.data)

நகல்கள் message_id அடிப்படையில் ஒன்றாக இணைக்கப்படுகின்றன; அதே உரையாடல் முன்னணியில் திறந்திருக்கும் வரை கணினி அறிவிப்பு அடக்கப்படுகிறது — இரண்டையும் SDK தானாகவே செய்கிறது.

சாதன டோக்கன்களைப் பதிவு செய்தல்#

உங்கள் செயலி தன் புஷ் அமைப்பிலிருந்து சாதன டோக்கனைப் பெற்று, setPushToken-க்கு அனுப்புகிறது. வெளியேறும்போது clearPushToken-ஐ அழையுங்கள்.

எந்த டோக்கனை அனுப்ப வேண்டும். backend ஒவ்வொரு வழங்கலையும் தளத்தின்படி வழிநடத்துகிறது — iOS நேராக APNs-க்கும், Android FCM-க்கும் செல்கிறது — எனவே உங்கள் புஷ் நூலகம் எதைத் திருப்பித் தந்தாலும், அந்தத் தளத்தின் நேட்டிவ் கடத்தலின் டோக்கனையே பதிவு செய்ய வேண்டும்:
  • Android — FirebaseMessaging.getToken() தரும் FCM பதிவு டோக்கன்.
  • iOS (நேட்டிவ்) — didRegisterForRemoteNotificationsWithDeviceToken தரும் APNs சாதன டோக்கன் (hex).
  • Flutter வழியாக iOS (firebase_messaging) — getToken() அல்ல, getAPNSToken()-ஐப் பயன்படுத்துங்கள். iOS-இல் FCM டோக்கனை அனுப்பினால் அது APNs-க்குச் செல்லும்; அங்கே அது செல்லுபடியான சாதன டோக்கன் அல்ல, புஷ்கள் ஒருபோதும் வந்து சேராது. getAPNSToken() செயலி தொடங்கிய முதல் சில கணங்களில் null ஆக இருக்கலாம் — அப்படியானால் சிறிது நேரம் கழித்து மீண்டும் முயலுங்கள்.
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
// 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);
}