GCM - 未注册任何设备

时间:2014-11-18 15:38:42

标签: android google-cloud-messaging

实施GCM时遇到问题。

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

也实现了Android部分,点击了注册按钮,得到了GCM和registeredId的响应,因此,我认为设备已经注册了GCM。问题出现在我回到我的网页时,我看到同样的消息:“没有设备注册”。

尝试寻找类似的错误,但只找到旧的 GCM api实现。

有任何想法可以找出问题是来自我的服务器,gcm服务器还是Android部件本身的问题?

2 个答案:

答案 0 :(得分:2)

我猜您应该在SERVER_URL

中填写gcm-demo-client/src/com/google/android/gcm/demo/app/CommonUtilities.java

并检查在向GC注册GCM之后是否真正执行了对servlet http://Your-IP/register的HTTP调用,以便让正在使用的gcm-demo-server正确运行并发送推送通知注册ID。

不要忘记保持服务器正常运行,因为它通过Datastore

将RegID保存在内存中

答案 1 :(得分:0)

试试这个:

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());
    }
}