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

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

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

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

iOS और उसके बाद के वर्शन

Xcode में ऐप्लिकेशन की क्षमताएं चालू करें

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

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

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

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

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

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

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

Android

Google Play सेवाएं

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

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 कंसोल के सेटिंग पैनल का क्लाउड से मैसेज टैब खोलें और वेब कॉन्फ़िगरेशन सेक्शन तक स्क्रोल करें.

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

कुंजी का मौजूदा जोड़ा इंपोर्ट करें

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

  1. Firebase कंसोल के सेटिंग पैनल का क्लाउड से मैसेज टैब खोलें और वेब कॉन्फ़िगरेशन सेक्शन तक स्क्रोल करें.

  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);

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

अगले चरण

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

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

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