【问题标题】:Android - Force fetching new gcm-messagesAndroid - 强制获取新的 gcm 消息
【发布时间】:2014-12-01 10:44:11
【问题描述】:

我目前正在开发一个使用 gcm.js 模块来处理 GCM 消息的钛应用程序。但是在消息传递方面,GCM 似乎确实存在缺陷。我经常会延迟几个小时才收到消息,如果他们真的收到的话。

我知道 GCM 试图节省能源。但奇怪的是,GCM最不可靠,当手机通过USB连接到我的电脑时,我正在调试应用程序。在我看来,GCM 在这种情况下根本不应该尝试节省能源!当手机正在充电时,通知应立即到达。

我曾尝试发送 TTL 值为 0-10 的消息,以利用“现在或永不”效应,但这只会导致从未收到任何消息。

所以,我需要一种手动强制我的 android 手机获取新 GCM 消息的方法,这样我就可以调试收到它们时会发生什么。我没有时间等几个小时,直到手机收到消息。

有没有办法做到这一点?

PS:是的,我试过几部手机,包括 Nexus 5、Galaxy Nexus 和一些 htc 设备。到处都是一样的:/

【问题讨论】:

  • 您有没有想过不是 GCM 有问题,而问题出在 Titanium / Javascript 上?
  • @Squonk 这当然是一种可能性,但我对此表示怀疑,因为接收部分是用 Java 编写的,我认为它不会收到通知。我还尝试了另一个 gcm 模块,它具有完全不同的代码库来获取 gcm 通知,它也可以工作,但具有相同的延迟和不可靠性,这就是我切换到 gcm.js 的原因。所以我真的怀疑问题出在 gcm 模块上。这是整个 gcm 系统。

标签: android titanium google-cloud-messaging


【解决方案1】:

您可以试试这个(仅用于调试目的):
1) 确保 delay_while_idle 标志设置为 false(不建议在最终产品中将其保持为 false)。
2) 保持 TTL 不变。
3) 使用带有有效负载的消息(记住限制是 4 kb)。您可以通过删除 collapse_key 参数来设置它。
4) 现在在你的接收器中实现message_type。

我的逻辑是,您发送带有适当有效负载的消息,并且由于它仅存在 10 秒,它就会崩溃。折叠后,您可以通过message_type_deleted 获取该消息。 (同步应用以获取)

PS:我怀疑这将是一种稳定的技术,但它最有可能达到目的。

希望它有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多