颤动中特定设备的Firebase消息通知

Posted

技术标签:

【中文标题】颤动中特定设备的Firebase消息通知【英文标题】:Firebase Messaging notification for specific device in flutter 【发布时间】:2020-06-26 15:13:48 【问题描述】:

我正在开发一个颤振应用程序,其中很多服务器请求都在我们的自定义服务器上实现,包括登录/注册。但是,我们决定使用 Firebase Cloud Messaging 进行通知。例如,应用程序中包含一个聊天功能。

在端到端消息传递过程中,随着消息被发布到我们的服务器,用户应该在他们的特定设备上收到通知。我已经在应用程序中成功实现和配置了firebase,并且可以从控制台发送消息,但我需要让它在特定设备上工作。

// Replace with server token from firebase console settings.
final String serverToken = '<Server-Token>';
final FirebaseMessaging firebaseMessaging = FirebaseMessaging();

Future<Map<String, dynamic>> sendAndRetrieveMessage() async 
  await firebaseMessaging.requestNotificationPermissions(
    const iosNotificationSettings(sound: true, badge: true, alert: true, provisional: false),
  );

  await http.post(
    'https://fcm.googleapis.com/fcm/send',
     headers: <String, String>
       'Content-Type': 'application/json',
       'Authorization': 'key=$serverToken',
     ,
     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': await firebaseMessaging.getToken(),
     ,
    ),
  );

这是在 Flutter 中发送消息的文档化方式。但是,这会将通知发送给所有用户,而不是单个用户。那么,如何定位特定用户呢?

【问题讨论】:

这不会向所有用户发送消息。这仅向当前设备发送消息,仅用于测试目的。您应该设置一个后端来进行正确的设备消息传递。 【参考方案1】:

我已经阅读了您想要实现的一些实现,我想您应该按照以下步骤操作:

    为 Flutter 安装 Firebase Cloud Messaging (FCM)(我看到你已经完成了) 通过调用FCM提供的“getToken”方法获取设备firebase消息令牌 当用户登录 Firebase Cloud Firestore 的文档时保存此令牌以将此设备令牌与用户相关联(或为用户创建一组令牌,以便每个用户拥有多个设备 在您的数据库上发生消息传递时进行监控。当它发生时,收集目标用户,获取与该用户关联的令牌并将一个 FCM 发送到该特定设备 ID。在这一点上,我建议您使用 Firebase Cloud Functions,尽管这可能需要服务器之间的所有数据重复(例如:您的服务器的用户名具有一些 id 并且相同的 id “存在”在 Firestore 内的某些 noSQL 文档中)

希望对您有所帮助。我没有提供任何代码,因为我相信这不是您要搜索的内容。

【讨论】:

【参考方案2】:

你需要改变

'to': await firebaseMessaging.getToken(),

'to': '$token of specific devices',.

【讨论】:

以上是关于颤动中特定设备的Firebase消息通知的主要内容,如果未能解决你的问题,请参考以下文章

设备未收到 Firebase 云消息通知

使用 NodeJs 服务器中的 firebase 云消息在特定时间和日期安排通知

如何在 iOS 中使用 Google Firebase 向特定用户发送推送通知?

设备未收到Firebase云消息传递通知

如何在不使用 Firebase 控制台的情况下向 iOS 设备发送 Firebase 云消息通知?

类在firebase消息颤动上找不到异常