首页 文章

通过java发送推送通知GCM [关闭]

提问于
浏览
6

我已经配置了客户端Android谷歌 Cloud 消息传递(GCM)来接收推送通知,但我无法在java中配置服务器以向设备发送通知 . 我怎么能?

2 回答

  • 1

    您可以使用gcm-server.jar,其中包含用于GCM消息传递的帮助程序方法 . 要获得此jar,您可以通过Android SDK Manager安装 "[Deprecated]Google Cloud Messaging for Android Library" . 不要让弃用的名称让您感到困惑 . 仅弃用客户端部分,而不是服务器端 .
    安装完成后,您可以在 "ADT_SDKROOT\sdk\extras\google\gcm" 找到它 . 示例文件夹包含一个非常容易理解的演示服务器 .
    发送GCM消息只涉及几行代码:

    final String GCM_API_KEY = "yourKey";
        final int retries = 3;
        final String notificationToken = "deviceNotificationToken";
        Sender sender = new Sender(GCM_API_KEY);
        Message msg = new Message.Builder().build();
    
        try {
                    Result result = sender.send(msg, notificationToken, retries);
    
                    if (StringUtils.isEmpty(result.getErrorCodeName())) {
                        logger.debug("GCM Notification is sent successfully");
                        return true;
                    }
    
                    logger.error("Error occurred while sending push notification :" + result.getErrorCodeName());
        } catch (InvalidRequestException e) {
                    logger.error("Invalid Request", e);
        } catch (IOException e) {
                    logger.error("IO Exception", e);
        }
        return false;
    
  • 15

    对于“”“test”“”创建java控制台应用程序,添加gcm jar文件 .

    try{
         Sender sender = new Sender("<senderId>");
         ArrayList<String> devicesList = new ArrayList<String>();
         devicesList.add(<deviceId>);
         String data = "<data>";
         Message message = new Message.Builder()
                            .collapseKey("1")
                            .timeToLive(3)
                            .delayWhileIdle(true)
                            .addData("message",
                                    data)
                            .build();
        MulticastResult result = sender.send(message, devicesList, 1);
                    sender.send(message, devicesList, 1);
    
                    System.out.println(result.toString());
                    if (result.getResults() != null) {
                        int canonicalRegId = result.getCanonicalIds();
                        if (canonicalRegId != 0) {
                        }
                    } else {
                        int error = result.getFailure();
                        System.out.println(error);
                    }
    
    }
    

相关问题