GCM server side implementation for java

回眸只為那壹抹淺笑 提交于 2019-12-23 04:18:24

问题


I need to implement a standalone application for the server side of gcm to push notifications to the device. Is there any reference i could get other than the one on the Getting started page.People say something about xmpp. Do we need to use this or can we directly use the gcm server side methods.Help.Or is there any other easy way to implement this.I hope i put my question properly.


回答1:


Here is nice tutorial for GCM server side implementation for java. URL: java gcm server side implementation

Example code: java gcm server side implementation`{

    new Thread(){

        public void run(){

            try {
                //Please add here your project API key: "Key for browser apps (with referers)".
                //If you added "API key Key for server apps (with IP locking)" or "Key for Android apps (with certificates)" here
                //then you may get error responses.
                Sender sender = new  Sender("AIzaSyB7Ej255tpTaemk_-Ljmn4GcklldT14Hp4");

                // use this to send message with payload data
                Message message = new Message.Builder()
                .collapseKey("message")
                .timeToLive(3)
                .delayWhileIdle(true)
                .addData("message", "Welcome to Push Notifications") //you can get this message on client side app
                .build(); 

                //Use this code to send notification message to a single device
                Result result = sender.send(message,
                        "APA91bEbKqwTbvvRuc24vAYljcrhslOw-jXBqozgH8C2OB3H8R7U00NbIf1xp151ptweX9VkZXyHMik022cNrEETm7eM0Z2JnFksWEw1niJ2sQfU3BjQGiGMq8KsaQ7E0jpz8YKJNbzkTYotLfmertE3K7RsJ1_hAA",
                        1);
                System.out.println("Message Result: "+result.toString()); //Print message result on console

                //Use this code to send notification message to multiple devices
                ArrayList<String> devicesList = new ArrayList<String>();
                //add your devices RegisterationID, one for each device               
                devicesList.add("APA91bEbKqwTbvvRuc24vAYljcrhslOw-jXBqozgH8C2OB3H8R7U00NbIf1xp151ptweX9VkZXyHMik022cNrEETm7eM0Z2JnFksWEw1niJ2sQfU3BjQGiGMq8KsaQ7E0jpz8YKJNbzkTYotLfmertE3K7RsJ1_hAA");   
                devicesList.add("APA91bEVcqKmPnESzgnGpEstHHymcpOwv52THv6u6u2Rl-PaMI4mU3Wkb9bZtuHp4NLs4snBl7aXXVkNn-IPEInGO2jEBnBI_oKEdrEoTo9BpY0i6a0QHeq8LDZd_XRzGRSv_R0rjzzZ1b6jXY60QqAI4P3PL79hMg");   

                //Use this code for multicast messages   
                MulticastResult multicastResult = sender.send(message, devicesList, 0);
                System.out.println("Message Result: "+multicastResult.toString());//Print multicast message result on console

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }.start();   
}`



回答2:


The simplest way to implement GCM server side for Java is using restful POST. URL: "https://android.googleapis.com/gcm/send"

Example code: using scribe framework as consumer

public void pushToAndroidDevice(String deviceToken, String data) {  
    OAuthRequest request = new OAuthRequest(Verb.POST, "https://android.googleapis.com/gcm/send");
    request.addHeader("Authorization", "key=" + apiKey);
    request.addHeader("Content-Type", "application/json");

    request.addPayload(data);

    Response response = request.send();
}



回答3:


There are 2 ways you can implement server for GCM connections
1) XMPP
2) HTTP

The difference being XMPP allow you to get response back from device to server(Bidirectional) and HTTP is (Unidirectional) for GCM, you can only send push notification to device.

In case you need the full implementation of Java Client and HTTP server, here is the link GCM Client and Server



来源:https://stackoverflow.com/questions/17681860/gcm-server-side-implementation-for-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!