Apple प्लैटफ़ॉर्म पर Firebase क्लाउड से मैसेज वाला क्लाइंट ऐप्लिकेशन सेट अप करना

Apple क्लाइंट ऐप्लिकेशन के लिए, आपको Firebase Cloud Messaging APNs इंटरफ़ेस पर 4,096 बाइट तक की सूचनाएं और डेटा पेलोड मिल सकते हैं.

हमारा सुझाव है कि Objective-C या Swift में अपना क्लाइंट कोड लिखने के लिए, आप FIRMessaging API का इस्तेमाल करें. क्विकस्टार्ट के उदाहरण में दोनों भाषाओं के लिए सैंपल कोड दिया गया है.

Firebase Cloud Messaging में मेथड स्विज़लिंग

FCM SDK टूल, दो मुख्य क्षेत्रों में तरीका स्विज़ल करता है: FCM रजिस्ट्रेशन टोकन पर आपके APNs टोकन को मैप करना और डाउनस्ट्रीम मैसेज कॉलबैक मैनेज करने के दौरान आंकड़ों का डेटा कैप्चर करना. जो डेवलपर स्विज़लिंग का इस्तेमाल नहीं करना चाहते वे ऐप्लिकेशन की Info.plist फ़ाइल में FirebaseAppDelegateProxyEnabled फ़्लैग जोड़कर और इसे 'नहीं' (बूलियन वैल्यू) पर सेट करके इसे बंद कर सकते हैं. गाइड के काम के हिस्सों में, कोड के उदाहरण दिए गए हैं. ये उदाहरण, मेथड स्विज़ल की सुविधा चालू होने और न होने, दोनों स्थितियों के लिए दिए गए हैं.

अपने Apple प्रोजेक्ट में Firebase जोड़ना

अगर आपने पहले से ऐसा नहीं किया है, तो अपने Apple प्रोजेक्ट में Firebase जोड़ें.

APNs की पुष्टि करने वाली कुंजी अपलोड करना

अपनी एपीएन की पुष्टि करने वाली कुंजी को Firebase पर अपलोड करें. अगर आपके पास पहले से एपीएन की पुष्टि करने वाली कुंजी नहीं है, तो Apple Developer Member Center में जाकर एक कुंजी बनाएं.

  1. Firebase कंसोल में अपने प्रोजेक्ट में, गियर आइकॉन चुनें. इसके बाद, प्रोजेक्ट सेटिंग चुनें और फिर क्लाउड मैसेजिंग टैब चुनें.

  2. iOS ऐप्लिकेशन कॉन्फ़िगरेशन में जाकर, APNs की पुष्टि करने वाली कुंजी में, अपलोड करें बटन पर क्लिक करें.

  3. उस जगह ब्राउज़ करें जहां आपने अपनी कुंजी सेव की है. इसके बाद, उसे चुनें और खोलें पर क्लिक करें. पासकोड के लिए पासकोड आईडी जोड़ें. यह आईडी, 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 के messaging:didReceiveRegistrationToken: तरीके से रजिस्टरेशन टोकन उपलब्ध कराता है. FCM SDK टूल, ऐप्लिकेशन के लॉन्च होने के दौरान नया या मौजूदा टोकन हासिल करता है. साथ ही, टोकन अपडेट होने या अमान्य होने पर भी ऐसा करता है. सभी मामलों में, FCM SDK टूल, मान्य टोकन के साथ messaging:didReceiveRegistrationToken: को कॉल करता है.

रजिस्ट्रेशन टोकन तब बदल सकता है, जब:

  • ऐप्लिकेशन को नए डिवाइस पर वापस लाया गया
  • उपयोगकर्ता ऐप्लिकेशन को अनइंस्टॉल करता है/फिर से इंस्टॉल करता है
  • उपयोगकर्ता, ऐप्लिकेशन का डेटा मिटाता है.

मैसेजिंग ऐक्सेस देने के लिए किसी व्यक्ति को चुनना

रजिस्ट्रेशन टोकन पाने के लिए, मैसेजिंग डेलिगेट प्रोटोकॉल लागू करें और [FIRApp configure] को कॉल करने के बाद, FIRMessaging की delegate प्रॉपर्टी सेट करें. उदाहरण के लिए, अगर आपका ऐप्लिकेशन डेलिगेट, मैसेजिंग डेलिगेट प्रोटोकॉल के मुताबिक है, तो डेलिगेट को application:didFinishLaunchingWithOptions: पर सेट किया जा सकता है.

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

मौजूदा रजिस्ट्रेशन टोकन फ़ेच किया जा रहा है

रजिस्ट्रेशन टोकन, messaging:didReceiveRegistrationToken: तरीके से डिलीवर किए जाते हैं. आम तौर पर, इस तरीके को हर बार ऐप्लिकेशन के शुरू होने पर, एक बार कॉल किया जाता है. इस मेथड को कॉल करने का सही समय यह है:

  • अगर रजिस्ट्रेशन टोकन नया है, तो उसे अपने ऐप्लिकेशन सर्वर पर भेजें.
  • रजिस्ट्रेशन टोकन को विषयों की सदस्यता दें. यह सिर्फ़ नई सदस्यताओं के लिए ज़रूरी है या उन स्थितियों में ज़रूरी है जहां उपयोगकर्ता ने ऐप्लिकेशन को फिर से इंस्टॉल किया है.

token(completion:) का इस्तेमाल करके, सीधे टोकन को वापस पाया जा सकता है. अगर टोकन किसी भी तरह से वापस नहीं मिल पाता है, तो एक गड़बड़ी वाला मैसेज दिखाया जाता है.

Swift

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

Objective-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];

टोकन को सेव करने के बजाय, किसी भी समय इस तरीके का इस्तेमाल करके उसे ऐक्सेस किया जा सकता है.

टोकन रीफ़्रेश होने पर नज़र रखें

टोकन के अपडेट होने पर सूचना पाने के लिए, मैसेजिंग डेलिगेट प्रोटोकॉल के मुताबिक कोई डेलिगेट दें. यहां दिए गए उदाहरण में, प्रतिनिधि को रजिस्टर किया गया है और सही प्रतिनिधि का तरीका जोड़ा गया है:

Swift

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
  print("Firebase registration token: \(String(describing: fcmToken))")

  let dataDict: [String: String] = ["token": fcmToken ?? ""]
  NotificationCenter.default.post(
    name: Notification.Name("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.
}

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 ऐप्लिकेशन बनाया जा रहा है, तो आपको अपने एपीएन टोकन को साफ़ तौर पर FCM रजिस्ट्रेशन टोकन से मैप करना होगा. APNs टोकन पाने के लिए, application(_:didRegisterForRemoteNotificationsWithDeviceToken:) तरीका लागू करें. इसके बाद, Messaging की 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 क्लाइंट सेट अप करने के बाद, अब आप अपने ऐप्लिकेशन में मैसेज हैंडलिंग और अन्य बेहतर तरीके को जोड़ सकते हैं. ज़्यादा जानकारी के लिए, ये गाइड देखें: