Hãy làm theo các bước sau để thiết lập ứng dụng FCM trên Flutter.
Yêu cầu và cách thiết lập theo nền tảng
Một số bước bắt buộc tuỳ thuộc vào nền tảng mà bạn đang nhắm đến.
iOS trở lên
Bật các tính năng của ứng dụng trong Xcode
Trước khi ứng dụng của bạn có thể bắt đầu nhận thông báo, bạn phải bật thông báo đẩy và chế độ nền trong dự án Xcode.
- Mở không gian làm việc của dự án Xcode (
ios/Runner.xcworkspace
). - Bật thông báo đẩy.
- Bật Tìm nạp ở chế độ nền và Thông báo từ xa chế độ thực thi ở chế độ nền.
Tải khoá xác thực APN lên
Trước khi sử dụng FCM, hãy tải chứng chỉ APN lên Firebase. Nếu bạn chưa có chứng chỉ APNs, hãy tạo một chứng chỉ trong Trung tâm thành viên dành cho nhà phát triển của Apple.
- Trong dự án của bạn trên bảng điều khiển Firebase, hãy chọn biểu tượng bánh răng, chọn Project Settings (Cài đặt dự án), sau đó chọn thẻ Cloud Messaging (Thông báo trên đám mây).
- Chọn nút Tải chứng chỉ lên cho chứng chỉ phát triển, chứng chỉ phát hành công khai hoặc cả hai. Bạn phải có ít nhất một.
- Đối với mỗi chứng chỉ, hãy chọn tệp .p12 và cung cấp mật khẩu (nếu có). Đảm bảo mã nhận dạng gói cho chứng chỉ này khớp với mã nhận dạng gói của ứng dụng. Chọn Lưu.
Thay đổi phương thức
Để sử dụng trình bổ trợ Flutter FCM trên các thiết bị của Apple, bạn không được tắt tính năng hoán đổi phương thức. Bạn phải thực hiện việc hoán đổi, nếu không, các tính năng chính của Firebase như xử lý mã thông báo FCM sẽ không hoạt động đúng cách.
Android
Dịch vụ Google Play
Ứng dụng FCM yêu cầu thiết bị chạy Android 4.4 trở lên và cũng đã cài đặt Dịch vụ Google Play, hoặc trình mô phỏng chạy Android 4.4 với API của Google. Xin lưu ý rằng bạn không bị giới hạn trong việc triển khai ứng dụng Android thông qua Cửa hàng Google Play.
Các ứng dụng dựa vào SDK Dịch vụ Play phải luôn kiểm tra thiết bị để tìm tệp APK Dịch vụ Google Play tương thích trước khi truy cập vào các tính năng của Dịch vụ Google Play. Bạn nên thực hiện việc này ở hai vị trí: trong phương thức onCreate()
của hoạt động chính và trong phương thức onResume()
của hoạt động đó. Bước kiểm tra trong onCreate()
đảm bảo rằng người dùng không thể sử dụng ứng dụng nếu không kiểm tra thành công. Bước kiểm tra trong onResume()
đảm bảo rằng nếu người dùng quay lại ứng dụng đang chạy thông qua một số phương tiện khác, chẳng hạn như thông qua nút quay lại, thì bước kiểm tra vẫn được thực hiện.
Nếu thiết bị không có phiên bản Dịch vụ Google Play tương thích, thì ứng dụng của bạn có thể gọi GoogleApiAvailability.makeGooglePlayServicesAvailable()
để cho phép người dùng tải Dịch vụ Google Play xuống từ Cửa hàng Play.
Web
Định cấu hình Thông tin xác thực web bằng FCM
Giao diện web của FCM sử dụng thông tin xác thực web có tên là khoá "Mã nhận dạng máy chủ ứng dụng tự nguyện" hoặc "VAPID" để cho phép 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ẻ Thông báo trên đám mây của ngăn Cài đặt trong bảng điều khiển Firebase rồi di chuyển đến phần Cấu hình web.
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 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ẻ Thông báo trên đám mây của ngăn Cài đặt trong bảng điều khiển Firebase rồi di chuyển đến phần Cấu hình web.
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ó).
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 hiển thị chuỗi khoá công khai và ngày thêm.
Để 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.
Cài đặt trình bổ trợ FCM
Cài đặt và khởi chạy các trình bổ trợ Firebase cho Flutter nếu bạn chưa thực hiện.
Từ thư mục gốc của dự án Flutter, hãy chạy lệnh sau để cài đặt trình bổ trợ:
flutter pub add firebase_messaging
Sau khi hoàn tất, hãy tạo lại ứng dụng Flutter:
flutter run
Truy cập vào mã thông báo đăng ký
Để gửi thông báo đến một thiết bị cụ thể, bạn cần biết mã thông báo đăng ký của thiết bị đó. Vì bạn cần nhập mã thông báo vào một trường trong bảng điều khiển Thông báo để hoàn tất hướng dẫn này, hãy nhớ sao chép mã thông báo hoặc lưu trữ mã thông báo một cách an toàn sau khi truy xuất.
Để truy xuất mã đăng ký hiện tại cho một thực thể ứng dụng, hãy gọi getToken()
. Nếu bạn chưa cấp quyền gửi thông báo, phương thức này sẽ yêu cầu người dùng cấp quyền gửi thông báo. Nếu không, hàm này sẽ trả về một mã thông báo hoặc từ chối tương lai do lỗi.
// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);
// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
// APNS token is available, make FCM plugin API requests...
}
Trên các nền tảng web, hãy truyền khoá công khai VAPID của bạn đến getToken()
:
final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");
Để nhận thông báo mỗi khi mã thông báo được cập nhật, hãy đăng ký luồng onTokenRefresh
:
FirebaseMessaging.instance.onTokenRefresh
.listen((fcmToken) {
// TODO: If necessary send token to application server.
// Note: This callback is fired at each app startup and whenever a new
// token is generated.
})
.onError((err) {
// Error getting token.
});
Ngăn khởi chạy tự động
Khi mã thông báo đăng ký FCM được tạo, thư viện sẽ tải lên giá trị nhận dạng và dữ liệu cấu hình lên Firebase. Nếu bạn muốn ngăn việc tự động tạo mã thông báo, hãy tắt tính năng tự động khởi chạy tại thời điểm tạo bản dựng.
iOS
Trên iOS, hãy thêm một giá trị siêu dữ liệu vào Info.plist
:
FirebaseMessagingAutoInitEnabled = NO
Android
Trên Android, hãy tắt tính năng thu thập Analytics và khởi chạy tự động FCM (bạn phải tắt cả hai) bằng cách thêm các giá trị siêu dữ liệu này vào AndroidManifest.xml
:
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
Bật lại tính năng tự động khởi chạy FCM trong thời gian chạy
Để bật tính năng tự động khởi tạo cho một thực thể ứng dụng cụ thể, hãy gọi setAutoInitEnabled()
:
await FirebaseMessaging.instance.setAutoInitEnabled(true);
Giá trị này sẽ được giữ nguyên sau khi khởi động lại ứng dụng.
Các bước tiếp theo
Sau khi thiết lập ứng dụng khách, bạn có thể bắt đầu gửi thông báo xuống dòng bằng Trình soạn thông báo. Xem phần Gửi tin nhắn kiểm thử đến một ứng dụng chạy ở chế độ nền.
Để thêm các hành vi nâng cao khác vào ứng dụng, bạn cần triển khai máy chủ.
Sau đó, trong ứng dụng khách: