我正在尝试通过Smack库验证我与Firebase-Cloud-Messaging的连接。我看到我的连接从谷歌得到了一个streamId,因为我在我的Android Studio IDE上记录了这条消息: Log.d("MyStreamId","Ddd:"+ connection.getStreamId());我的日志返回一个随机的字母数字,所以这意味着谷歌的CCS注意到了我的连接尝试。现在,根据这个链接:https://firebase.google.com/docs/cloud-messaging/server#connecting必须有某种类型的通信交换,以便验证我的“应用服务器”和谷歌的CCS之间的连接。我正在尝试开始使用XML格式化的通信。
我需要构造以下"xml流“,并使用Smack库将其与我的连接一起发送:
<stream:stream to="gcm.googleapis.com"
version="1.0" xmlns="jabber:client"
xmlns:stream="http://etherx.jabber.org/streams">我要做的是创建一个带有以下键的HashMap:" to ","version","xmlns“。我是不是错过了这个HashMap中的另一个密钥?
另外,之后我应该如何继续呢?我应该把这个HashMap转换成某个Json对象吗?我以前在Android Studio上使用过JSON。我是否应该使用Smack Library toXML()中的方法将HashMap转换为流?注意XML对象上的标记。另外,如何使用我的connection对象(即XMPPAbstractConnection对象)将其发送到Google的CCS?我的connection对象也有一个addAsyncStanzaListener对象,希望从Google的CCS接收双向通信。
任何想法或想法都将受到感谢。
谢谢
发布于 2016-07-04 22:10:33
您在这里提出了一些问题,但我认为您可能误解了将XMPP与FCM一起使用的预期设计。我会试着纠正这一点,你可以改进你的问题。
一般来说,您不应该在Android客户端上使用XMPP。其思想是在您的应用服务器上使用XMPP客户端连接到CCS并与CCS通信。Android将在设备和FCM之间保持一个尽力而为的连接,请注意,这不能像它在您的服务器上那样持续打开连接,因为这会耗尽设备的电池。
https://stackoverflow.com/questions/38174094
复制相似问题