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

Flutter पर FCM क्लाइंट सेट अप करने के लिए, यह तरीका अपनाएं.

प्लैटफ़ॉर्म के हिसाब से सेटअप करने का तरीका और ज़रूरी शर्तें

ज़रूरी चरणों में से कुछ, उस प्लैटफ़ॉर्म पर निर्भर करते हैं जिसे टारगेट किया जा रहा है.

iOS+

Xcode में ऐप्लिकेशन की सुविधाएं चालू करना

आपका ऐप्लिकेशन मैसेज पाना शुरू करे, इससे पहले आपको अपने Xcode प्रोजेक्ट में पुश नोटिफ़िकेशन और बैकग्राउंड मोड चालू करने होंगे.

  1. अपना Xcode प्रोजेक्ट वर्कस्पेस (ios/Runner.xcworkspace) खोलें.
  2. पुश नोटिफ़िकेशन चालू करें.
  3. बैकग्राउंड फ़ेच और रिमोट सूचनाएं के बैकग्राउंड में प्रोग्राम चलाने के मोड चालू करें.

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

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

  1. Firebase कंसोल में अपने प्रोजेक्ट में जाकर, गियर आइकॉन चुनें. इसके बाद, प्रोजेक्ट सेटिंग चुनें. इसके बाद, Cloud Messaging टैब चुनें.
  2. अपने डेवलपमेंट सर्टिफ़िकेट, प्रोडक्शन सर्टिफ़िकेट या दोनों के लिए, सर्टिफ़िकेट अपलोड करें बटन चुनें. कम से कम एक इमेज होनी चाहिए.
  3. हर सर्टिफ़िकेट के लिए, .p12 फ़ाइल चुनें. अगर कोई पासवर्ड है, तो उसे डालें. पक्का करें कि इस सर्टिफ़िकेट का बंडल आईडी, आपके ऐप्लिकेशन के बंडल आईडी से मेल खाता हो. सेव करें को चुनें.

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

Apple डिवाइसों पर FCM Flutter प्लगिन का इस्तेमाल करने के लिए, आपको मेथड स्विज़लिंग बंद नहीं करनी चाहिए. स्विज़लिंग ज़रूरी है. इसके बिना, Firebase की मुख्य सुविधाएं ठीक से काम नहीं करती हैं. जैसे, FCM टोकन हैंडलिंग.

Android

Google Play सेवाएं

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

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

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

वेब

FCM के साथ वेब क्रेडेंशियल कॉन्फ़िगर करना

FCM का वेब इंटरफ़ेस, वेब क्रेडेंशियल का इस्तेमाल करता है. इन्हें "वॉलंटरी ऐप्लिकेशन सर्वर आइडेंटिफ़िकेशन" या "VAPID" कुंजियां कहा जाता है. इनका इस्तेमाल, वेब पुश की सुविधा देने वाली सेवाओं को मैसेज भेजने के अनुरोधों को अनुमति देने के लिए किया जाता है. अपने ऐप्लिकेशन को पुश नोटिफ़िकेशन पाने के लिए रजिस्टर करने के लिए, आपको अपने Firebase प्रोजेक्ट के साथ कुंजियों का एक जोड़ा जोड़ना होगा. आपके पास Firebase कंसोल के ज़रिए, नया कुंजी जोड़ा जनरेट करने या अपने मौजूदा कुंजी जोड़े को इंपोर्ट करने का विकल्प होता है.

कुंजी के नए जोड़े को जनरेट करना
  1. Firebase कंसोल के सेटिंग पैनल में मौजूद Cloud Messaging टैब खोलें. इसके बाद, वेब कॉन्फ़िगरेशन सेक्शन तक स्क्रोल करें.

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

किसी मौजूदा पासकोड को इंपोर्ट करना

