通过java发送推送通知GCM

时间:2014-02-18 12:00:32

标签: java android push-notification google-cloud-messaging

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

2 个答案:

答案 0 :(得分:15)

您可以使用包含帮助方法的gcm-server.jar进行GCM消息传递。 要获得此jar,您可以通过Android SDK Manager安装 “[已弃用] 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;

答案 1 :(得分:1)

对于“”“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);
                }

}