如何使C2DM推送通知与WiFi同时启用?

3
我开发了一个应用程序,使用C2DM推送通知。只要我连接到GSM/3G网络,一切都正常,但当我切换到WiFi时,它并不总是有效,我无法接收推送通知。
我理解在WiFi和推送方面存在技术问题(如防火墙等)。
我的问题是是否有任何聪明的解决方案(是的,我知道我可以在我的应用程序中切换到“轮询”)。是否可以同时使用GSM/3G和WiFi,或者当连接到WiFi时,Android已经在执行此操作?
/ Henrik

C2DM在我使用WiFi时可以正常工作...据我所知,C2DM也是内部使用轮询的,但当只有一个服务在轮询时,对设备更好,这就是为什么他们将C2DM公开(在2.2之前,他们在市场/其他谷歌应用中内部使用它)...所以唯一的问题是你的WiFi网络,它不允许设备连接到谷歌服务器(标准的http/https端口,我想)... - Selvin
2个回答

4

我今年已经与C2DM合作了很多次,我也看到了你描述的问题。我也听说过这种情况会发生在iOS设备上。有时我发现推送失败了,将设备切换到飞行模式然后再切回来就可以重新启用推送消息接收。

但无论如何,在我们的情况下解决方案是双重的:

  1. 用一个可以通过wifi保持推送消息连接的设备替换掉原有设备。在我们的情况下,我们有一个测试设备特别容易出现这个问题。

  2. 建立一个轮询机制作为C2DM的(慢速)备份。显然,这意味着需要更多的努力、代码、电池和数据使用,但在我们的情况下,由于这个原因产生的应用程序非常可靠,即使遇到C2DM的一些问题也是如此。

我的经验是,总体而言C2DM很好,并且当它工作时非常快,但由于各种原因,它会有5-10%的失败率,因此任何完全依赖它的应用程序都可能是不可靠的应用程序。

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

如果你的应用程序绝对100%需要接收这些消息,我认为你别无选择,只能建立自己的轮询,但也许可以进行缓慢的轮询以减少资源使用,这样你的应用程序始终可以工作,而推送只是增加了速度优势。


0

C2DM使用5228端口。如果您的WiFi网络阻止此端口,您将无法收到推送通知。只要开始使用不阻止它们的网络(假设它们没有过期),您就会立即收到它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接