如何确保可以从我的设备网络访问 GCM 服务器?

Posted

技术标签:

【中文标题】如何确保可以从我的设备网络访问 GCM 服务器?【英文标题】:How to ensure GCM server is accessible from my device's network? 【发布时间】:2013-06-07 09:17:59 【问题描述】:

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

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

【问题讨论】:

这可能是 this question 的副本。您需要打开相关端口。这仅在您的设备使用 WiFi 连接时相关。 【参考方案1】:

我会从重启手机开始(当我遇到这个问题时修复了多个问题)。我还将大致验证电话上的时间/日期是否正确。在线查看一些 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 块中。

【讨论】:

以上是关于如何确保可以从我的设备网络访问 GCM 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

在哪个事件中,我可以使用 PushSharp 获取 GCM 响应以向 Android 设备发送通知?

为啥我无法在 Android 设备上接收来自 GCM 的消息

打开用于访问 GCM 服务器的端口(需要主机名、IP 和端口)

处理多个设备、同一用户的 GCM 注册 ID

无法从我网络上的其他设备访问 localhost

Android GCM 切换到另一个网络