FCM JavaScript API 可讓您在支援 Push API 的瀏覽器中執行的網路應用程式中接收通知訊息。包括這份支援矩陣中列出的瀏覽器版本,以及透過 Push API 的 Chrome 擴充功能。
FCM SDK 僅支援透過 HTTPS 提供的網頁。這是因為該服務使用了服務工作站,而服務工作站僅適用於 HTTPS 網站。如果您需要供應商,建議使用 Firebase 代管,這項服務可讓您在自己的網域上免費代管 HTTPS。
如要開始使用 FCM JavaScript API,您必須將 Firebase 新增至網頁應用程式,並新增邏輯來存取註冊權杖。
新增及初始化 FCM SDK
如果您尚未 安裝 Firebase JS SDK 並初始化 Firebase,請先完成這項操作。
新增 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 for web,且想升級至 SDK 6.7.0 以上版本,則必須在 Google Cloud 控制台為專案啟用 FCM Registration API。啟用 API 時,請務必使用用於 Firebase 的 Google 帳戶登入 Cloud 控制台,並確實選取正確的專案。新增的專案會加入 FCM SDK,並預設啟用此 API。
使用 FCM 設定 Web 憑證
FCM 網頁介面會使用名為「Voluntary Application Server Identification」或「VAPID」的網頁憑證金鑰,授權將要求傳送至支援的網路推播服務。如要讓應用程式訂閱推播通知,您必須將一組鍵與 Firebase 專案建立關聯。您可以透過 Firebase 控制台產生新的金鑰組,或匯入現有的金鑰組。
產生新的金鑰組
- 開啟 Firebase 控制台「設定」窗格中的「Cloud Messaging」分頁,然後捲動至「Web 設定」部分。
- 在「網路推播憑證」分頁中,按一下「產生金鑰組」。主控台會顯示金鑰組已產生的通知,並顯示公開金鑰字串和新增日期。
匯入現有的金鑰組
如果您已在網頁應用程式中使用現有的金鑰組,可以將其匯入 FCM,以便透過 FCM API 存取現有的網頁應用程式執行個體。如要匯入金鑰,您必須擁有 Firebase 專案的擁有者級存取權。以 Base64 URL 安全編碼格式匯入現有的公開金鑰和私密金鑰:
- 開啟 Firebase 控制台「設定」窗格中的「Cloud Messaging」分頁,然後捲動至「Web 設定」部分。
- 在「網路推送憑證」分頁中,找出並選取「匯入現有的金鑰組」連結文字。
- 在「Import a key pair」對話方塊中,在對應的欄位中提供公開和私密金鑰,然後按一下「Import」。主控台會顯示公開金鑰字串和新增日期。
如需在應用程式中新增金鑰的操作說明,請參閱「在應用程式中設定 Web 憑證」。如要進一步瞭解金鑰格式和產生方式,請參閱「應用程式伺服器金鑰」。
在應用程式中設定網頁憑證
getToken(): Promise<string>
方法可讓 FCM 在向不同的推送服務傳送訊息要求時,使用 VAPID 金鑰憑證。使用您根據「使用 FCM 設定網頁憑證」一文中的操作說明所產生或匯入的金鑰,在擷取訊息物件後將其加入程式碼:
import { getMessaging, getToken } from "firebase/messaging";
const messaging = getMessaging();
// Add the public key generated from the console here.
getToken(messaging, {vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu"});
存取註冊權杖
如要擷取應用程式例項的目前註冊權杖,請先使用 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
檔案,否則請建立同名空白檔案,並將該檔案放在網域的根目錄中,再擷取符記。您稍後可在用戶端設定程序中為檔案新增實用內容。
如何擷取目前的權杖:
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); // ... });
取得權杖後,請將權杖傳送至應用程式伺服器,並使用您偏好的方法儲存權杖。
後續步驟
完成設定步驟後,您可以選擇透過 FCM 網頁版 (JavaScript) 執行後續作業:
- 在應用程式中加入接收訊息的功能。
- 請試試我們的教學課程:將第一則訊息傳送至背景應用程式或將訊息傳送至多部裝置。
- 參閱 GitHub 上的完整範例。
- 檢閱 JavaScript 參考資料。
- 觀看影片逐步操作,瞭解如何導入 API。