获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

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

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

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

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

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

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

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

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

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

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

  2. आईओएस ऐप कॉन्फ़िगरेशन के तहत एपीएन प्रमाणीकरण कुंजी में, अपलोड बटन पर क्लिक करें।

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

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

या तो स्टार्टअप पर, या अपने एप्लिकेशन प्रवाह में वांछित बिंदु पर, अपने ऐप को दूरस्थ सूचनाओं के लिए पंजीकृत करें। कॉल 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];

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

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

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

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

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

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

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

तीव्र

Messaging.messaging().delegate = self

उद्देश्य सी

[FIRMessaging messaging].delegate = self;

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

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

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

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

तीव्र

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

वैकल्पिक रूप से, आप प्रतिनिधि विधि प्रदान करने के बजाय NSNotification नामक kFIRMessagingRegistrationTokenRefreshNotification के लिए सुन सकते हैं। टोकन संपत्ति में हमेशा वर्तमान टोकन मान होता है।

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

यदि आपके पास अक्षम विधि स्विजलिंग है, या आप एक SwiftUI ऐप बना रहे हैं, तो आपको अपने APNs टोकन को FCM पंजीकरण टोकन में स्पष्ट रूप से मैप करना होगा। एपीएन टोकन को पुनः प्राप्त करने के लिए 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;
}

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

ऑटो आरंभीकरण रोकें

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

FirebaseMessagingAutoInitEnabled = NO

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

तीव्र

Messaging.messaging().autoInitEnabled = true

उद्देश्य सी

[FIRMessaging messaging].autoInitEnabled = YES;

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

अगले कदम

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