在Firebase云消息传递误解中通过XMPP传递上游消息

时间:2016-06-30 21:43:57

标签: android google-cloud-messaging smack firebase-cloud-messaging

我正在尝试将FCM功能设置到我的应用中。此时,我想显示一个按钮,当用户按下按钮时,会生成上游消息,该消息将发送到Google的CCS。据我了解,此上游消息将由Google CCS转换为XMPP节。然后,它将被传送到具有我在创建上游消息时设置的ID的电话。在从谷歌阅读FCM的文档后,我发现创建上游消息非常简单:

FirebaseMessaging fm = FirebaseMessaging.getInstance();
fm.send(new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com")
.setMessageId(Integer.toString(msgId.incrementAndGet()))
.addData("my_message", "Hello World")
.addData("my_action","SAY_HELLO")
.addData()//somewhere in here must be a way to set the senderId of the phone
// i am trying to send the message to ??? 
.build());  

现在通过查看上面的代码,我看不到XMPP用于创建此上游消息。没有XMPP节创建。我的问题涉及这个XMPP节的送达地点?一旦它离开谷歌的CCS。我在类上看到了一个扩展的方法 FirebaseMessagingService调用onMessageReceived。我的理解是,在这种方法中,XMPP节将被提供。或者,它是否会在我打算设置的Smack库连接上提供,它将具有PacketListener。根据“Gronkking Android”的例子,谷歌的CCS XMPP节将在此包提交器上发布。我打算按照这个例子来接收这些即将发生的节并生成所需的确认消息。

如果有人有任何想法或想法,那么听听你的评论会很棒

谢谢

2 个答案:

答案 0 :(得分:4)

FCM不支持设备到设备消息传递。上游消息旨在通过CCS从您的移动设备转移到您的XMPP应用服务器。一旦您的XMPP应用服务器收到消息,它就可以决定通过CCS将下游消息发送到移动设备。与节有关的XMPP通信是在CCS和您的XMPP应用服务器之间完成的。

答案 1 :(得分:0)

FCM云服务适用于公司系统或银行系统等下游的PUSH通知。 否则,要完成上游消息的工作,您需要自己的XMPP应用服务器(通常在公共IP上),我没有看到任何解决方法。 FCM云服务只会转发收到的所有消息,甚至不会读取它们;通过调用FCM云服务,将所有消息路由到正确的移动设备将是应用程序服务器的职责。我想如果没有中间的FCM服务会更容易,只需在某些公共IP上使用您自己的XMPP服务器,移动设备应用程序应该像XMPP客户端一样工作。