实施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部件本身的问题?
答案 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
类
答案 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());
}
}