API JavaScript FCM cho phép bạn nhận nội dung thông báo trong các ứng dụng web chạy trên các trình duyệt có hỗ trợ API đẩy. Đ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 của Chrome thông qua API đẩy.
SDK FCM chỉ được hỗ trợ trong các trang được phân phát qua HTTPS. Điều này là do tính năng này sử dụng worker dịch vụ, chỉ có trên các trang web HTTPS. Nếu cần một nhà cung cấp, bạn nên dùng Lưu trữ Firebase và cung cấp một bậc miễn phí để lưu trữ HTTPS trên miền của 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
Nếu chưa, hãy cài đặt SDK Firebase JS và khởi chạy Firebase.
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 dành 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 trong Google Cloud Console. Khi bật API này, hãy đảm bảo 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
- Mở thẻ Gửi thông báo qua đám mây trong ngăn Cài đặt của bảng điều khiển Firebase rồi di chuyển đến phần Cấu hình web.
- Trong thẻ Web Push Certificate (Chứng chỉ về thông báo đẩy trên web), hãy nhấp vào Generate Key Play (Tạo cặp khoá). Bảng điều khiển sẽ hiện 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á 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:
- Mở thẻ Gửi thông báo qua đám mây trong ngăn Cài đặt của bảng điều khiển Firebase rồi di chuyển đến phần Cấu hình web.
- Trong thẻ Web Push Certificate (Chứng chỉ về thông báo đẩy trên web), hãy tìm và chọn văn bản đường liên kết "nhập một cặp khoá hiện có".
- Trong hộp thoại Import a key pair (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 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 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 thông báo bằng Notification.requestPermission()
.
Khi được gọi như minh hoạ, hàm 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.
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ữ 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):
- Thêm chức năng vào ứng dụng để nhận tin nhắn.
- Hãy thử một trong các hướng dẫn của chúng tôi: Gửi tin nhắn đầu tiên đến ứng dụng chạy trong nền hoặc Gửi tin nhắn đến nhiều thiết bị.
- Xem xét mẫu hoàn chỉnh trên GitHub.
- Xem lại tài liệu tham khảo về JavaScript.
- Xem video hướng dẫn từng bước về cách triển khai API.