بدء استخدام "المراسلة عبر السحابة الإلكترونية من Firebase" في تطبيقات الويب

اختيار المنصة: iOS+ Android Web Flutter Unity C++


يصف هذا الدليل كيفية بدء استخدام Firebase Cloud Messaging في تطبيقات عميل الويب لإرسال الرسائل بشكل موثوق.

تتيح لك واجهة برمجة التطبيقات FCM JavaScript API تلقّي رسائل الإشعارات في تطبيقات الويب التي تعمل في المتصفّحات التي تتيح استخدام Push API. ويشمل ذلك إصدارات المتصفّحات المدرَجة في مصفوفة التوافق هذه وإضافات Chrome التي تستخدم Push API.

لا تتوافق حزمة تطوير البرامج (SDK) لـ FCM إلا مع الصفحات التي يتم عرضها عبر بروتوكول HTTPS. ويرجع ذلك إلى استخدامها لبرامج الخدمة، التي لا تتوفّر إلا على المواقع الإلكترونية التي تستخدم بروتوكول HTTPS. إذا كنت بحاجة إلى موفّر، Firebase App Hosting ننصحك باستخدامه ويوفر طبقة مجانية لاستضافة HTTPS على نطاقك الخاص.

لبدء استخدام واجهة برمجة التطبيقات FCM JavaScript API، عليك إضافة Firebase إلى تطبيق الويب وإضافة منطق للوصول إلى معرّفات تثبيت Firebase، ما يتيح لك تحديد المستلِم لإشعاراتك.

إضافة حزمة تطوير البرامج (SDK) وتهيئتهاFCM

  1. إذا لم يسبق لك ذلك، ثبِّت حزمة تطوير البرامج (SDK) لـ Firebase JS وتهيئ Firebase.

  2. أضِف حزمة تطوير البرامج (SDK) لـ Firebase Cloud Messaging JS وتهيئ 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 أو إصدار أحدث، عليك تفعيل FCM Registration API لمشروعك في Google Cloud Console. عند تفعيل واجهة برمجة التطبيقات، تأكَّد من تسجيل الدخول إلى Google Cloud Console باستخدام حساب Google نفسه الذي تستخدمه لمنصة Firebase، وتأكَّد من اختيار المشروع الصحيح. تكون واجهة برمجة التطبيقات هذه مفعَّلة تلقائيًا للمشاريع الجديدة التي تضيف FCM SDK.

إعداد بيانات اعتماد الويب باستخدام FCM

تستخدم واجهة الويب لخدمة FCM بيانات اعتماد الويب، التي تُعرف باسم مفاتيح Voluntary Application Server Identification أو VAPID، لتفويض طلبات الإرسال إلى خدمات إشعارات الويب المنبثقة المتوافقة. للاشتراك في الإشعارات الفورية، عليك ربط زوج من المفاتيح بمشروع Firebase. يمكنك إما إنشاء زوج مفاتيح جديد أو استيراد زوج المفاتيح الحالي من خلال Firebase وحدة التحكم.

إنشاء زوج جديد من المفاتيح

  1. في Firebase Console، انتقِل إلى الإعدادات > الإعدادات العامة. بعد ذلك، انقر على علامة التبويب خدمة المراسلة عبر السحابة الإلكترونية

  2. انتقِل إلى قسم إعدادات الويب.

  3. في علامة التبويب شهادات إشعارات الويب المنبثقة ، انقر على إنشاء زوج من المفاتيح.

    تعرض وحدة التحكّم إشعارًا يفيد بإنشاء زوج المفاتيح، وتعرض سلسلة المفتاح العام وتاريخ إضافته.

استيراد زوج حالي من المفاتيح

إذا كان لديك زوج حالي من المفاتيح تستخدمه حاليًا مع تطبيق الويب، يمكنك استيراده إلى FCM لتتمكّن من الوصول إلى مثيلات تطبيق الويب الحالية من خلال واجهات برمجة التطبيقات في FCM. لاستيراد المفاتيح، يجب أن يكون لديك إذن الوصول على مستوى المالك إلى مشروع Firebase. استورِد المفتاحَين العام والخاص الحاليَين بتنسيق base64 الآمن لعناوين URL:

  1. في Firebase Console، انتقِل إلى الإعدادات > الإعدادات العامة. بعد ذلك، انقر على علامة التبويب خدمة المراسلة عبر السحابة الإلكترونية

  2. انتقِل إلى قسم إعدادات الويب.

  3. في علامة التبويب شهادات إشعارات الويب المنبثقة ، ابحث عن نص الرابط استيراد زوج حالي من المفاتيح وانقر عليه.

  4. في مربّع الحوار استيراد زوج من المفاتيح ، أدخِل المفتاحَين العام والخاص في الحقلَين المقابلَين وانقر على استيراد.

    تعرض وحدة التحكّم سلسلة المفتاح العام وتاريخ إضافته.

للحصول على تعليمات حول كيفية إضافة المفتاح إلى تطبيقك، اطّلِع على إعداد بيانات اعتماد الويب في تطبيقك. لمزيد من المعلومات عن تنسيق المفاتيح وكيفية إنشائها، اطّلِع على مفاتيح خادم التطبيق.

إعداد بيانات اعتماد الويب في تطبيقك

تسمح الطريقة register(): Promise<void> لـ FCM باستخدام بيانات اعتماد مفتاح VAPID عند إرسال طلبات الرسائل إلى خدمات الإشعارات المنبثقة المختلفة. باستخدام المفتاح الذي أنشأته أو استوردته وفقًا للتعليمات الواردة في إعداد بيانات اعتماد الويب باستخدام 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. يتم إطلاق حدث 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 Console، انتقِل إلى DevOps & Engagement > المراسلة

  4. أنشئ حملة.

    • إذا كانت هذه هي رسالتك الأولى:

      1. انقر على إنشاء حملتك الأولى.

      2. انقر على رسائل الإشعارات من Firebase ، ثم على إنشاء.

    • إذا سبق لك إنشاء حملات:

      1. في علامة التبويب الحملات ، انقر على حملة جديدة.

      2. انقر على الإشعارات.

  5. أدخِل نص الرسالة.

  6. انقر على إرسال رسالة اختبارية من اللوحة اليمنى.

  7. في الحقل المسمّى إضافة رمز تسجيل مميّزFCM، أدخِل رمز التسجيل المميّز.

  8. انقر على اختبار.

بعد النقر على اختبار، من المفترض أن يتلقّى جهاز العميل المستهدَف الإشعار، مع تشغيل التطبيق في الـ خلفية.

الخطوات التالية

بعد إكمال خطوات الإعداد، إليك بعض الخيارات للمضي قدمًا في استخدام FCM للويب (JavaScript):