वेब ऐप्लिकेशन में Firebase क्लाउड से मैसेज भेजने की सुविधा का इस्तेमाल शुरू करना

प्लैटफ़ॉर्म चुनें: iOS+ Android Web Flutter Unity C++


इस गाइड में, Firebase Cloud Messaging का इस्तेमाल वेब क्लाइंट ऐप्लिकेशन में शुरू करने का तरीका बताया गया है. इससे, भरोसेमंद तरीके से मैसेज भेजे जा सकते हैं.

FCM JavaScript API की मदद से, उन ब्राउज़र में चल रहे वेब ऐप्लिकेशन में सूचना वाले मैसेज पाए जा सकते हैं जो Push API के साथ काम करते हैं. इनमें, इस सहायता मैट्रिक्स में शामिल ब्राउज़र के वर्शन और Push API का इस्तेमाल करने वाले Chrome एक्सटेंशन शामिल हैं.

FCM SDK टूल का इस्तेमाल सिर्फ़ उन पेजों पर किया जा सकता है जो एचटीटीपीएस पर दिखाए जाते हैं. ऐसा इसलिए है, क्योंकि इसमें सर्विस वर्कर का इस्तेमाल किया जाता है. ये सिर्फ़ एचटीटीपीएस साइटों पर उपलब्ध होते हैं. अगर आपको किसी सेवा देने वाली कंपनी की ज़रूरत है, तो Firebase App Hosting का इस्तेमाल करने का सुझाव दिया जाता है. यह आपके डोमेन पर एचटीटीपीएस होस्टिंग के लिए, बिना किसी शुल्क वाला टियर उपलब्ध कराती है.

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

FCM SDK टूल जोड़ना और उसे शुरू करना

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

  2. Firebase Cloud Messaging JS SDK टूल जोड़ें और Firebase Cloud Messaging शुरू करें:

Web

import { initializeApp } from "firebase/app";
import { getMessaging } from "firebase/messaging";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Firebase Cloud Messaging and get a reference to the service
const messaging = getMessaging(app);

Web

import firebase from "firebase/compat/app";
import "firebase/compat/messaging";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Firebase Cloud Messaging and get a reference to the service
const messaging = firebase.messaging();

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

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

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

पासकोड का नया जोड़ा जनरेट करना

  1. Firebase कंसोल में, सेटिंग > सामान्य पर जाएं. इसके बाद, क्लाउड से मैसेज करने की सेवा टैब पर क्लिक करें

  2. वेब कॉन्फ़िगरेशन सेक्शन पर जाएं.

  3. वेब पुश सर्टिफ़िकेट टैब में, पासकोड का जोड़ा जनरेट करें पर क्लिक करें.

    कंसोल में, पासकोड का जोड़ा जनरेट होने की सूचना दिखती है. साथ ही, इसमें सार्वजनिक पासकोड की स्ट्रिंग और जोड़ी गई तारीख दिखती है.

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

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

  1. Firebase कंसोल में, सेटिंग > सामान्य पर जाएं. इसके बाद, क्लाउड से मैसेज करने की सेवा टैब पर क्लिक करें

  2. वेब कॉन्फ़िगरेशन सेक्शन पर जाएं.

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

  4. पासकोड का जोड़ा इंपोर्ट करें डायलॉग में, सार्वजनिक और निजी पासकोड को उनसे जुड़े फ़ील्ड में डालें. इसके बाद, इंपोर्ट करें पर क्लिक करें.

    कंसोल में, सार्वजनिक पासकोड की स्ट्रिंग और जोड़ी गई तारीख दिखती है.

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

अपने ऐप्लिकेशन में वेब क्रेडेंशियल कॉन्फ़िगर करना

The method register(): Promise<void> से, FCM को अलग-अलग पुश सेवाओं को मैसेज के अनुरोध भेजते समय, वीएपीआईडी पासकोड क्रेडेंशियल का इस्तेमाल करने की अनुमति मिलती है. FCM के साथ वेब क्रेडेंशियल कॉन्फ़िगर करना में दिए गए निर्देशों के मुताबिक, जनरेट किए गए या इंपोर्ट किए गए पासकोड को, मैसेजिंग ऑब्जेक्ट वापस पाने के बाद अपने कोड में जोड़ें:FCM

import { getMessaging, register } from "firebase/messaging";

const messaging = getMessaging();
// Add the public key generated from the Firebase console here.
register(messaging, {vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu"});

सूचना की अनुमति का अनुरोध करना और सर्विस वर्कर को कॉन्फ़िगर करना

जब आपको FCM की मदद से किसी ऐप्लिकेशन इंस्टेंस को टारगेट करना हो, तो सबसे पहले सूचना की अनुमति का अनुरोध करें Notification.requestPermission(). दिखाए गए तरीके से कॉल करने पर, यह अनुमति मिलने पर अनुमति की स्थिति दिखाता है:

function requestPermission() {
  console.log('Requesting permission...');
  Notification.requestPermission().then((permission) => {
    if (permission === 'granted') {
      console.log('Notification permission granted.');
    }
  });
}

FCM के लिए, firebase-messaging-sw.js फ़ाइल की ज़रूरत होती है. अगर आपके पास पहले से firebase-messaging-sw.js फ़ाइल नहीं है, तो रजिस्टर करने से पहले, इस नाम से एक खाली फ़ाइल बनाएं और उसे अपने डोमेन के रूट में रखें. क्लाइंट सेटअप की प्रोसेस के दौरान, फ़ाइल में काम का कॉन्टेंट बाद में जोड़ा जा सकता है.

Firebase इंस्टॉलेशन आईडी ऐक्सेस करना

मैसेज को टारगेट करने के लिए, ऐप्लिकेशन इंस्टेंस रजिस्टर करने और Firebase इंस्टॉलेशन आईडी (एफ़आईडी) वापस पाने के लिए:

import { getMessaging, onRegistered, register } from "firebase/messaging";

const messaging = getMessaging();

// 1. Implement callback to receive the Firebase installation ID upon registration.
// This is triggered every time a manual register() finishes, a FID change
// is detected, or a pushsubscriptionchange event is fired.
onRegistered(messaging, (installationId) => {
  console.log('Registered installation ID:', installationId);

  // Send the Firebase Installation ID to your app server and update the UI if needed.
  sendRegistrationToServer(installationId);
});

// 2. You can also manually trigger registration (recommended on app startup)
register(messaging, {
  vapidKey: '<YOUR_PUBLIC_VAPID_KEY_HERE>'
}).then(() => {
  // Success! The Firebase Installation ID can be used to target messages to this app
  // instance and will be delivered asynchronously to your onRegistered() callback.
}).catch((err) => {
  console.error('An error occurred while registering', err);
});

onRegistered कॉलबैक, इन तीन स्थितियों में ट्रिगर होता है:

  1. मैन्युअल register() कॉल के हर बार पूरा होने पर.
  2. Firebase इंस्टॉलेशन आईडी में बदलाव का पता चलने पर.
  3. A pushsubscriptionchange इवेंट ट्रिगर होने पर.

Firebase इंस्टॉलेशन आईडी पाने के बाद, इसे अपने ऐप्लिकेशन सर्वर को भेजें और अपनी पसंद के तरीके से सेव करें.

रजिस्ट्रेशन टोकन ऐक्सेस करना (यह सुविधा अब उपलब्ध नहीं है)

मौजूदा टोकन वापस पाने के लिए:

Web

import { getMessaging, getToken } from "firebase/messaging";

// Get registration token. Initially this makes a network call, once retrieved
// subsequent calls to getToken will return from cache.
const messaging = getMessaging();
getToken(messaging, { vapidKey: '<YOUR_PUBLIC_VAPID_KEY_HERE>' }).then((currentToken) => {
  if (currentToken) {
    // Send the token to your server and update the UI if necessary
    // ...
  } else {
    // Show permission request UI
    console.log('No registration token available. Request permission to generate one.');
    // ...
  }
}).catch((err) => {
  console.log('An error occurred while retrieving token. ', err);
  // ...
});

Web

// Get registration token. Initially this makes a network call, once retrieved
// subsequent calls to getToken will return from cache.
messaging.getToken({ vapidKey: '<YOUR_PUBLIC_VAPID_KEY_HERE>' }).then((currentToken) => {
  if (currentToken) {
    // Send the token to your server and update the UI if necessary
    // ...
  } else {
    // Show permission request UI
    console.log('No registration token available. Request permission to generate one.');
    // ...
  }
}).catch((err) => {
  console.log('An error occurred while retrieving token. ', err);
  // ...
});

टोकन पाने के बाद, इसे अपने ऐप्लिकेशन सर्वर को भेजें और अपनी पसंद के तरीके से सेव करें.

टेस्ट के तौर पर सूचना वाला मैसेज भेजना

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

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

  3. Firebase कंसोल में, DevOps और उपयोगकर्ता जुड़ाव > मैसेजिंग पर जाएं

  4. कैंपेन बनाएं.

    • अगर यह आपका पहला मैसेज है, तो:

      1. अपना पहला कैंपेन बनाएं को चुनें.

      2. Firebase सूचना वाले मैसेज को चुनें. इसके बाद, बनाएं को चुनें.

    • अगर आपने पहले कैंपेन बनाए हैं, तो:

      1. कैंपेन टैब पर, नया कैंपेन को चुनें.

      2. सूचनाएं पर क्लिक करें.

  5. मैसेज का टेक्स्ट डालें.

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

  7. रजिस्ट्रेशन टोकन जोड़ें लेबल वाले फ़ील्ड में, अपना रजिस्ट्रेशन टोकन डालें.FCM

  8. टेस्ट को चुनें.

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

अगले चरण

सेटअप के चरण पूरे करने के बाद, वेब (JavaScript) के लिए FCM का इस्तेमाल जारी रखने के कुछ विकल्प यहां दिए गए हैं: