Thiết lập ứng dụng nhắn tin qua đám mây của Firebase dành cho JavaScript

API JavaScript FCM cho phép bạn nhận thông báo trong các ứng dụng web chạy trên trình duyệt hỗ trợ Push API. Điều này bao gồm các phiên bản trình duyệt có trong ma trận hỗ trợ này và các tiện ích Chrome thông qua Push API.

SDK FCM chỉ được hỗ trợ trong các trang được phân phát qua HTTPS. Điều này là do PWA sử dụng các worker dịch vụ, chỉ có trên các trang web HTTPS. Nếu bạn cần một nhà cung cấp, thì Lưu trữ Firebase là lựa chọn được đề xuất và cung cấp một cấp miễn phí để lưu trữ HTTPS trên miền của riêng bạn.

Để bắt đầu với API JavaScript FCM, bạn cần thêm Firebase vào ứng dụng web và thêm logic để truy cập vào mã thông báo đăng ký.

Thêm và khởi chạy SDK FCM

  1. Nếu chưa, hãy cài đặt Firebase JS SDK và khởi chạy Firebase.

  2. Thêm Firebase Cloud Messaging JS SDK và khởi chạy 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();

Nếu đang sử dụng FCM cho web và muốn nâng cấp lên SDK 6.7.0 trở lên, bạn phải bật API Đăng ký FCM cho dự án của mình trong Google Cloud Console. Khi bật API, hãy nhớ đăng nhập vào Cloud Console bằng cùng một Tài khoản Google mà bạn dùng cho Firebase và nhớ chọn đúng dự án. Các dự án mới thêm SDK FCM sẽ bật API này theo mặc định.

Định cấu hình Thông tin đăng nhập trên web bằng FCM

Giao diện web FCM sử dụng thông tin đăng nhập trên web (còn gọi là khoá "Nhận dạng máy chủ ứng dụng tự nguyện" hoặc "VAPID") để cho phép gửi các yêu cầu đến các dịch vụ thông báo đẩy trên web được hỗ trợ. Để đăng ký nhận thông báo đẩy cho ứng dụng, bạn cần liên kết một cặp khoá với dự án Firebase. Bạn có thể tạo một cặp khoá mới hoặc nhập cặp khoá hiện có thông qua Bảng điều khiển Firebase.

Tạo một cặp khoá mới

  1. Mở thẻ Cloud Messaging của ngăn Cài đặt trên bảng điều khiển Firebase rồi di chuyển đến phần Cấu hình web.
  2. Trong thẻ Web Push certificates (Chứng chỉ Web Push), hãy nhấp vào Generate Key Pair (Tạo cặp khoá). Bảng điều khiển sẽ hiển thị thông báo cho biết cặp khoá đã được tạo, đồng thời hiển thị chuỗi khoá công khai và ngày thêm.

Nhập một cặp khoá hiện có

Nếu đã có một cặp khoá mà bạn đang dùng với ứng dụng web, thì bạn có thể nhập cặp khoá đó vào FCM để có thể truy cập vào các phiên bản ứng dụng web hiện có thông qua API FCM. Để nhập khoá, bạn phải có quyền truy cập ở cấp chủ sở hữu vào dự án Firebase. Nhập khoá công khai và khoá riêng tư hiện có ở dạng mã hoá an toàn cho URL base64:

  1. Mở thẻ Cloud Messaging của ngăn Cài đặt trên bảng điều khiển Firebase rồi di chuyển đến phần Cấu hình web.
  2. Trong thẻ Web Push certificates (Chứng chỉ Web Push), hãy tìm và chọn văn bản liên kết "import an existing key pair" (nhập một cặp khoá hiện có).
  3. Trong hộp thoại Nhập một cặp khoá, hãy cung cấp khoá công khai và khoá riêng tư của bạn trong các trường tương ứng rồi nhấp vào Nhập. Bảng điều khiển sẽ hiển thị chuỗi khoá công khai và ngày thêm.

Để biết hướng dẫn về cách thêm khoá vào ứng dụng, hãy xem phần Định cấu hình thông tin đăng nhập trên web trong ứng dụng. Để biết thêm thông tin về định dạng của khoá và cách tạo khoá, hãy xem phần Khoá máy chủ ứng dụng.

Định cấu hình thông tin đăng nhập trên web trong ứng dụng

Phương thức getToken(): Promise<string> cho phép FCM sử dụng thông tin đăng nhập khoá VAPID khi gửi yêu cầu thông báo đến các dịch vụ thông báo đẩy khác nhau. Sử dụng khoá mà bạn đã tạo hoặc nhập theo hướng dẫn trong phần Định cấu hình thông tin đăng nhập trên web bằng FCM, hãy thêm khoá đó vào mã sau khi truy xuất đối tượng nhắn tin:

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

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

Truy cập vào mã thông báo đăng ký

Khi cần truy xuất mã thông báo đăng ký hiện tại cho một phiên bản ứng dụng, trước tiên, hãy yêu cầu người dùng cấp quyền nhận thông báo bằng Notification.requestPermission(). Khi được gọi như minh hoạ, phương thức này sẽ trả về một mã thông báo nếu được cấp quyền hoặc từ chối lời hứa nếu bị từ chối:

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

FCM yêu cầu có tệp firebase-messaging-sw.js. Trừ phi bạn đã có tệp firebase-messaging-sw.js, hãy tạo một tệp trống có tên đó và đặt tệp đó vào thư mục gốc của miền trước khi truy xuất mã thông báo. Sau này, bạn có thể thêm nội dung có ý nghĩa vào tệp trong quá trình thiết lập ứng dụng.

Cách truy xuất mã thông báo hiện tại:

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);
  // ...
});

Sau khi bạn nhận được mã thông báo, hãy gửi mã thông báo đó đến máy chủ ứng dụng và lưu trữ bằng phương thức mà bạn muốn.

Các bước tiếp theo

Sau khi hoàn tất các bước thiết lập, bạn có thể chọn một trong số các lựa chọn sau để tiếp tục sử dụng FCM cho Web (JavaScript):