अगर आपके पास पहले से कोई ऐसा कुंजी जोड़ा है जिसका इस्तेमाल वेब ऐप्लिकेशन के साथ किया जा रहा है, तो उसे FCM में इंपोर्ट किया जा सकता है. इससे FCM API के ज़रिए, अपने मौजूदा वेब ऐप्लिकेशन इंस्टेंस तक पहुंचा जा सकता है. कुंजियां इंपोर्ट करने के लिए, आपके पास Firebase प्रोजेक्ट के लिए मालिक लेवल का ऐक्सेस होना चाहिए. अपनी मौजूदा सार्वजनिक और निजी कुंजी को Base64 यूआरएल से सुरक्षित तरीके से एन्कोड किए गए फ़ॉर्म में इंपोर्ट करें:

  1. Firebase कंसोल के सेटिंग पैनल में मौजूद Cloud Messaging टैब खोलें. इसके बाद, वेब कॉन्फ़िगरेशन सेक्शन तक स्क्रोल करें.

  2. वेब पुश सर्टिफ़िकेट टैब में, "मौजूदा कुंजी का जोड़ा इंपोर्ट करें" लिंक टेक्स्ट ढूंढें और उसे चुनें.

  3. की का जोड़ा इंपोर्ट करें डायलॉग बॉक्स में, सार्वजनिक और निजी पासकोड को संबंधित फ़ील्ड में डालें. इसके बाद, इंपोर्ट करें पर क्लिक करें. कंसोल में, सार्वजनिक पासकोड स्ट्रिंग और उसे जोड़ने की तारीख दिखती है.

कुंजियों के फ़ॉर्मैट और उन्हें जनरेट करने के तरीके के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन सर्वर की कुंजियां लेख पढ़ें.

FCM प्लगिन इंस्टॉल करना

  1. अगर आपने अब तक ऐसा नहीं किया है, तो Flutter के लिए Firebase प्लगिन इंस्टॉल करें और उन्हें शुरू करें.

  2. प्लगिन इंस्टॉल करने के लिए, अपने Flutter प्रोजेक्ट के रूट से यह कमांड चलाएं:

    flutter pub add firebase_messaging
    
  3. अपडेट हो जाने के बाद, अपने Flutter ऐप्लिकेशन को फिर से बनाएं:

    flutter run
    

रजिस्ट्रेशन टोकन ऐक्सेस करना

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

किसी ऐप्लिकेशन इंस्टेंस के लिए मौजूदा रजिस्ट्रेशन टोकन वापस पाने के लिए, getToken() को कॉल करें. अगर सूचनाएं पाने की अनुमति नहीं दी गई है, तो यह तरीका उपयोगकर्ता से सूचनाएं पाने की अनुमति मांगेगा. ऐसा न होने पर, यह टोकन दिखाता है या गड़बड़ी की वजह से आने वाले समय में होने वाले अनुरोधों को अस्वीकार कर देता है.

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

वेब प्लैटफ़ॉर्म पर, अपनी VAPID सार्वजनिक पासकोड को getToken() पर पास करें:

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

जब भी टोकन अपडेट हो, तब सूचना पाने के लिए, onTokenRefresh स्ट्रीम की सदस्यता लें:

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

अपने-आप शुरू होने की सुविधा को रोकना

जब FCM रजिस्ट्रेशन टोकन जनरेट होता है, तो लाइब्रेरी पहचानकर्ता और कॉन्फ़िगरेशन डेटा को Firebase पर अपलोड करती है. अगर आपको टोकन अपने-आप जनरेट होने से रोकना है, तो बिल्ड के समय अपने-आप शुरू होने की सुविधा बंद करें.

iOS

iOS पर, अपने Info.plist में मेटाडेटा की वैल्यू जोड़ें:

FirebaseMessagingAutoInitEnabled = NO

Android

Android पर, Analytics कलेक्शन और FCM के अपने-आप शुरू होने की सुविधा बंद करें. इसके लिए, आपको AndroidManifest.xml में ये मेटाडेटा वैल्यू जोड़नी होंगी. आपको दोनों सुविधाएं बंद करनी होंगी:

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

रनटाइम के दौरान, FCM के अपने-आप चालू होने की सुविधा को फिर से चालू करना

किसी ऐप्लिकेशन इंस्टेंस के लिए, अपने-आप शुरू होने की सुविधा चालू करने के लिए, setAutoInitEnabled() को कॉल करें:

await FirebaseMessaging.instance.setAutoInitEnabled(true);

एक बार सेट होने के बाद, ऐप्लिकेशन को रीस्टार्ट करने पर भी यह वैल्यू बनी रहती है.

अगले चरण

क्लाइंट ऐप्लिकेशन सेट अप करने के बाद, सूचना कंपोज़र की मदद से डाउनस्ट्रीम मैसेज भेजे जा सकते हैं. बैकग्राउंड में चल रहे ऐप्लिकेशन को टेस्ट मैसेज भेजना लेख पढ़ें.

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

इसके बाद, अपने ऐप्लिकेशन क्लाइंट में: