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

Apple क्लाइंट ऐप्लिकेशन के लिए, आपको Firebase क्लाउड से मैसेज करने वाले एपीएन इंटरफ़ेस पर 4096 बाइट तक की सूचना और डेटा पेलोड मिल सकते हैं.

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

'Firebase क्लाउड से मैसेज' में बार-बार इस्तेमाल किए जाने वाले तरीके

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

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

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

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

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

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

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

  3. उस जगह ब्राउज़ करें जहां आपने अपनी कुंजी सेव की है. इसके बाद, उसे चुनें और खोलें पर क्लिक करें. कुंजी के लिए कुंजी आईडी जोड़ें ( Apple Developer के सदस्य केंद्र में उपलब्ध) और अपलोड करें पर क्लिक करें.

रिमोट नोटिफ़िकेशन के लिए रजिस्टर करें

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

Apple प्लैटफ़ॉर्म जिस तरह आम तौर पर ऐप्लिकेशन शुरू होने पर एपीएन डिवाइस टोकन डिलीवर करते हैं उसी तरह 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(complete:) का इस्तेमाल करके, सीधे तौर पर टोकन वापस पाया जा सकता है. अगर टोकन किसी भी तरह से वापस नहीं मिल पाता है, तो एक गड़बड़ी वाला मैसेज दिखाया जाता है.

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.
}

इसके अलावा, आपके पास कोई दूसरा तरीका देने के बजाय, kFIRMessagingRegistrationTokenRefreshNotification नाम का NSNotification सुनने का विकल्प है. टोकन प्रॉपर्टी में हमेशा मौजूदा टोकन की वैल्यू होती है.

स्विज़लिंग बंद है: अपने एपीएन टोकन और रजिस्ट्रेशन टोकन को मैप करना

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