是否需要让同一网络中的所有设备使用 Google 云消息 (GCM) 服务接收推送通知

Is it necessary to have all devices in same network to receive the push notification using Google Cloud Messaging (GCM) Service

  1. 我已经使用 Google App Engine (Java) 实现了 Google 云消息 (GCM) 推送通知。

    1. 我已经在我的设备上创建了 WiFi 热点来为笔记本电脑访问互联网(操作系统:Ubuntu 12.04)。
    2. Google App Engine 作为 HTTP 服务器。
    3. 我关注official docs
    4. 命令 运行 服务器:

      ant -Dsdk.dir=/home/myUserName/appengine-java-sdk-1.9.18 运行服务器 -Dserver.host=My_Network_IP 构建文件:gcm-demo-appengine/build.xml

请注意My_Network_IP取自系统设置-->网络-->无线-->IP地址

  1. 推送通知的演示应用程序取自 https://github.com/google/gcm

  2. 我已经更改了必需的东西,例如 API 键、sender_id、server_url 等

  3. 现在,当我从服务器发送推送通知时,我的设备会收到消息。在这种情况下,我的笔记本电脑和设备都在同一个网络中(笔记本电脑正在使用设备互联网)。

  4. 当我 运行 在使用自己的移动数据(互联网)的其他设备上使用相同的客户端代码时,该应用程序未注册,因此我无法发送推送通知.

  5. 当我将此设备连接到我之前设备的 WiFi 并打开应用程序时,它已成功注册。

  6. 我想知道是否有必要让我的所有用户都在我用于服务器的同一网络下?或者我做错了什么?

请澄清我的疑问。

谢谢。

如果您 运行 您的服务器代码在您的本地计算机上,则只有连接到同一 WiFi 网络的设备才能联系您的服务器代码以将其注册 ID 传递给它。这与GCM无关。

如果您要发布您的应用,您需要将您的服务器代码部署到某个网络服务器,这将允许任何 Android 设备连接到它并向它发送注册 ID (无论设备使用何种类型的互联网连接)。