Android GCM onMessage从未打过电话。是因为端口阻塞吗?如何找到?
我正在使用GCM进行android推送通知。我可以在GCM注册并在android中获得注册id。这意味着端口52285229或5230必须打开其中一个才能接收注册id权限?因此,我们可以说端口阻塞不是问题吗?我正在将注册id发送到服务器端,然后收到。消息将从服务器端应用程序发送到 但android应用程序并没有收到。从未调用Android GCM onMessage从未打过电话。是因为端口阻塞吗?如何找到?,android,port,google-cloud-messaging,Android,Port,Google Cloud Messaging,我正在使用GCM进行android推送通知。我可以在GCM注册并在android中获得注册id。这意味着端口52285229或5230必须打开其中一个才能接收注册id权限?因此,我们可以说端口阻塞不是问题吗?我正在将注册id发送到服务器端,然后收到。消息将从服务器端应用程序发送到 但android应用程序并没有收到。从未调用gcminentservice中的onMessage。请告诉我邮件未收到的可能原因。如何检查GCM服务器是否接收到该消息?端口阻塞是一个问题吗?如果是,如何识别和纠正 我在c
gcminentservice
中的onMessage。请告诉我邮件未收到的可能原因。如何检查GCM服务器是否接收到该消息?端口阻塞是一个问题吗?如果是,如何识别和纠正
我在cmd中尝试了telnet localhost 5228,其响应为无法在端口5228上打开连接。连接失败。这是否意味着端口5228被阻塞
当从服务器应用程序发送消息时,我得到一个非空消息id和空错误代码的结果。这意味着信息已经传递了,对吗
服务器端代码
@WebServlet("/GCMNotification")
public class GCMNotification extends HttpServlet {
private static final long serialVersionUID = 1L;
// Put your Google API Server Key here
private static final String GOOGLE_SERVER_KEY = "AIzaSyAJBGj_8aaNykTNaPxdayggDMyxzArE7gM";
static final String MESSAGE_KEY = "message";
public GCMNotification() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Result result = null;
String share = request.getParameter("shareRegId");
// GCM RedgId of Android device to send push notification
String regId = "";
if (share != null && !share.isEmpty()) {
regId = request.getParameter("regId");
PrintWriter writer = new PrintWriter("GCMRegId.txt");
writer.println(regId);
writer.close();
request.setAttribute("pushStatus", "GCM RegId Received.");
request.getRequestDispatcher("index.jsp")
.forward(request, response);
} else {
try {
BufferedReader br = new BufferedReader(new FileReader(
"GCMRegId.txt"));
regId = br.readLine();
br.close();
String userMessage = request.getParameter("message");
Sender sender = new Sender(GOOGLE_SERVER_KEY);
Message message = new Message.Builder().timeToLive(30)
.delayWhileIdle(false).addData(MESSAGE_KEY, userMessage).build();
System.out.println("regId: " + regId);
result = sender.send(message, regId, 1);
if(result.getMessageId()==null)
{
System.out.println("error"+result.getErrorCodeName());
}
else
{
System.out.println("msg created"+result.getCanonicalRegistrationId());
if(result.getCanonicalRegistrationId()==null)
{
}
else
{
System.out.println("not null");
}
}
System.out.println("pushStatus: "+result.getMessageId()+"\n"+result.getErrorCodeName()+"\n"+result.toString());
request.setAttribute("pushStatus", result.toString());
} catch (IOException ioe) {
ioe.printStackTrace();
request.setAttribute("pushStatus",
"RegId required: " + ioe.toString());
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("pushStatus", e.toString());
}
request.getRequestDispatcher("index.jsp")
.forward(request, response);
}
}
}
发布服务器端代码(exp:php)我认为您在服务器密钥方面有问题,请参阅此@appu bala-谢谢。。!我创建了服务器密钥并尝试使用哪种力。所以我重新生成了密钥,但问题仍然存在。嗨,兄弟,我想你的错误是,谷歌控制台需要允许你的服务器访问gcm,所以在生成服务器密钥时,你需要给出你的ip地址,要知道你的ip,在谷歌中键入“whats my ip”,复制并放入服务器key@Appu巴拉-如果我不给一个IP,它将允许所有的IP地址的权利?最初我有0.0.0.0/0,然后删除了该ip。这是个问题吗。如果是,如何纠正?