我开发了一个使用 C2DM 推送通知的应用程序。只要我连接到 GSM/3G 网络,一切都正常,但当我切换到 WiFi 时,它并不总是有效,我也收不到推送通知。
我了解有关 WiFi 和推送(防火墙等)的技术问题。
我的问题是是否有任何智能解决方案(是的,我知道我可以在我的应用程序中切换到“轮询”)。是否可以同时使用 GSM/3G 和 WiFi,或者 Android 在连接 WiFi 时已经这样做了吗?
/亨里克
最佳答案
今年我与 C2DM 打过很多交道,我看到了您描述的问题。我也听说 iOS 设备会发生这种情况。我有时发现推送失败,将设备置于飞行模式并再次退出以重新启用推送消息接收。
但无论如何,在我们的案例中,解决方案有两个方面:
将设备替换为可以通过 wifi 维持推送消息连接的设备。在我们的案例中,我们有一个特别容易出现问题的测试设备。
建立轮询机制作为 C2DM 的(慢速)备份。这显然意味着更多的努力、更多的代码、更多的电池和数据使用,但在我们的例子中,即使 C2DM 存在一些问题,最终的应用程序也非常可靠。
我的经验是,C2DM 总体上很棒,当它工作时它非常非常快,但由于各种原因它大约有 5-10% 的时间失败,因此任何完全依赖它的应用程序都可能成为一个不可靠的应用程序。
您不能同时使用 3G 和 wifi - 设备将一次连接到一个网络。
如果您的应用绝对 100% 需要接收消息,我认为您别无选择,只能构建自己的轮询,但也许做一个缓慢的轮询以减少资源使用,因此您的应用始终有效,但推送只是添加速度的好处。
关于android - 如何让 C2DM 推送通知与启用的 WiFi 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399263/