使用 FCM 和 Flutter 通过设备发送通知 [英] Send notification over device using FCM and Flutter

查看:119
本文介绍了使用 FCM 和 Flutter 通过设备发送通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前我正在尝试向多个设备发送通知.我已经阅读了有关如何向设备组发送通知 ,他们提到我需要使用 registration_ids: [...] 而不是 to: token.而且我还在某处读到了他们提到的 notification_key ,它可以将通知发送到其他设备.所以,我一直在寻找钥匙.但是,经过几天的浏览,我发现这里 表示 notification_key 已弃用.所以,我想问一下你们有没有人知道如何在不使用控制台的情况下向多台设备发送通知.

currently I am trying to send a notification to multiple device. I already read the documentation on how to send notification to device group , they mentioned that I need to use registration_ids: [...] instead of to: token. And I also read somewhere that they mentioned about notification_key which is it will enabled to send the notification to the other device. So, I'm stuck on finding the key. But then, after few days browsing, I found out that here stated that the notification_key already deprecated. So, I would like to ask if any of you guys know how to send notification to multiple device without using console.

这是我发送推送通知的代码段:

This I my code segment to send push the notification:

try {
  await http.post(
    Uri.parse('https://fcm.googleapis.com/fcm/send'),
    // Uri.parse('https://fcm.googleapis.com/fcm/notification'),

    headers: <String, String>{
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'key=$serverKey',
      'project_id':'....',
    },
    body: jsonEncode(
      <String, dynamic>{
        'notification': <String, dynamic>{
          'body': 'this is a body2',
          'title': 'this is a title'
        },
        'priority': 'high',
        'data': <String, dynamic>{
          'click_action':
          'FLUTTER_NOTIFICATION_CLICK',
          'id': '1',
          'status': 'done'
        },
        'registration_ids': ['fbN9aYoORhihksrTo7j5D2:APA91b......', 'fArqpgKrTJ0fL8SUKddy2F:APA91bFWf1cnVMS8.......'],
        // 'to': _token,
      },
    ),
  );
} catch (e) {
  print("error push notification");
}

如果我使用 to 而不是 registration_ids,它工作正常,但据我所知,如果我只想为一台设备发送通知,则使用 to .

It work fine if I used to instead of registration_ids, but the things is as I understand is to is used if I want to send notification only for one device.

我已经在这个问题上坚持了三天,但仍然没有找到任何解决方案.他们中的大多数人都在使用控制台.你的帮助真的会让我开心.提前致谢!

I already stuck with this issue for three days and still not found any solution. Most of them are using console instead. Your help will really made my day. Thank you in advance!

推荐答案

我找到了一个解决方案和它的工作!

I found a solution and its work!

 var serverKey =
    'AAAAUb...';
QuerySnapshot ref =
    await FirebaseFirestore.instance.collection('users').get();


try {
  ref.docs.forEach((snapshot) async {
    http.Response response = await http.post(
      Uri.parse('https://fcm.googleapis.com/fcm/send'),
      headers: <String, String>{
        'Content-Type': 'application/json',
        'Authorization': 'key=$serverKey',
      },
      body: jsonEncode(
        <String, dynamic>{
          'notification': <String, dynamic>{
            'body': 'this is a body',
            'title': 'this is a title'
          },
          'priority': 'high',
          'data': <String, dynamic>{
            'click_action': 'FLUTTER_NOTIFICATION_CLICK',
            'id': '1',
            'status': 'done'
          },
          'to': snapshot.data() ['tokenID'],
        },
      ),
    );
  });
} catch (e) {
  print("error push notification");
}

这篇关于使用 FCM 和 Flutter 通过设备发送通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