通过java发送推送通知GCM

通过java发送推送通知GCM,java,android,push-notification,google-cloud-messaging,Java,Android,Push Notification,Google Cloud Messaging,我已经配置了一个客户端android Google Cloud Messaging(GCM)来接收推送通知,但我无法配置java服务器来向设备发送通知。如何创建java控制台应用程序?对于“测试”,请添加gcm jar文件 try{ Sender sender = new Sender("<senderId>"); ArrayList<String> devicesList = new ArrayList<String>();

我已经配置了一个客户端android Google Cloud Messaging(GCM)来接收推送通知,但我无法配置java服务器来向设备发送通知。如何创建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);
                }

}
试试看{
发送方=新发送方(“”);
ArrayList DeviceList=新的ArrayList();
DeviceList.add();
字符串数据=”;
Message Message=new Message.Builder()
.collapseKey(“1”)
.timeToLive(3)
.delayWhileIdle(真)
.addData(“消息”,
(数据)
.build();
MulticastResult result=sender.send(消息,设备列表,1);
sender.send(消息,设备列表,1);
System.out.println(result.toString());
if(result.getResults()!=null){
int canonicalRegId=result.getCanonicalId();
如果(canonicalRegId!=0){
}
}否则{
int error=result.getFailure();
系统输出打印项次(错误);
}
}
您可以使用包含GCM消息传递帮助器方法的。 要获得此jar,您可以通过Android SDK管理器安装“[不推荐]Android库的谷歌云消息”。不要让不推荐使用的名称迷惑你。只有客户端部分不推荐使用,而不是服务器端。
安装后,您可以在“ADT\U 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;

您需要在internet land中的某个位置配置服务器,例如使用Google App Engine来执行服务器端工作。是的,我有一台使用套接字连接到设备的服务器,但我无法从另一台服务器向GCM服务器发送通知。如果您已经有一台服务器,请发布不起作用的代码,我们将尝试为您修复它。你的问题太宽泛了——我们需要先看看你试着做了什么。如何使用谷歌云消息(GCM)注册我的Android设备。我找了一整天,什么也没找到。请帮我工作。非常感谢。如果它奏效了,你应该考虑接受这个答案。这对其他人很有用:)这就是我一直在寻找的,谢谢你,伙计,你节省了我的时间。:)嗨,我使用Eclipse尝试了这个,但出现了这个错误。你知道怎么解决这个问题吗<代码>线程“main”java.lang.NoClassDefFoundError:org/json/simple/parser/ParseException位于NotificationSenderClass.main(NotificationSenderClass.java:16)中的异常由以下原因引起:java.lang.ClassNotFoundException:org.json.simple.parser.ParseException位于java.net.URLClassLoader$1.run(URLClassLoader.java:202)在java.net.URLClassLoader.findClass(URLClassLoader.java:190)的java.security.AccessController.doPrivileged(本机方法)和java.lang.ClassLoader.loadClass(ClassLoader.java:306)….我下载了gcm.server.jar文件并将其添加为库。提前谢谢!