在 Flutter 应用上向用户发送独特的 Firebase 推送通知

Posted

技术标签:

【中文标题】在 Flutter 应用上向用户发送独特的 Firebase 推送通知【英文标题】:Send unique Firebase push notifications to users on Flutter app 【发布时间】:2019-12-29 20:27:05 【问题描述】:

我有一个 Flutter 应用程序,它连接到基于 Laravel 构建的数据库。本质上,我们的用户将拥有个人资料,他们的个人资料将与某些类型的帖子相匹配。每当添加新帖子时,我们希望能够找到与该帖子匹配的所有用户,并向他们发送推送通知,告知他们已与新添加的帖子匹配。

理论上,我正在寻找一种很好的方法来做到这一点,因为我现在有点不知所措,对 Firebase 和推送通知没有太多经验。

【问题讨论】:

【参考方案1】:

要向您的用户订阅的相关主题发送推送通知:

final FirebaseMessaging _fcm = FirebaseMessaging();

...

FlatButton(
    child: Text('I like puppies'),
    onPressed: () => _fcm.subscribeToTopic('puppies');,
),

FlatButton(
    child: Text('I hate puppies'),
    onPressed: () => _fcm.unsubscribeFromTopic('puppies');,
),

在后端(NodeJS):

export const sendToTopic = functions.firestore.document('puppies/puppyId').onCreate(async snapshot => 
const puppy = snapshot.data();

const payload: admin.messaging.MessagingPayload = 
  notification: 
    title: 'New Puppy!',
    body: `$puppy.name is ready for adoption`,
    icon: 'your-icon-url',
    click_action: 'FLUTTER_NOTIFICATION_CLICK' // required only for onResume or onLaunch callbacks
  
;

return fcm.sendToTopic('puppies', payload););

有一个很好的教程如何做到这一点:link

【讨论】:

您好,感谢您的回复!如果在我的情况下,用户有更具体的标准来匹配帖子怎么办?我们以工作为例。用户选择的标准不止一个,可以帮助他们匹配工作。这不可能吗? 现在很难说。也许你的订阅应该像“post_economics”、“post_business”等等+后端有很多条件根据这些类型发送或不发送推送通知【参考方案2】:

我没有丰富的后端经验,但我可以提供两种方法。

我们希望能够找到与该帖子匹配的所有用户

A.您应该为每个帐户存储 FCM 令牌,并将用户与相关帖子绑定。当您发现帖子匹配时。使用firebase-admin 发送通知。您应该拥有与数据库中的 FCM 令牌具有一对一关系的用户。

B.更高级的,你可以将一堆相关用户注册到某个topic,然后作为广播发送一次。

再次,我不认为我的方法是使用 FCM 的最佳实践,如果有任何错误,请发表评论或回答!

【讨论】:

以上是关于在 Flutter 应用上向用户发送独特的 Firebase 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在 websocket 服务器上向特定用户发送消息

在 Spring Websocket 上向特定用户发送消息

如何在 iOS 设备上向 Web 应用程序发送推送通知?

是否有事件或其他方式来处理用户在 Facebook Messenger 平台上向机器人发送的第一条消息?

如何在 Android 上向用户付款

在服务器事件上向客户端发送信息