Android GCM-未注册任何设备

Android GCM-未注册任何设备,android,google-cloud-messaging,Android,Google Cloud Messaging,在实施GCM时遇到问题 服务器端我使用了HTTP方法。创建war文件并将其上载到ApacheTomcat(仅使用开发控制台中的服务器API更改了“samples/gcm demo server/WebContent/WEB-INF/classes/API.key”中的API)。当我访问该页面时,我得到一个“未注册设备!” 也实现了Android部分,点击register按钮,从GCM得到一个带有registeredId的响应,因此,我假设设备在GCM中得到了registerd。当我回到我的网页时

在实施GCM时遇到问题

服务器端我使用了HTTP方法。创建war文件并将其上载到ApacheTomcat(仅使用开发控制台中的服务器API更改了“samples/gcm demo server/WebContent/WEB-INF/classes/API.key”中的API)。当我访问该页面时,我得到一个“未注册设备!”

也实现了Android部分,点击register按钮,从GCM得到一个带有registeredId的响应,因此,我假设设备在GCM中得到了registerd。当我回到我的网页时,我看到了同样的信息:“没有注册设备”

试图查找类似的错误,但只找到旧的GCM api实现


有没有办法找出问题是来自我的服务器、gcm服务器还是android部分本身有问题?

我想你应该在
gcm demo client/src/com/google/android/gcm/demo/app/CommonUtilities.java

并检查对servlet的HTTP调用
http://Your-IP/register
在向Google注册GCM后执行,以便让您正在使用的GCM演示服务器正确运行并向该注册ID发送推送通知

不要忘记保持服务器运行,因为它通过
数据存储将regid保存在内存中

private void sendRegistrationIdToBackend() throws Exception {
    // Your implementation here.
    String URL="http://Your_Server_IP/gcm-demo/register?regId="+SENDER_ID;
    HttpClient httpclient = new DefaultHttpClient();
    HttpResponse response = httpclient.execute(new HttpGet(URL));
    StatusLine statusLine = response.getStatusLine();
    if(statusLine.getStatusCode() == HttpStatus.SC_OK){
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        response.getEntity().writeTo(out);
        String responseString = out.toString();
        out.close();
        //..more logic
    } else{
        //Closes the connection.
        response.getEntity().getContent().close();
        throw new IOException(statusLine.getReasonPhrase());
    }
}

但这不是被弃用了吗?是的,我认为您正在尝试使用它,您应该明确地使用这个基于Gradle的示例,或者仅仅依靠GCM代码片段并实现对注册Servlet的HTTP调用
sendRegistrationIdToBackend()
我设法注册了设备(获得了registeredId),但是当我从tomcat访问GCM服务器时,我收到一条没有可用设备的消息。已解决。是我的发送实现中的一个问题。现在工作。谢谢