【问题标题】:Different "from:" values received from GCM CCS server upstream msg from the same client从同一客户端的 GCM CCS 服务器上游消息接收到不同的“来自:”值
【发布时间】:2015-09-22 12:31:52
【问题描述】:

我正在使用 google (repository URL) 提供的 GCM 演示应用程序。

在我的应用服务器中接收上游 XMPP 消息时,从同一客户端接收到的连续令牌的“from”键不同,这是应该的吗?

据我了解,“from”键应始终指向客户端获取的静态 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'}

这是预期的行为还是我弄错了什么?

非常感谢任何帮助。

谢谢!

【问题讨论】:

  • 没错,只有当应用的注册令牌发生变化时,它才会发生变化。您能否检查应用是否具有相同的 reg 令牌或经常更改?
  • @KayAnn 应用程序注册令牌保持不变,但如上所述,我每次在 json 对象的 from 字段中收到不同的令牌。在这种情况下,我应该更新保存在服务器中的注册令牌还是保持不变?我可以向 From 键的值发送通知吗?在这种情况下,向 100 个不同的令牌发送通知会收到通知到设备?
  • 我不认为向 100 个令牌发送通知是必要的或有效的。您能否告诉我您是否为同一个应用请求了多个注册令牌?或者您的注册令牌之前是否已刷新多次?另外,您是否在“from”参数中得到任何重复的标记,或者它们每次都不同?
  • 我也有同样的问题,我的注册ID在整个问题期间也保持不变。会不会是播放服务库有bug?

标签: push-notification xmpp google-cloud-messaging


【解决方案1】:

好的,在对问题进行更多挖掘和调查后,似乎“发件人:”键通常在从设备接收到的每条上游消息时采用不同的值。

有时在向设备发送通知时(使用从“From:”键中获取的注册 ID),GCM 会回复 Nack 消息,表明设备已取消注册 ("DEVICE_UNREGISTERED"),所以我猜 Google 经常经过一段时间后,使“FROM:”中的注册 ID 无效。

我最终做的是将客户端应用程序从 GCM 接收到的实际令牌发送到上游消息中的服务器,并完全忽略“发件人:”键,因为它有意外行为。到目前为止,我在采用这种方法时没有遇到任何问题。

希望这对某人有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2013-03-28
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多