0

所以我一直在按照 Google 的教程在 Android 模拟器上设置 GCM 演示应用程序(这里的那个:http: //developer.android.com/guide/google/gcm/demo.html)。我让服务器端正常工作 - 我有一个显示“未注册设备!”的 tomcat 服务器 在 GCM 演示页面上。我已经在带有目标 Google API 的 Android 模拟器上安装了客户端应用程序(试图让 GCM 在一个针对 4.1 的模拟器上工作,每次运行应用程序时都会吐出“不幸的是,GCM Demo 已停止”) - 应用程序运行成功,但它无法连接到服务器来注册设备(它经历了所有 5 次尝试)。我确实将 SERVER_URL、SENDER_ID 和 api.key 编辑为正确的值(我 已遵循本教程的每一步)-我在这里缺少什么?模拟器上的浏览器似乎也可以正常工作。

编辑:固定网址演示 - nickl

4

4 回答 4

7

您的 tomcat 服务器在哪里运行,您在 Android 应用程序中提供的 SERVER_URL 是什么?我在尝试那个演示时遇到了问题,因为我的 tomcat 在本地运行,但请记住,模拟器就像一个“虚拟路由器”,所以你不能http://localhost:8080仅从你的 android 应用程序访问你的 tomcat 服务器。您必须使用运行 Tomcat 服务器的机器的 IP,所以它就像http://[tomcat-machine's ip]:8080/gcm-demo

于 2012-07-10T18:11:15.610 回答
2

这个问题可能有很多来源,在我看来是因为我使用了错误的服务器 URL,你应该停在http://yourserveraddress.com/gcm-demo而不是 .../gcm-demo/home

SERVER_URL = "http://yourserveraddress.com/gcm-demo"

另外,您是否检查过用于构建 WAR 文件的 API 密钥是用于网络服务器的,而不是用于应用程序引擎的(通过 Google 控制台 API 注册时生成了 2 个)?

于 2012-07-14T03:30:43.597 回答
2

如果您尝试访问运行 android 模拟器的计算机的 localhost,则必须使用 10.0.2.2,您可以在此处阅读更多信息:http: //developer.android.com/tools/devices/emulator.html #networkaddresses

于 2012-08-22T12:45:21.717 回答
2

我有同样的问题。我意识到我已经在家里的网络上构建了这些文件,并在我在工作网络中时尝试编译这些文件。这改变了我电脑的ip。在将 SERVER_URL 更改为 CommonUtilities.java 文件中的新 ip 后,我忘记重新编译我的代码。

于 2012-08-10T21:31:24.817 回答