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


  1. 我已经使用谷歌应用引擎(Java)实现了谷歌云消息(GCM)推送通知。

    1. 我在我的设备上创建了WiFi热点,用于笔记本电脑(操作系统:Ubuntu 12.04)访问互联网
    2. 谷歌应用引擎作为HTTP服务器
    3. 我正在遵循官方文件
    4. 运行服务器的命令:

      ant-Dsdk.dir=/home/myUserName/aappengine-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(无论设备使用的互联网连接类型如何)。

最新更新