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

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

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

Firebase क्लाउड से मैसेज में डेटा ट्रांसफ़र करने का तरीका

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

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

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

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

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

जिस तरह 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: तरीके से डिलीवर किए जाते हैं. इस तरीके को आम तौर पर, हर ऐप्लिकेशन के लिए रजिस्ट्रेशन टोकन से शुरू किया जाता है. जब इस तरीके को कहा जाता है, तो यह करने का सबसे सही समय है:

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

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