Firebase Cloud Messaging (FCM)
- Fcm là dịch vụ push notification miễn phí của Firebase, cho phép gửi thông báo từ server đến Android, IOS và Web.
Cơ chế hoạt động
- App lấy FCM registration Token -> FirebaseMessaging.instance.getToken().
- Gửi FCM token lên server. -> Server lưu token để gửi thông báo sau này.
- Server gửi thông báo qua Firebase -> Firebase gửi đến thiết bị dựa vào token.
- App nhận và hiển thị thông báo.
Loại thông báo
- Notification Message -> Firebase tự xử lý hiển thị khi app ở background/terminated.
- Data Message -> App tự xử lý, nhận trong foreground/background.
Các thành phần chính
- FCM Token → Mỗi thiết bị có một token duy nhất.
- Topic Messaging → Gửi đến nhóm thiết bị (/topics/news).
- Device Group Messaging → Gửi đến nhiều thiết bị của một user.
- Condition Messaging → Gửi theo điều kiện ('topic1' in topics && 'topic2' in topics).
Yêu cầu
Quyền
- Trên Android
<manifest>
<!-- Android 13 (API 33) trở lên-->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- Khi muốn tự xử lý data message ở background hoặc terminated-->
<!-- Nếu payload chỉ chứa data, Firebase không tự hiển thị thông báo.-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
</manifest>
- Trên IOS
- Từ IOS 15 trở đi không cần khai báo quyền thông báo trong mã.
Gửi thông báo
- FCM trên iOS yêu cầu Apple Push Notification service (APNs) nên cần phải có tài khoản Apple
Developer để tạo và gửi APNs Key (định dạng
.p8
) lên Firebase.
Lưu ý
-
Hiển thị thông báo
- FCM sẽ tự động hiển thị thông báo khi app ở background/terminated và Payload có chứa
notification
, có thể tuỳ chỉnh nếu muốn. Trên iOS, đảm bảo app đã yêu cầu quyền thông báo. - Nếu muốn hiển thị trong foreground, cần custom UI (Dialog, Snackbar, Toast...) hoặc dùng flutter_local_notifications.
- FCM sẽ tự động hiển thị thông báo khi app ở background/terminated và Payload có chứa
-
Thông tin cần gửi lên Server để thiết lập thông báo.
- Gửi lên server các thông tin: deviceId và fcmToken.
- deviceId:
- giúp server quản lý thiết bị và cập nhật token.
- hỗ trợ đăng xuất và chặn thiết bị spam.
-
Lấy FCM Token
- Không cần quyền thông báo để lấy FCM Token.
- Bắt buộc xin quyền thông báo mới nhận được APN Token.
-
Thời hạn của FCM Token
FCM Token thay đổi khi:
- Ứng dụng được khôi phục trên thiết bị mới.
- Người dùng gỡ cài đặt hoặc cài đặt lại ứng dụng.
- Người dùng xoá dữ liệu ứng dụng.