我一直在尝试阅读有关如何将消息从一台设备发送到另一台设备的官方文档和指南。我已将两台设备的注册令牌保存在实时数据库中,因此我拥有另一台设备的注册令牌。我尝试了以下方法发送消息
RemoteMessage message = new RemoteMessage.Builder(getRegistrationToken())
.setMessageId(incrementIdAndGet())
.addData("message", "Hello")
.build();
FirebaseMessaging.getInstance().send(message);
但是这不起作用。另一个设备没有收到任何消息。我甚至不确定,如果我可以使用上游消息发送进行设备到设备的通信。
- PS:**我只是想知道设备到设备的消息传递是否可以使用FCM?如果可以,那么我使用的代码是否有问题?如果可以,那么正确的方法是什么?
- 更新日期:**
我的问题是问是否设备到设备的消息传递不使用任何单独的服务器以外的firebase可以消息传递是可能的或不可能的,如果是比如何,因为没有关于它的文档.我不明白还有什么要解释这里?无论如何,我得到了答案,并会更新它作为一个答案,一旦问题得到重新开放.
5条答案
按热度按时间jjjwad0x1#
Firebase有两个向设备发送消息的功能:
Firebase documentation直观地显示了这一点:
Firebase Cloud Messaging客户端SDK不支持将消息从一台设备直接发送到另一台设备。
wsewodh22#
Frank的回答是正确的,
Firebase
本身不支持设备到设备的消息传递,但是其中有一个漏洞。Firebase服务器无法识别您是从实际的服务器发送请求还是从您的设备发送请求。因此,您只需将
Post Request
与服务器密钥一起发送到Firebase
的消息传递服务器。请记住,服务器密钥不应位于设备上,但如果您希望使用Firebase Messaging进行设备到设备的消息传递,则没有其他选项。我使用OkHTTP而不是默认的方式调用Rest API。代码如下所示-
我希望Firebase将来会有更好的解决方案,但在此之前,我认为这是唯一的方法,另一种方法是发送主题消息或组消息,但这不在问题的范围之内。
JSONArray的定义如下:
regIds是一个包含注册ID的字符串数组,您希望将此消息发送到这些ID。请记住,注册ID必须始终位于数组中,即使您希望将其发送到单个收件人。
hmae6n7t3#
我也一直在我的原型中使用直接设备到设备的gcm消息传递。它一直工作得很好。我们没有任何服务器。我们使用sms/text交换GCM reg id,然后使用GCM进行通信。我在这里放了与GCM处理相关的代码
*发送GCM消息
*正在接收GCM消息
gopyfrb34#
根据在
October 2, 2018
上更新的新文档,您必须发送以下发布请求要获取设备的注册令牌,请扩展
FirebaseMessagingService
并覆盖onNewToken(String token)
有关更多信息,请参阅doc https://firebase.google.com/docs/cloud-messaging/android/device-groupflvlnr445#
我迟到了,但上面的解决方案帮助我写下了这个简单的答案,你可以直接发送你的消息到Android设备从Android应用程序,这里是我做了简单的实现,它对我来说很好.
1.编译android volley库
1.只是复制粘贴这个简单的功能;)你的生活会变得像黄油里的刀一样光滑。
注意如果要将消息发送到主题,以便可以将参数instanceIdToken更改为类似**/topics/topicName的内容。对于组**,实现是相同的,但您只需要注意参数。checkout Firebase documentation and you can pass those parameters.如果遇到任何问题,请告诉我。