Apple प्लेटफ़ॉर्म पर फ़ायरबेस क्लाउड मैसेजिंग क्लाइंट ऐप सेट करें

ऐप्पल क्लाइंट ऐप्स के लिए, आप फायरबेस क्लाउड मैसेजिंग एपीएन इंटरफ़ेस पर 4000 बाइट्स तक अधिसूचना और डेटा पेलोड प्राप्त कर सकते हैं।

ऑब्जेक्टिव-सी या स्विफ्ट में अपना क्लाइंट कोड लिखने के लिए, हम अनुशंसा करते हैं कि आप FIRMessating API का उपयोग करें। क्विकस्टार्ट उदाहरण दोनों भाषाओं के लिए नमूना कोड प्रदान करता है।

फायरबेस क्लाउड मैसेजिंग में मेथड स्विज़लिंग

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

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

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

अपनी एपीएन प्रमाणीकरण कुंजी अपलोड करें

अपनी APNs प्रमाणीकरण कुंजी को Firebase पर अपलोड करें। यदि आपके पास पहले से APNs प्रमाणीकरण कुंजी नहीं है, तो Apple डेवलपर सदस्य केंद्र में एक बनाना सुनिश्चित करें।

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

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

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

दूरस्थ सूचनाओं के लिए पंजीकरण करें

या तो स्टार्टअप पर, या अपने एप्लिकेशन प्रवाह में वांछित बिंदु पर, दूरस्थ सूचनाओं के लिए अपने ऐप को पंजीकृत करें। दिखाए गए अनुसार registerForRemoteNotifications पर कॉल करें:

तीव्र


UNUserNotificationCenter.current().delegate = self

let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
  options: authOptions,
  completionHandler: { _, _ in }
)

application.registerForRemoteNotifications()

उद्देश्य सी


[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
    UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
    requestAuthorizationWithOptions:authOptions
    completionHandler:^(BOOL granted, NSError * _Nullable error) {
      // ...
    }];

[application registerForRemoteNotifications];

पंजीकरण टोकन तक पहुंचें

डिफ़ॉल्ट रूप से, एफसीएम एसडीके ऐप लॉन्च पर क्लाइंट ऐप इंस्टेंस के लिए एक पंजीकरण टोकन उत्पन्न करता है। एपीएन डिवाइस टोकन के समान, यह टोकन आपको अपने ऐप के किसी विशेष उदाहरण पर लक्षित सूचनाएं भेजने की अनुमति देता है।

जिस तरह से ऐप्पल प्लेटफ़ॉर्म आम तौर पर ऐप स्टार्ट पर एपीएन डिवाइस टोकन प्रदान करता है, उसी तरह एफसीएम FIRMessagingDelegate के messaging:didReceiveRegistrationToken: विधि के माध्यम से एक पंजीकरण टोकन प्रदान करता है। एफसीएम एसडीके प्रारंभिक ऐप लॉन्च के दौरान और जब भी टोकन अपडेट या अमान्य हो जाता है, तो एक नया या मौजूदा टोकन पुनर्प्राप्त करता है। सभी मामलों में, FCM SDK एक वैध टोकन के साथ messaging:didReceiveRegistrationToken: कॉल करता है।

पंजीकरण टोकन तब बदल सकता है जब:

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

मैसेजिंग प्रतिनिधि सेट करें

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

तीव्र

Messaging.messaging().delegate = self

उद्देश्य सी

[FIRMessaging messaging].delegate = self;

वर्तमान पंजीकरण टोकन प्राप्त किया जा रहा है

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

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

आप टोकन(पूर्णता:) का उपयोग करके सीधे टोकन पुनः प्राप्त कर सकते हैं। यदि टोकन पुनर्प्राप्ति किसी भी तरह विफल हो जाती है तो एक गैर शून्य त्रुटि प्रदान की जाती है।

तीव्र

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)"
  }
}

उद्देश्य सी

[[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;
  }
}];

आप टोकन को संग्रहीत करने के बजाय उस तक पहुंचने के लिए किसी भी समय इस पद्धति का उपयोग कर सकते हैं।

मॉनिटर टोकन ताज़ा करें

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

तीव्र

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

उद्देश्य सी

- (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 को सुन सकते हैं। टोकन संपत्ति में हमेशा वर्तमान टोकन मूल्य होता है।

स्विज़लिंग अक्षम: आपके एपीएन टोकन और पंजीकरण टोकन को मैप करना

यदि आपने मेथड स्विज़लिंग को अक्षम कर दिया है, या आप एक स्विफ्टयूआई ऐप बना रहे हैं, तो आपको अपने एपीएन टोकन को एफसीएम पंजीकरण टोकन पर स्पष्ट रूप से मैप करना होगा। एपीएन टोकन पुनर्प्राप्त करने के लिए application(_:didRegisterForRemoteNotificationsWithDeviceToken:) विधि को कार्यान्वित करें, और फिर Messaging की apnsToken प्रॉपर्टी सेट करें:

तीव्र

func application(application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  Messaging.messaging().apnsToken = deviceToken
}

उद्देश्य सी

// With "FirebaseAppDelegateProxyEnabled": NO
- (void)application:(UIApplication *)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [FIRMessaging messaging].APNSToken = deviceToken;
}

एफसीएम पंजीकरण टोकन उत्पन्न होने के बाद, आप इसे एक्सेस कर सकते हैं और स्विज़लिंग सक्षम के समान तरीकों का उपयोग करके ताज़ा घटनाओं को सुन सकते हैं।

स्वतः आरंभीकरण रोकें

जब एफसीएम पंजीकरण टोकन उत्पन्न होता है, तो लाइब्रेरी पहचानकर्ता और कॉन्फ़िगरेशन डेटा को फायरबेस पर अपलोड करती है। यदि आप पहले उपयोगकर्ताओं से स्पष्ट ऑप्ट-इन प्राप्त करना चाहते हैं, तो आप एफसीएम को अक्षम करके कॉन्फ़िगर समय पर टोकन पीढ़ी को रोक सकते हैं। ऐसा करने के लिए, अपनी Info.plist में एक मेटाडेटा मान जोड़ें (अपनी GoogleService-Info.plist नहीं):

FirebaseMessagingAutoInitEnabled = NO

एफसीएम को पुनः सक्षम करने के लिए, आप रनटाइम कॉल कर सकते हैं:

तीव्र

Messaging.messaging().autoInitEnabled = true

उद्देश्य सी

[FIRMessaging messaging].autoInitEnabled = YES;

एक बार सेट होने पर यह मान ऐप पुनरारंभ होने पर बना रहता है।

अगले कदम

अपना Apple क्लाइंट सेट करने के बाद, आप अपने ऐप में संदेश प्रबंधन और अन्य, अधिक उन्नत व्यवहार जोड़ने के लिए तैयार हैं। अधिक जानकारी के लिए ये मार्गदर्शिकाएँ देखें: