Check out what’s new from Firebase at Google I/O 2022. Learn more

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

FCM क्लाइंट को Android 4.4 या उसके बाद वाले वर्शन पर चलने वाले डिवाइस की आवश्यकता होती है जिसमें Google Play Store ऐप भी इंस्टॉल हो, या Google API के साथ Android 4.4 चलाने वाला एमुलेटर हो। ध्यान दें कि आप Google Play Store के माध्यम से अपने Android ऐप्स को परिनियोजित करने तक सीमित नहीं हैं।

एसडीके सेट करें

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

अपना ऐप मेनिफेस्ट संपादित करें

अपने ऐप के मेनिफेस्ट में निम्नलिखित जोड़ें:

  • एक सेवा जो FirebaseMessagingService का विस्तार करती है। यह आवश्यक है यदि आप पृष्ठभूमि में ऐप्स पर सूचनाएं प्राप्त करने के अलावा कोई संदेश प्रबंधन करना चाहते हैं। अग्रभूमि ऐप्स में सूचनाएं प्राप्त करने के लिए, डेटा पेलोड प्राप्त करने के लिए, अपस्ट्रीम संदेश भेजने के लिए, और इसी तरह, आपको इस सेवा का विस्तार करना होगा।
  • <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
  • (वैकल्पिक) एप्लिकेशन घटक के भीतर, मेटाडेटा तत्व एक डिफ़ॉल्ट अधिसूचना आइकन और रंग सेट करने के लिए। एंड्रॉइड इन मानों का उपयोग तब करता है जब आने वाले संदेश स्पष्ट रूप से आइकन या रंग सेट नहीं करते हैं।
  • <!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
         See README(https://goo.gl/l4GJaQ) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_ic_notification" />
    <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
         notification message. See README(https://goo.gl/6BKBk7) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorAccent" />
  • (वैकल्पिक) एंड्रॉइड 8.0 (एपीआई स्तर 26) और उच्चतर से, अधिसूचना चैनल समर्थित और अनुशंसित हैं। FCM मूलभूत सेटिंग्स के साथ एक डिफ़ॉल्ट सूचना चैनल प्रदान करता है। यदि आप अपना स्वयं का डिफ़ॉल्ट चैनल बनाना और उसका उपयोग करना पसंद करते हैं, तो डिफ़ॉल्ट_नोटिफिकेशन_चैनल_आईडी को अपने सूचना चैनल default_notification_channel_id की आईडी पर सेट करें जैसा कि दिखाया गया है; FCM इस मान का उपयोग तब करेगा जब आने वाले संदेश स्पष्ट रूप से एक अधिसूचना चैनल सेट नहीं करेंगे। अधिक जानने के लिए, अधिसूचना चैनल प्रबंधित करें देखें।
  • <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

डिवाइस पंजीकरण टोकन तक पहुंचें

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

यह खंड बताता है कि टोकन कैसे प्राप्त करें और टोकन में परिवर्तनों की निगरानी कैसे करें। चूंकि टोकन प्रारंभिक स्टार्टअप के बाद घुमाया जा सकता है, इसलिए आपको नवीनतम अद्यतन पंजीकरण टोकन पुनर्प्राप्त करने की जोरदार अनुशंसा की जाती है।

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

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

वर्तमान पंजीकरण टोकन प्राप्त करें

जब आपको वर्तमान टोकन प्राप्त करने की आवश्यकता हो, तो FirebaseMessaging.getInstance().getToken() पर कॉल करें:

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // Log and toast
          String msg = getString(R.string.msg_token_fmt, token);
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

Kotlin+KTX

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

टोकन पीढ़ी की निगरानी करें

जब भी कोई नया टोकन जनरेट होता है तो onNewToken कॉलबैक सक्रिय हो जाता है।

Java

/**
 * There are two scenarios when onNewToken is called:
 * 1) When a new token is generated on initial app startup
 * 2) Whenever an existing token is changed
 * Under #2, there are three scenarios when the existing token is changed:
 * A) App is restored to a new device
 * B) User uninstalls/reinstalls the app
 * C) User clears app data
 */
@Override
public void onNewToken(String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token);
}

Kotlin+KTX

/**
 * Called if the FCM registration token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the
 * FCM registration token is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token)
}

टोकन प्राप्त करने के बाद, आप इसे अपने ऐप सर्वर पर भेज सकते हैं और अपनी पसंदीदा विधि का उपयोग करके इसे स्टोर कर सकते हैं।

Google Play सेवाओं की जांच करें

Play Services SDK पर भरोसा करने वाले ऐप्स को Google Play सेवाओं की सुविधाओं तक पहुंचने से पहले डिवाइस को हमेशा संगत Google Play सेवाओं APK के लिए जांचना चाहिए। इसे दो स्थानों पर करने की अनुशंसा की जाती है: मुख्य गतिविधि की ऑनक्रेट( onCreate() विधि में, और इसकी onResume() विधि में। onCreate() में चेक यह सुनिश्चित करता है कि सफल जांच के बिना ऐप का उपयोग नहीं किया जा सकता है। onResume() में चेक यह सुनिश्चित करता है कि यदि उपयोगकर्ता किसी अन्य माध्यम से चल रहे ऐप पर वापस आता है, जैसे कि बैक बटन के माध्यम से, चेक अभी भी किया जाता है।

यदि डिवाइस में Google Play सेवाओं का संगत संस्करण नहीं है, तो आपका ऐप उपयोगकर्ताओं को Play Store से Google Play सेवाएं डाउनलोड करने की अनुमति देने के लिए GoogleApiAvailability.makeGooglePlayServicesAvailable() पर कॉल कर सकता है।

ऑटो इनिशियलाइज़ेशन रोकें

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

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

FCM ऑटो-इनिट को फिर से सक्षम करने के लिए, रनटाइम कॉल करें:

Java

FirebaseMessaging.getInstance().setAutoInitEnabled(true);

Kotlin+KTX

Firebase.messaging.isAutoInitEnabled = true

Analytics संग्रह को पुन: सक्षम करने के लिए, FirebaseAnalytics वर्ग की setAnalyticsCollectionEnabled() विधि को कॉल करें। उदाहरण के लिए:

setAnalyticsCollectionEnabled(true);

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

अगले कदम

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

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

ध्यान रखें कि, इन सुविधाओं का लाभ उठाने के लिए, आपको सर्वर कार्यान्वयन और सर्वर प्रोटोकॉल (HTTP या XMPP), या व्यवस्थापक SDK के कार्यान्वयन की आवश्यकता होगी।