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 trong 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 liệt kê 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 ứng dụng sử dụng 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, bạn nên sử dụng Lưu trữ Firebase. Dịch vụ này 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 sử dụng 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 SDK Firebase JS và khởi chạy Firebase.

  2. Thêm SDK JS Firebase Cloud Messaging 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 FCM Registration API cho dự án của mình trong Google Cloud Console. Khi bạn bật API, hãy đảm bảo rằng bạn đã đăng nhập vào Cloud Console bằng chính Tài khoản Google mà bạn sử dụng cho Firebase và nhớ chọn đúng dự án. Theo mặc định, các dự án mới thêm SDK FCM sẽ bật API này.

Định cấu hình Thông tin xác thực trên web bằng FCM

Giao diện Web FCM sử dụng thông tin xác thực Web có tên là "Mã nhận dạng máy chủ ứng dụng tự nguyện" hoặc khoá "VAPID" để uỷ quyền gửi yêu cầu đến các dịch vụ đẩy web được hỗ trợ. Để đăng ký ứng dụng của bạn nhận thông báo đẩy, 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 (Thông báo trên đám mây) của ngăn Settings (Cài đặt) trong bảng điều khiển Firebase rồi di chuyển đến phần Web configuration (Cấu hình web).
  2. Trong thẻ Giấy chứng nhận Web Push, hãy nhấp vào Tạo cặp khoá. Bảng điều khiển sẽ hiển thị thông báo về việc tạo cặp khoá, đồ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á hiện có mà bạn đang sử dụng với ứng dụng web, bạn có thể nhập cặp khoá đó vào FCM để có thể truy cập vào các thực thể ứng dụng web hiện có thông qua các 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 URL base64:

  1. Mở thẻ Cloud Messaging (Thông báo trên đám mây) của ngăn Settings (Cài đặt) trong bảng điều khiển Firebase rồi di chuyển đến phần Web configuration (Cấu hình web).
  2. Trong thẻ Web Push certificates (Chứng chỉ đẩy web), hãy tìm và chọn văn bản đường 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 Import a key pair (Nhập cặp khoá), hãy cung cấp khoá công khai và khoá riêng tư trong các trường tương ứng rồi nhấp vào Import (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 xác thực 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 xác thực Web trong ứng dụng

Phương thức getToken(): Promise<string> cho phép FCM sử dụng thông tin xác thực khoá VAPID khi gửi yêu cầu thông báo đến nhiều dịch vụ đẩy. 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 xác thực web bằng FCM, thêm khoá đó vào mã của bạn 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 bạn cần truy xuất mã thông báo đăng ký hiện tại cho một thực thể ứng dụng, trước tiên, hãy yêu cầu người dùng cấp quyề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 quyền được cấp 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 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. Bạn có thể thêm nội dung có ý nghĩa vào tệp này sau 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ữ mã thông báo đó bằng phương thức bạn muốn.

Các bước tiếp theo

Sau khi bạn hoàn tất các bước thiết lập, sau đây là một số tuỳ chọn để tiếp tục với FCM cho Web (JavaScript):