Gửi thông báo thông qua Firebase Cloud Messaging(FCM)

Hiện nay tính năng gửi thông báo trên ứng dụng di động khá quan trọng trong việc phát triển sản phẩm phần mềm, bài viết này mình sẽ hướng dẫn các bạn sử dụng Firebase Cloud Messaging(FCM) để gửi thông báo trên ứng dụng Flutter.

Bước 1: Tạo tài khoản Firebase tại Link

Bước 2: Sau khi tạo tài khoản firebase truy cập vào console tại Link , tạo 1 project mới.

Bước 3: Truy cập Messaging => tạo Android và IOS App

Ở bước này khi tạo app firebase đã đưa ra các step chi tiết nên bạn chỉ cần làm theo các bước hiện trên giao diện.

Android

IOS

Note: Riêng với IOS Bạn sẽ cần thiết lập APNs Authentication Key thì mới có thể nhận thông báo được tham khảo bài viết tại Link.

Bước 4: Trên project bạn cần setup các chế độ để lắng nghe thông báo

Nhận thông báo trên nền, lưu ý hàm _firebaseMessagingBackgroundHandler là hàm cấp cao nhất và nó không nằm trong lớp nào:

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();
  print('Handling a background message ${message.messageId}');
}
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

Nhận thông báo khi đang ở chế độ Foreground

FirebaseMessaging.onMessage.listen((RemoteMessage message) {
// xử lý khi nhận được thông báo
});

Nhận thông báo khi đang mở App

FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
// xử lý khi nhận được thông báo
});

Request các quyền thông báo

  FirebaseMessaging.instance.requestPermission(
      alert: true,
      announcement: true,
      badge: true,
      sound: true,
      provisional: true,
      carPlay: true,
      criticalAlert: true,
    );

Các bạn có thể tham khảo thêm hướng dẫn cài đặt và sử dụng thư viện messaging của flutter tại Link: https://pub.dev/packages/firebase_messaging

Bước 5: Gửi message từ payload

URL: https://fcm.googleapis.com/fcm/send

Header:

  • Content-Type:application/json
  • Authorization:key=”SERVER API KEY”

SERVER API KEY: bạn có thể lấy tại: Console Firebase => Project settings => Cloud Messaging => Project Credentials => Server Key

Body

{
    "notification": {
        "body": "This is an FCM notification message!",
        "title": "FCM Message",
        "sound": "Tri-tone"
    },
    "priority": "high",
    "data": {
        "click_action": "FLUTTER_NOTIFICATION_CLICK",
        "id": "1",
        "status": "done"
    },
    "apns": {
        "payload": {
            "aps": {
                "badge": 9
            },
            "messageID" : "ABCDEFGHIJ"
        }
    },
    "to": "TOKEN CLIENT"
}

TOKEN CLIENT: là token của thiết bị bạn muốn gửi tới, bạn có thể sử dụng câu lệnh sau để lấy device token:

String? token = await FirebaseMessaging.instance.getToken();