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

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

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

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

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

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

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

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

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

  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: को कॉल करता है वह भी मान्य टोकन के साथ.

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

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

मैसेज का ऐक्सेस सेट करना

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

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

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

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

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

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

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 हमारा सुझाव है कि आप उन्हें ज़्यादा जानकारी दें. टोकन प्रॉपर्टी में हमेशा यह होता है मौजूदा टोकन की वैल्यू.

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

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