| प्लैटफ़ॉर्म चुनें: | iOS+ Android Web Flutter Unity C++ |
इस गाइड में, Firebase Cloud Messaging का इस्तेमाल शुरू करने का तरीका बताया गया है. इससे, Apple प्लैटफ़ॉर्म (जैसे, iOS) के क्लाइंट ऐप्लिकेशन में भरोसेमंद तरीके से मैसेज भेजे जा सकते हैं.
Apple के क्लाइंट ऐप्लिकेशन के लिए, Firebase Cloud Messaging APNs इंटरफ़ेस के ज़रिए, 4,096 बाइट तक के नोटिफ़िकेशन और डेटा पेलोड पाए जा सकते हैं.
हमारा सुझाव है कि Objective-C या Swift में अपना क्लाइंट कोड लिखने के लिए, FIRMessaging API का इस्तेमाल करें. क्विकस्टार्ट के उदाहरण में, दोनों भाषाओं के लिए सैंपल कोड दिया गया है.
शुरू करने से पहले, अपने Apple प्रोजेक्ट में Firebase जोड़ें.
Firebase Cloud Messaging में मेथड स्विज़लिंग
FCM SDK टूल, दो मुख्य मामलों में मेथड स्विज़लिंग करता है: आपके
APNs टोकन को FCM रजिस्ट्रेशन टोकन से मैप करना और
डाउनस्ट्रीम मैसेज के कॉलबैक
को हैंडल करने के दौरान, Analytics का डेटा कैप्चर करना. डेवलपर, स्विज़लिंग का इस्तेमाल न करने के लिए, इसे बंद कर सकते हैं. इसके लिए, उन्हें ऐप्लिकेशन की Info.plist फ़ाइल में FirebaseAppDelegateProxyEnabled फ़्लैग जोड़ना होगा और इसकी वैल्यू NO (बूलियन वैल्यू) सेट करनी होगी. गाइड के काम के सेक्शन में, कोड के उदाहरण दिए गए हैं. इनमें, मेथड स्विज़लिंग की सुविधा चालू और बंद, दोनों स्थितियों के उदाहरण शामिल हैं.
APNs की पुष्टि करने वाली कुंजी अपलोड करना
APNs की पुष्टि करने वाली कुंजी को Firebase पर अपलोड करें. अगर आपके पास पहले से APNs की पुष्टि करने वाली कुंजी नहीं है, तो Apple Developer Member Center में जाकर, एक कुंजी बनाएं.
-
Firebase console में,
सेटिंग > सामान्य पर जाएं. इसके बाद, Cloud Messaging टैब पर क्लिक करें. - iOS ऐप्लिकेशन कॉन्फ़िगरेशन में, APNs की पुष्टि करने वाली कुंजी में जाकर, अपलोड करें पर क्लिक करें. इससे, डेवलपमेंट के लिए पुष्टि करने वाली कुंजी, प्रोडक्शन के लिए पुष्टि करने वाली कुंजी या दोनों को अपलोड किया जा सकता है. इनमें से कम से कम एक कुंजी अपलोड करना ज़रूरी है.
- उस जगह पर जाएं जहां आपने कुंजी सेव की है. इसके बाद, कुंजी को चुनें और खोलें पर क्लिक करें. कुंजी के लिए कुंजी आईडी जोड़ें. यह आईडी, Apple Developer Member Center) में उपलब्ध होता है. इसके बाद, अपलोड करें पर क्लिक करें.
रिमोट नोटिफ़िकेशन के लिए रजिस्टर करना
ऐप्लिकेशन के शुरू होने पर या ऐप्लिकेशन के फ़्लो में किसी भी समय, अपने ऐप्लिकेशन को रिमोट नोटिफ़िकेशन के लिए रजिस्टर करें.registerForRemoteNotifications
Swift
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
Objective-C
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
रजिस्ट्रेशन टोकन ऐक्सेस करना
डिफ़ॉल्ट रूप से, FCM SDK टूल, ऐप्लिकेशन लॉन्च होने पर क्लाइंट ऐप्लिकेशन इंस्टेंस के लिए एक रजिस्ट्रेशन टोकन जनरेट करता है. APNs के डिवाइस टोकन की तरह, इस टोकन की मदद से, अपने ऐप्लिकेशन के किसी भी इंस्टेंस को टारगेट करके नोटिफ़िकेशन भेजे जा सकते हैं.
जिस तरह Apple के प्लैटफ़ॉर्म, ऐप्लिकेशन शुरू होने पर APNs का डिवाइस टोकन डिलीवर करते हैं उसी तरह FCM, FIRMessagingDelegate's messaging:didReceiveRegistrationToken: तरीके से एक रजिस्ट्रेशन टोकन उपलब्ध कराता है.
FCM SDK टूल, ऐप्लिकेशन के पहली बार लॉन्च होने पर और
टोकन के अपडेट या अमान्य होने पर, नया या मौजूदा टोकन वापस पाता है.
हर मामले में, FCM SDK टूल, मान्य टोकन के साथ messaging:didReceiveRegistrationToken:
को कॉल करता है.
रजिस्ट्रेशन टोकन इन स्थितियों में बदल सकता है:
- ऐप्लिकेशन को किसी नए डिवाइस पर रीस्टोर किया गया हो
- उपयोगकर्ता ने ऐप्लिकेशन को अनइंस्टॉल/फिर से इंस्टॉल किया हो
- उपयोगकर्ता ने ऐप्लिकेशन का डेटा मिटाया हो.
मैसेजिंग डेलिगेट सेट करना
रजिस्ट्रेशन टोकन पाने के लिए, मैसेजिंग डेलिगेट
प्रोटोकॉल लागू करें और FIRMessaging's delegate प्रॉपर्टी को [FIRApp configure] को कॉल करने के बाद सेट करें.
उदाहरण के लिए, अगर आपका ऐप्लिकेशन डेलिगेट, मैसेजिंग डेलिगेट
प्रोटोकॉल के मुताबिक है, तो application:didFinishLaunchingWithOptions:
पर डेलिगेट को खुद पर सेट किया जा सकता है.
Swift
Messaging.messaging().delegate = self
Objective-C
[FIRMessaging messaging].delegate = self;
मौजूदा रजिस्ट्रेशन टोकन फ़ेच करना
रजिस्ट्रेशन टोकन,
तरीके से डिलीवर किए जाते हैंmessaging:didReceiveRegistrationToken:. आम तौर पर, यह तरीका, रजिस्ट्रेशन टोकन के साथ ऐप्लिकेशन के हर
लॉन्च पर एक बार कॉल किया जाता है. इस तरीके को कॉल करने पर, ये काम किए जा सकते हैं:
- अगर रजिस्ट्रेशन टोकन नया है, तो इसे अपने ऐप्लिकेशन सर्वर पर भेजें.
- रजिस्ट्रेशन टोकन को विषयों की सदस्यता दिलाएं. यह सिर्फ़ नई सदस्यताओं या उन स्थितियों के लिए ज़रूरी है जहां उपयोगकर्ता ने ऐप्लिकेशन को फिर से इंस्टॉल किया है.
token(completion:) का इस्तेमाल करके, टोकन को सीधे वापस पाया जा सकता है. अगर किसी भी तरह से टोकन वापस पाने में समस्या आती है, तो null के अलावा कोई गड़बड़ी दिखती है.
Swift
Messaging.messaging().token { token, error in if let error = error { print("Error fetching remote FCM registration token: \(error)") } else if let token = token { print("Remote instance ID token: \(token)") } }
Objective-C
[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error fetching the remote FCM registration token: %@", error); } else { NSLog(@"Remote FCM registration token: %@", token); NSString* message = [NSString stringWithFormat:@"FCM registration token: %@", token]; // display message NSLog(@"%@", message); } }];
टोकन को सेव करने के बजाय, इसे ऐक्सेस करने के लिए इस तरीके का इस्तेमाल किसी भी समय किया जा सकता है.
टोकन रीफ़्रेश होने की निगरानी करना
टोकन के अपडेट होने पर सूचना पाने के लिए, मैसेजिंग डेलिगेट प्रोटोकॉल के मुताबिक डेलिगेट उपलब्ध कराएं. यहां दिए गए उदाहरण में, डेलिगेट रजिस्टर किया गया है और डेलिगेट का सही तरीका जोड़ा गया है:
Swift
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) { print("Firebase registration token: \(String(describing: fcmToken))") // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
Objective-C
- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken { NSLog(@"FCM registration token: %@", fcmToken); // Notify about received token. NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"]; [[NSNotificationCenter defaultCenter] postNotificationName: @"FCMToken" object:nil userInfo:dataDict]; // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
इसके अलावा, डेलिगेट का तरीका उपलब्ध कराने के बजाय, NSNotification नाम के
kFIRMessagingRegistrationTokenRefreshNotification
को सुना जा सकता है. टोकन प्रॉपर्टी में हमेशा टोकन की मौजूदा वैल्यू होती है.
स्विज़लिंग की सुविधा बंद होने पर: अपने APNs टोकन और रजिस्ट्रेशन टोकन को मैप करना
अगर आपने मेथड स्विज़लिंग की सुविधा बंद कर दी है या SwiftUI ऐप्लिकेशन बनाया जा रहा है, तो आपको अपने APNs टोकन को
साफ़ तौर पर FCMरजिस्ट्रेशन टोकन से मैप करना होगा. APNs टोकन वापस पाने के लिए,
application(_:didRegisterForRemoteNotificationsWithDeviceToken:) तरीका लागू करें. इसके बाद, Messaging's
apnsToken
प्रॉपर्टी सेट करें:
Swift
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Messaging.messaging().apnsToken = deviceToken }
Objective-C
// With "FirebaseAppDelegateProxyEnabled": NO - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [FIRMessaging messaging].APNSToken = deviceToken; }
FCM रजिस्ट्रेशन टोकन जनरेट होने के बाद, इसे ऐक्सेस किया जा सकता है और रीफ़्रेश होने वाले इवेंट सुने जा सकते हैं. इसके लिए, स्विज़लिंग की सुविधा चालू होने पर इस्तेमाल किए जाने वाले तरीकों का ही इस्तेमाल किया जा सकता है.
अपने-आप शुरू होने की सुविधा रोकना
जब एक FCM रजिस्ट्रेशन टोकन जनरेट होता है, तो लाइब्रेरी,
आइडेंटिफ़ायर और कॉन्फ़िगरेशन डेटा को Firebase पर अपलोड करती है. अगर आपको पहले उपयोगकर्ताओं से साफ़ तौर पर ऑप्ट-इन लेना है, तो FCM को बंद करके, कॉन्फ़िगरेशन के दौरान टोकन जनरेट होने से रोका जा सकता है. इसके लिए, अपने Info.plist में मेटाडेटा वैल्यू जोड़ें. यह वैल्यू,
GoogleService-Info.plist में नहीं जोड़ी जानी चाहिए:
FirebaseMessagingAutoInitEnabled = NO
FCM को फिर से चालू करने के लिए, रनटाइम कॉल किया जा सकता है:
Swift
Messaging.messaging().autoInitEnabled = true
Objective-C
[FIRMessaging messaging].autoInitEnabled = YES;
एक बार सेट करने के बाद, यह वैल्यू ऐप्लिकेशन के रीस्टार्ट होने पर भी बनी रहती है.
नोटिफ़िकेशन सेवा एक्सटेंशन सेट अप करना
Apple के डिवाइसों पर, इमेज वाले नोटिफ़िकेशन भेजने के लिए, आपको नोटिफ़िकेशन सेवा एक्सटेंशन जोड़ना होगा. इस एक्सटेंशन की मदद से, डिवाइसों पर नोटिफ़िकेशन पेलोड में डिलीवर की गई इमेज दिखाई जा सकती हैं. अगर आपको नोटिफ़िकेशन में इमेज नहीं भेजनी हैं, तो इस चरण को छोड़ा जा सकता है.
सेवा एक्सटेंशन जोड़ने के लिए, APNs में नोटिफ़िकेशन में बदलाव करने और उन्हें दिखाने के लिए, ज़रूरी सेटअप टास्क पूरे करें. इसके बाद, NotificationService.m में FCM एक्सटेंशन हेल्पर एपीआई जोड़ें.
खास तौर पर, कॉलबैक को self.contentHandler(self.bestAttemptContent); के साथ पूरा करने के बजाय, इसे FIRMessaging extensionHelper के साथ पूरा करें. उदाहरण के लिए:
@interface NotificationService () <NSURLSessionDelegate>
@property(nonatomic) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property(nonatomic) UNMutableNotificationContent *bestAttemptContent;
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
// Modify the notification content here as you want
self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]",
self.bestAttemptContent.title];
// Call FIRMessaging extension helper API.
[[FIRMessaging extensionHelper] populateNotificationContent:self.bestAttemptContent
withContentHandler:contentHandler];
}
...
नोटिफ़िकेशन मैसेज भेजना
टारगेट डिवाइस पर ऐप्लिकेशन इंस्टॉल करें और उसे चलाएं. Apple के डिवाइसों पर, रिमोट नोटिफ़िकेशन पाने की अनुमति के लिए अनुरोध स्वीकार करें.
देखें कि डिवाइस पर ऐप्लिकेशन बैकग्राउंड में चल रहा हो.
Firebase console में, DevOps और उपयोगकर्ता जुड़ाव > मैसेजिंग पर जाएं.
कोई कैंपेन बनाएं.
अगर यह आपका पहला मैसेज है, तो:
अपना पहला कैंपेन बनाएं को चुनें.
Firebase के नोटिफ़िकेशन मैसेज को चुनें. इसके बाद, बनाएं को चुनें.
अगर आपने पहले कैंपेन बनाए हैं, तो:
कैंपेन टैब पर, नया कैंपेन को चुनें.
नोटिफ़िकेशन पर क्लिक करें.
मैसेज का टेक्स्ट डालें.
दाएं पैनल से, टेस्ट मैसेज भेजें को चुनें.
रजिस्ट्रेशन टोकन जोड़ें लेबल वाले फ़ील्ड में, अपना रजिस्ट्रेशन टोकन डालें.FCM
टेस्ट को चुनें.
टेस्ट को चुनने के बाद, टारगेट किए गए क्लाइंट डिवाइस को नोटिफ़िकेशन मिलना चाहिए. इस दौरान, ऐप्लिकेशन बैकग्राउंड में चल रहा होना चाहिए.
अपने ऐप्लिकेशन पर मैसेज डिलीवर होने की जानकारी पाने के लिए, DevOps और उपयोगकर्ता जुड़ाव > मैसेजिंग > रिपोर्ट डैशबोर्ड में Firebase console पर जाएं. इस डैशबोर्ड में, Apple और Android डिवाइसों पर भेजे गए और खोले गए मैसेज की संख्या रिकॉर्ड की जाती है. साथ ही, Android ऐप्लिकेशन के लिए "इंप्रेशन" (उपयोगकर्ताओं को दिखने वाले नोटिफ़िकेशन) का डेटा भी रिकॉर्ड किया जाता है.
अगले चरण
सेटअप के चरण पूरे करने के बाद, Apple के प्लैटफ़ॉर्म के लिए FCM का इस्तेमाल जारी रखने के कुछ विकल्प यहां दिए गए हैं: