बैकग्राउंड में रखे गए Apple ऐप्लिकेशन पर टेस्ट मैसेज भेजें

FCM का इस्तेमाल शुरू करने के लिए, सबसे आसान यूज़ केस बनाएं: सूचना कंपोज़र से डेवलपमेंट डिवाइस पर सूचना का टेस्ट मैसेज भेजें. ऐसा तब करें, जब ऐप्लिकेशन डिवाइस पर बैकग्राउंड में चल रहा हो. इस पेज पर, सेटअप से लेकर पुष्टि तक, इस सुविधा को चालू करने के सभी चरणों की सूची दी गई है. अगर आपने FCM के लिए Apple क्लाइंट ऐप्लिकेशन सेट अप किया है, तो हो सकता है कि इसमें वे चरण भी शामिल हों जिन्हें आपने पहले ही पूरा कर लिया हो.

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

इस सेक्शन में उन टास्क के बारे में बताया गया है जिन्हें आपने शायद तब पूरा कर लिया हो, जब आपने अपने ऐप्लिकेशन के लिए Firebase की अन्य सुविधाएं पहले ही चालू कर ली हों. FCM के लिए, आपको APNs की पुष्टि करने वाली कुंजी अपलोड करनी होगी और रिमोट सूचनाओं के लिए रजिस्टर करना होगा.

ज़रूरी शर्तें

  • इन्हें इंस्टॉल करें:

    • Xcode 16.2 या उसके बाद का वर्शन
  • पक्का करें कि आपका प्रोजेक्ट इन ज़रूरी शर्तों को पूरा करता हो:

    • आपका प्रोजेक्ट, इन प्लैटफ़ॉर्म वर्शन या इसके बाद के वर्शन को टारगेट करना चाहिए:
      • iOS 13
      • macOS 10.15
      • tvOS 13
      • watchOS 7
  • अपने ऐप्लिकेशन को चलाने के लिए, Apple का कोई फ़िज़िकल डिवाइस सेट अप करें. इसके बाद, ये टास्क पूरे करें:

    • अपने Apple Developer खाते के लिए, Apple Push Notification Authentication Key पाएं.
    • ऐप्लिकेशन > क्षमताएं में जाकर, XCode में पुश नोटिफ़िकेशन चालू करें.

अगर आपके पास पहले से कोई Xcode प्रोजेक्ट नहीं है और आपको सिर्फ़ Firebase प्रॉडक्ट आज़माना है, तो हमारे क्विकस्टार्ट सैंपल में से कोई एक डाउनलोड करें.

Firebase प्रोजेक्ट बनाना

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

अपने ऐप्लिकेशन को Firebase के साथ रजिस्टर करना

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

  1. Firebase कंसोल पर जाएं.

  2. सेटअप वर्कफ़्लो लॉन्च करने के लिए, प्रोजेक्ट की खास जानकारी वाले पेज के बीच में मौजूद iOS+ आइकॉन पर क्लिक करें.

    अगर आपने पहले ही अपने Firebase प्रोजेक्ट में कोई ऐप्लिकेशन जोड़ लिया है, तो प्लैटफ़ॉर्म के विकल्प देखने के लिए, ऐप्लिकेशन जोड़ें पर क्लिक करें.

  3. बंडल आईडी फ़ील्ड में, अपने ऐप्लिकेशन का बंडल आईडी डालें.

  4. (ज़रूरी नहीं) ऐप्लिकेशन की अन्य जानकारी डालें: ऐप्लिकेशन का निकनेम और App Store आईडी.

  5. ऐप्लिकेशन रजिस्टर करें पर क्लिक करें.

Firebase कॉन्फ़िगरेशन फ़ाइल जोड़ना

  1. अपने ऐप्लिकेशन की Firebase कॉन्फ़िगरेशन फ़ाइल (GoogleService-Info.plist) पाने के लिए, GoogleService-Info.plist डाउनलोड करें पर क्लिक करें.

  2. अपनी कॉन्फ़िगरेशन फ़ाइल को Xcode प्रोजेक्ट के रूट में ले जाएं. अगर आपसे कहा जाए, तो सभी टारगेट में कॉन्फ़िग फ़ाइल जोड़ने का विकल्प चुनें.

अगर आपके प्रोजेक्ट में एक से ज़्यादा बंडल आईडी हैं, तो आपको हर बंडल आईडी को Firebase कंसोल में रजिस्टर किए गए ऐप्लिकेशन से जोड़ना होगा. इससे हर ऐप्लिकेशन के पास अपनी GoogleService-Info.plist फ़ाइल होगी.

अपने ऐप्लिकेशन में Firebase SDK टूल जोड़ना

Firebase डिपेंडेंसी इंस्टॉल और मैनेज करने के लिए, Swift Package Manager का इस्तेमाल करें.

  1. Xcode में, अपने ऐप्लिकेशन प्रोजेक्ट को खोलें. इसके बाद, File > Add Packages पर जाएं.
  2. जब आपसे कहा जाए, तब Firebase Apple प्लैटफ़ॉर्म SDK टूल की रिपॉज़िटरी जोड़ें:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Firebase Cloud Messaging लाइब्रेरी चुनें.
  5. टारगेट की बिल्ड सेटिंग के Other Linker Flags सेक्शन में -ObjC फ़्लैग जोड़ें.
  6. Firebase Cloud Messaging का बेहतर तरीके से इस्तेमाल करने के लिए, हमारा सुझाव है कि आप अपने Firebase प्रोजेक्ट में Google Analytics चालू करें. साथ ही, अपने ऐप्लिकेशन में Google Analytics के लिए Firebase SDK टूल जोड़ें. आपके पास, आईडीएफ़ए इकट्ठा करने की सुविधा के बिना या आईडीएफ़ए इकट्ठा करने की सुविधा के साथ लाइब्रेरी चुनने का विकल्प होता है. Firebase SDK के लिए Google Analytics में मॉड्यूल के नए संगठन के बारे में अक्सर पूछे जाने वाले सवाल देखें.
  7. इसके बाद, Xcode आपके पैकेज की डिपेंडेंसी से जुड़ी समस्या को हल करना शुरू कर देगा और उन्हें बैकग्राउंड में डाउनलोड करेगा.

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

APNs की पुष्टि करने वाली कुंजी को Firebase पर अपलोड करें. अगर आपके पास पहले से APNs की पुष्टि करने वाला कोई कुंजी नहीं है, तो Apple Developer Member Center में जाकर, एक कुंजी बनाएं.

  1. Firebase कंसोल में अपने प्रोजेक्ट में जाकर, गियर आइकॉन चुनें. इसके बाद, प्रोजेक्ट की सेटिंग चुनें. इसके बाद, Cloud Messaging टैब चुनें.

  2. iOS ऐप्लिकेशन कॉन्फ़िगरेशन में जाकर, APNs ऑथेंटिकेशन कुंजी में मौजूद, अपलोड करें बटन पर क्लिक करें.

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

अपने ऐप्लिकेशन में Firebase को चालू करना

आपको अपने ऐप्लिकेशन में Firebase को शुरू करने वाला कोड जोड़ना होगा. Firebase मॉड्यूल इंपोर्ट करें और शेयर किए गए इंस्टेंस को इस तरह कॉन्फ़िगर करें:

  1. अपने UIApplicationDelegate में FirebaseCore मॉड्यूल के साथ-साथ, ऐप्लिकेशन डेलिगेट इस्तेमाल करने वाले अन्य Firebase मॉड्यूल इंपोर्ट करें. उदाहरण के लिए, Cloud Firestore और Authentication का इस्तेमाल करने के लिए:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. अपने ऐप्लिकेशन डेलिगेट के application(_:didFinishLaunchingWithOptions:) तरीके में, शेयर किए गए इंस्टेंस FirebaseApp को कॉन्फ़िगर करें:

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. अगर SwiftUI का इस्तेमाल किया जा रहा है, तो आपको एक ऐप्लिकेशन डेलिगेट बनाना होगा. साथ ही, इसे UIApplicationDelegateAdaptor या NSApplicationDelegateAdaptor के ज़रिए अपनी App स्ट्रक्चर से जोड़ना होगा. आपको ऐप्लिकेशन के डेलिगेट स्विज़लिंग को भी बंद करना होगा. ज़्यादा जानकारी के लिए, SwiftUI के निर्देश देखें.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

रिमोट सूचनाओं के लिए रजिस्टर करना

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

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

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

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

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

सूचना वाला मैसेज भेजना

  1. टारगेट डिवाइस पर ऐप्लिकेशन इंस्टॉल करें और उसे चलाएं. Apple डिवाइसों पर, आपको रिमोट सूचनाएं पाने की अनुमति देने का अनुरोध स्वीकार करना होगा.

  2. पक्का करें कि डिवाइस पर ऐप्लिकेशन बैकग्राउंड में चल रहा हो.

  3. Firebase कंसोल में, मैसेजिंग पेज खोलें.

  4. अगर यह आपका पहला मैसेज है, तो अपना पहला कैंपेन बनाएं को चुनें.

    1. Firebase सूचना वाले मैसेज चुनें. इसके बाद, बनाएं चुनें.
  5. इसके अलावा, कैंपेन टैब पर जाकर, नया कैंपेन और फिर सूचनाएं चुनें.

  6. मैसेज का टेक्स्ट डालें. अन्य सभी फ़ील्ड में जानकारी देना ज़रूरी नहीं है.

  7. दाएं पैनल में मौजूद, टेस्ट मैसेज भेजें को चुनें.

  8. FCM रजिस्ट्रेशन टोकन जोड़ें लेबल वाले फ़ील्ड में, वह रजिस्ट्रेशन टोकन डालें जो आपको इस गाइड के पिछले सेक्शन में मिला था.

  9. जांचें को चुनें.

जांच करें को चुनने के बाद, टारगेट किए गए क्लाइंट डिवाइस (बैकग्राउंड में ऐप्लिकेशन के साथ) को सूचना मिलनी चाहिए.

अपने ऐप्लिकेशन पर मैसेज डिलीवर होने की जानकारी पाने के लिए, FCM रिपोर्टिंग डैशबोर्ड देखें. यह डैशबोर्ड, Apple और Android डिवाइसों पर भेजे गए और खोले गए मैसेज की संख्या रिकॉर्ड करता है. साथ ही, Android ऐप्लिकेशन के लिए "इंप्रेशन" (उपयोगकर्ताओं को दिखने वाली सूचनाएं) का डेटा भी रिकॉर्ड करता है.

अगले चरण

सूचना वाले मैसेज से आगे बढ़कर, अपने ऐप्लिकेशन में अन्य बेहतर सुविधाएं जोड़ने के लिए, यह लेख पढ़ें: