Android GCM onMessage从未打过电话。是因为端口阻塞吗?如何找到?

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

我正在使用GCM进行android推送通知。我可以在GCM注册并在android中获得注册id。这意味着端口52285229或5230必须打开其中一个才能接收注册id权限?因此,我们可以说端口阻塞不是问题吗?我正在将注册id发送到服务器端,然后收到。消息将从服务器端应用程序发送到

但android应用程序并没有收到。从未调用
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。这是个问题吗。如果是,如何纠正?