android - 如何让 C2DM 推送通知与启用的 WiFi 一起工作?

标签 android wifi push android-c2dm

我开发了一个使用 C2DM 推送通知的应用程序。只要我连接到 GSM/3G 网络,一切都正常,但当我切换到 WiFi 时,它并不总是有效,我也收不到推送通知。

我了解有关 WiFi 和推送(防火墙等)的技术问题。

我的问题是是否有任何智能解决方案(是的,我知道我可以在我的应用程序中切换到“轮询”)。是否可以同时使用 GSM/3G 和 WiFi,或者 Android 在连接 WiFi 时已经这样做了吗?

/亨里克

最佳答案

今年我与 C2DM 打过很多交道,我看到了您描述的问题。我也听说 iOS 设备会发生这种情况。我有时发现推送失败,将设备置​​于飞行模式并再次退出以重新启用推送消息接收。

但无论如何,在我们的案例中,解决方案有两个方面:

  1. 将设备替换为可以通过 wifi 维持推送消息连接的设备。在我们的案例中,我们有一个特别容易出现问题的测试设备。

  2. 建立轮询机制作为 C2DM 的(慢速)备份。这显然意味着更多的努力、更多的代码、更多的电池和数据使用,但在我们的例子中,即使 C2DM 存在一些问题,最终的应用程序也非常可靠。

我的经验是,C2DM 总体上很棒,当它工作时它非常非常快,但由于各种原因它大约有 5-10% 的时间失败,因此任何完全依赖它的应用程序都可能成为一个不可靠的应用程序。

您不能同时使用 3G 和 wifi - 设备将一次连接到一个网络。

如果您的应用绝对 100% 需要接收消息,我认为您别无选择,只能构建自己的轮询,但也许做一个缓慢的轮询以减少资源使用,因此您的应用始终有效,但推送只是添加速度的好处。

关于android - 如何让 C2DM 推送通知与启用的 WiFi 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399263/

相关文章:

ios - 在 Webview 中打开指定的 URL(iOS 推送)

android - 我如何检查android中的网络连接?

Git fetch/pull 仅在连接到特定 wifi 时才起作用?

javascript - 检查数组中的唯一性,如果唯一则推送到数组

javascript - WebView 在 Android 上无法正常工作

android - 如何使用圆形进度条添加数组颜色

Android 位置监听器不起作用

android - eclipse android logcat 显示一切

linux - 简单通用即插即用 ( uPNP ) 在网络上查找 Raspberry Pi

iOS PUSH 通知类型选项?警报与横幅?