我正在使用谷歌(repository URL)提供的GCM演示应用程序。
在我的应用服务器中接收上游XMPP消息时,从同一客户端收到的连续令牌的“来自”键不同,它应该是怎么回事?
根据我的理解,“来自”键应始终指向客户端获取的静态GCM注册ID,因此不应更改(至少每个上游消息!)。
以下是从应用程序中收到的3个连续上游消息转换为json:
{u'category': u'com.google.android.gcm.demo', u'time_to_live': 86400, u'from': u'djrWhYFOLtE:APA91bE4kY9ZdM3N0RAQMJFqedDuTFQsTU6sdhbvJ-zEIWTwzw0kFLs_B05XZ-TgH_5y21VgqAXpWig59EZCSAaSBWKVjUFs-zFLG51uygvWMG6LBh_39IM', u'message_id': test1'}
{u'category': u'com.google.android.gcm.demo', u'time_to_live': 86400, u'from': u'djrWhYFOLtE:APA91bHLqazSKrZGUUEPvMkIKdtWCVIxhdYILfPLeguPR_yDUrProRsCfeP3LQiFzR1o0-Ha-BUMor6pTxKuWmUr9zpE6hIZGEkDV2pcQDJSZUKH3DX91wE', u'message_id': test2'}
{u'category': u'com.google.android.gcm.demo', u'time_to_live': 86400, u'from': u'djrWhYFOLtE:APA91bHAROejFamp-8qwFddOKmUl_EYc_A9HdwnB8ojkUIRX-5kFCjHsnIDQIFa-kWMOdE3NpqU643nTrQnzPFcswTFgd7wBo0KnAub29EEyGP3R01njxz8', u'message_id': test3'}
这是预期的行为还是我误会了什么?
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
好的,经过多一点挖掘和调查问题后,似乎“From:”键通常对从设备收到的每个上游消息采用不同的值。
有时,当向设备发送通知时(使用从“发件人:”键中取得的注册ID),GCM会回复Nack
消息,表明设备已注销("DEVICE_UNREGISTERED")
,因此我猜Google经过一段时间后经常会使“FROM:”中的注册ID无效。
我最终做的是将客户端应用程序从GCM收到的实际令牌发送到上游消息中的服务器,并完全忽略“From:”键,因为它有意外行为。到目前为止,我还没有采取任何问题。
希望这有助于某人:)