如何将心跳发送到 GCM 服务器
Posted
技术标签:
【中文标题】如何将心跳发送到 GCM 服务器【英文标题】:How can I send Heartbeat to GCM Server 【发布时间】:2015-01-28 10:16:00 【问题描述】:如何向 GCM 服务器发送心跳。这样我们就可以保持连接活跃。
我使用以下代码向 GCM 服务器发送心跳。
mContext.sendBroadcast(new Intent("com.google.android.intent.action.GTALK_HEARTBEAT"));
mContext.sendBroadcast(new Intent("com.google.android.intent.action.MCS_HEARTBEAT"));
但它再次延迟了消息。
在长时间的空闲状态后,我向我的应用和 gmail 应用发送了一条通知。 Gmail 应用会及时收到通知,而我的应用没有。
它是如何发生的。 AFAIK GCM 使用端口 5228 接收消息。那为什么gmail按时收到消息,而我的应用程序在很长一段时间后才收到消息。
我应该怎么做才能准时收到消息。
【问题讨论】:
告诉消息提前几分钟离开以避免高峰时段的交通? ..."on time"
是什么意思?
当我发送邮件时,Gmail 应用程序会立即显示通知。但是当我向我的应用程序发送通知时,需要一些时间才能收到通知
【参考方案1】:
想到的几个解决方案:
-
您是否尝试将 delay_while_idle 标志设置为 false?
您可以通过广播以下意图来强制 android 自己发送心跳。
com.google.android.intent.action.MCS_HEARTBEAT com.google.android.intent.action.GTALK_HEARTBEAT
希望这对你有用。
【讨论】:
我在服务器端完成的第一个解决方案,我的问题中已经提到了第二个解决方案.. 两者都不适合我。以上是关于如何将心跳发送到 GCM 服务器的主要内容,如果未能解决你的问题,请参考以下文章