【问题标题】:How to make Firebase Push Notification Increase Badge Count When Receive Notification In Flutter?在 Flutter 中接收通知时如何使 Firebase 推送通知增加徽章计数?
【发布时间】:2021-03-01 08:17:24
【问题描述】:

重要!!!

  • 请按照以下答案中的步骤进行操作!!!

B1。每个设备令牌中都包含徽章编号。

B2。应用初始化时更改此项并生成 fcm-token

FirebaseFirestore.instance.collection('fcm-token').doc(device_name).set({'device1_pt1': token_id,'number': 0});

B3。把这个放在onmessage上就调用了。(通过onlauch,onresume,onmessage)

FirebaseFirestore.instance.collection('fcm-token').doc(device_name).update({'number': 0});

【问题讨论】:

  • 如果您想将它用于多个设备,您必须在 fcm-token_device 中包含数字徽章。在每个设备上使用它
  • 嘿杰斯。感谢您分享您对这个常见问题的解决方案。 ???你能把它做成问答的形式吗?所以:写一个简单的问题,然后发布你现在的答案。这样一来,系统和 Stack Overflow 的大多数用户都不会感到困惑,并且您的帮助将惠及大多数人。
  • @FrankvanPuffelen 好的

标签: firebase flutter notifications badge


【解决方案1】:

B1。创建新的集合,如 B2。在 API(处理数据)中:

收到的数据:Data = {'token-device': String, 'body':'string'}

#从firebase读取徽章编号(在B1创建):

badge = db.collection('badge').document('count').get()._data 
badge = badge['number'] badge += 1 #increate when receive new data. 
badgedx = db.collection('badge').document('count').update({'number' : badge})
Data['badge'] = str(badge) # must be string 

保存到firestore之前的数据:Data = {'token-device': String, 'body':'string','badge':'1'}

#Save to firestore
addx = todo_ref.document() 
addx.set(Data) #save to firestore 

B3.In Firebase-Function(文件 index.js)

> Add badge number 

 var badgecount = newData['badge'];
    var options = {
        priority: "high",
        timeToLive: 60 * 60 * 24
      };
    var payload = {
        notification: {
            title: 'title',
            body: 'Phiếu khảo sát khách hàng',
            sound: 'default',
            alert: 'alert',
            badge: badgecount,
        },
        data: {
            click_action: 'FLUTTER_NOTIFICATION_CLICK',
            key1: newData['content'],
        },
    };` 

B4:在颤振中: 重置徽章编号 = 0

    _configureFirebaseListeners() {
      _firebaseMessaging.requestNotificationPermissions(
      const IosNotificationSettings(sound: true, badge: true, alert: true),
    );
    _firebaseMessaging.configure(
      
      onMessage: (Map<String, dynamic> message) async {
        print('onMessage: $message');
         _setMessage(message);
      },
      onLaunch: (Map<String, dynamic> message) async {
        print('onLaunch: $message');
         _setMessage(message);

      },
      onResume: (Map<String, dynamic> message) async {
        print('onResume: $message');
         _setMessage(message);
      },
    );
 

 }
    _setMessage(Map<String, dynamic> message)  {
      FirebaseFirestore.instance.collection('badge').doc('count').set({'number': 0});

演示:https://drive.google.com/file/d/1UIP9BPiy-gQnk6I6rEzeporZaOwkPKTk/view?usp=sharing

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 2017-05-14
    • 2013-08-07
    相关资源
    最近更新 更多