当我使用wifi(某些网络)时,Google云消息未送达

时间:2016-01-06 10:18:56

标签: google-cloud-messaging wifi

当我使用wifi网络发送消息时,任何人都知道他们被发送但我无法收到相同的信息。意味着wifi网络将发送消息,但同一网络将无法接收消息,另一方面,如果我将我的网络更改为移动数据,那么它的工作正常。

1 个答案:

答案 0 :(得分:1)

在运行推送通知的应用程序之前,请务必检查互联网连接可用性。

GCM通过向Google的推送通知服务器保持长期套接字开放来工作。通过在手机和服务器之间发送“心跳”消息,套接字保持打开状态。

网络状态可能会发生变化,此套接字将被破坏(因为设备的IP地址会发生变化,例如从3g变为wifi)。如果在重新建立套接字之前消息进入,则设备将不会立即收到消息。

重新连接仅在手机注意到套接字断开时才会发生,只有在尝试发送心跳消息时才会发生。

您可以像这样检查网络:

private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager 
      = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null;
}

这是我得到答案的地方:Google Cloud Messaging - messages sometimes not received until network state changed