欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

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

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

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

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

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

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

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

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

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

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

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

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

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

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

तीव्र

if #available(iOS 10.0, *) {
  // For iOS 10 display notification (sent via APNS)
  UNUserNotificationCenter.current().delegate = self

  let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
  UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: { _, _ in }
  )
} else {
  let settings: UIUserNotificationSettings =
    UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

उद्देश्य सी

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[application registerForRemoteNotifications];

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

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

जिस तरह ऐप्पल प्लेटफॉर्म आम तौर पर ऐप स्टार्ट पर एपीएन डिवाइस टोकन प्रदान करते हैं, एफसीएम 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.
}

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

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

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

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

अगले कदम

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