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

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

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

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

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

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

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

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

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

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

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

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

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

Android

Google Play सेवाएं

FCM क्लाइंट के लिए, Android 4.4 या उसके बाद के वर्शन पर चलने वाले ऐसे डिवाइसों की ज़रूरत होती है जिनमें Google Play services इंस्टॉल हो. इसके अलावा, 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 वेब इंटरफ़ेस, वेब क्रेडेंशियल का इस्तेमाल करता है. इन्हें "Voluntary Application Server Identification" या "VAPID" कुंजियां कहा जाता है. इनका इस्तेमाल, वेब पुश सेवाओं को अनुरोध भेजने की अनुमति देने के लिए किया जाता है. अपने ऐप्लिकेशन को पुश नोटिफ़िकेशन की सदस्यता देने के लिए, आपको अपने Firebase प्रोजेक्ट के साथ एक जोड़ी कुंजियां जोड़नी होंगी. Firebase कंसोल की मदद से, नया पासकोड जनरेट किया जा सकता है या मौजूदा पासकोड इंपोर्ट किया जा सकता है.

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

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

कोई मौजूदा पासकोड जोड़ना

अगर आपके पास कोई मौजूदा पासकोड जोड़े हैं और उनका इस्तेमाल वेब ऐप्लिकेशन के साथ पहले से किया जा रहा है, तो उन्हें FCM में इंपोर्ट किया जा सकता है. इससे, FCM एपीआई की मदद से अपने मौजूदा वेब ऐप्लिकेशन इंस्टेंस तक पहुंचा जा सकता है. पासकोड इंपोर्ट करने के लिए, आपके पास 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...
}

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

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

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

अगले चरण

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

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

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