3

昨天Google宣布了一组新的Firebase工具,其中一个是通知功能,可以将通知从服务器发送到正在使用我的应用的设备。通过Firebase发送推送通知

但是,我们现在可以在用户收到新消息时通知用户吗?

如果不是,是否有办法实现这一目标?

+2

如果您的意思是来自其他用户的新消息,那么我也想知道这一点。看看文档,它看起来像这仍然不可能自动。我认为你需要让另一台服务器检查每条发送的消息,然后创建一个标有收件人用户标识的通知。然后您将收件人订阅到它自己的用户标识标签。检查[link](https://firebase.google.com/docs/notifications/android/console-topics#receive_topic_messages_on_an_android_client_app) – user2997154

+1

在docs @ user2997154中寻找巨大狩猎。如果你把它写成答案,我会赞成。 :-) –

回答

5

看看文档,这似乎目前不可能自动。下面是完成它的一种可能方式 “手动” 与其他服务器:

  1. 用户订阅它自己的用户ID

在安卓

FirebaseMessaging.getInstance().subscribeToTopic("InsertUserIDHere"); 

在IOS

[[FIRMessaging messaging] subscribeToTopic:@"/topics/InsertUserIDHere"]; 
  1. 设置外部服务器检查每发送一条消息。发送邮件时,服务器应创建一个通知,其中包含收件人的用户标识作为主题。

请看here了解更多信息。

+0

辉煌!我有两个问题,如果我可以。首先,我们如何使用其他服务器发送通知,Firebase只允许通过控制台发送通知。其次,如果我有很多用户,它会高效吗?文档中提到“在控制台中显示新主题之前可能会延迟多达一天”。谢谢。 – Khaled

+0

不理我最后的评论。看看[这里](https://firebase.google.com/docs/cloud-messaging/topic-messaging),了解更多有关通过服务器发送消息而不使用控制台的信息。如果您不使用控制台,我不确定延迟是否仍然适用。 – user2997154

1

您可以将消息发送给用户组(定位特定“主题”)或发送到单个设备(定位到Firebase云消息传递令牌)。

要订阅一个设备到主题使用:

FirebaseMessaging.getInstance().subscribeToTopic("topicName"); 

要获得设备令牌使用(* 1):

FirebaseInstanceId.getInstance().getToken(); 

然后你可以使用火力地堡Notificaitons Web控制台,或FCM服务器API,如果你想从你的服务器发送消息。
见:https://firebase.google.com/docs/cloud-messaging/downstream#sending_topic_messages_from_the_server


注:

[1] getToken()可以返回null如果令牌是尚未公布。
您可以使用回调onTokenRefresh()在令牌可用时以及令牌旋转时进行通知。
请参阅:https://firebase.google.com/docs/cloud-messaging/android/client#sample-register