0

我正在测试 android 的 GCM 演示应用程序。GCM 的第一步是向 GCM 服务器注册设备,即发送设备 ID 并获取注册密钥。但我正在一个有防火墙的网络上进行测试。现在我已经允许通过防火墙连接特定的 staic ip,即设备的 ip。但是我如何确保防火墙不会产生任何问题。是否有任何 url 或任何方式可以测试 GCM 服务器是否可访问。

目前我收到此错误。从 GCM:可恢复错误 (SERVICE_NOT_AVAILABLE)。

4

1 回答 1

0

我会从重启手机开始(当我遇到这个问题时修复了多个问题)。我还将大致验证电话上的时间/日期是否正确。在线查看一些 GCM 代码时要小心,因为许多代码包含不推荐使用的函数。

之后,我将在我的 3G/4G 场景中实现如下所示的重试逻辑。

如果您使用 3G/4G:

500-599 范围内的错误(例如 500 或 503)表示 GCM 服务器在尝试处理请求时出现内部错误,或者服务器暂时不可用(例如,由于超时)。发件人必须稍后重试,遵守响应中包含的任何 Retry-After 标头。应用程序服务器必须实现指数退避。疑难解答

如果您使用的是 Wi-Fi:

注意:如果您的组织有防火墙限制进出 Internet 的流量,您需要将其配置为允许与 GCM 连接,以便您的 Android 设备接收消息。要打开的端口是:5228、5229 和 5230。GCM 通常只使用 5228,但有时会使用 5229 和 5230。GCM 不提供特定 IP,因此您应该允许防火墙接受到包含的所有 IP 地址的传出连接在 Google 的 ASN 15169 中列出的 IP 块中。

于 2013-06-17T15:50:59.937 回答