Wifi和3G上的C2DM行为

时间:2012-02-29 12:29:11

标签: android-c2dm

我正在开发一个依赖于C2DM的应用程序,以通知从REST服务获取的一些新数据。我已经成功实现了C2DM android功能,但Wifi上的行为与3G上的连接不同。这些消息是通过3G立即接收的,但是我必须手动关闭和打开Wifi以获得约1分钟的“宽限期”,我立即收到它们。

我的问题是:我有什么方法可以通过编程方式重新启动连接,或触发通知提取?

编辑: 我已经实现了一个AsyncTask,它每隔一分半就定期“重新关联”与接入点的连接(使用WifiManager.reassociate())。但不太确定这个解决方案的正确性。

1 个答案:

答案 0 :(得分:0)

我见过类似的问题。似乎在某些情况下,当它们通过3G时,C2DM消息不通过wifi连接传送。在相关的说明中,我也看到Android设备“丢弃”推送连接,因此不会传递消息(在我的情况下,解决方案可以是将设备置于飞行模式,然后重新打开网络)。

这强化了这样一个事实,即所有使用C2DM的应用程序都应该构建,以便即使推送消息传递失败,应用程序仍然有效(即使消息/更新速度较慢,因为偶尔会对服务器进行轮询)

我个人不想弄乱wifi连接,因为这可能会给用户带来麻烦。