1

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.

user2525103
  • 41
  • 1
  • 7

3 Answers3

3

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();   
}`
Ameer Faisal
  • 355
  • 1
  • 9
1

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();
}
Dat Nguyen
  • 1,881
  • 17
  • 36
0

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

Ankit Sinha
  • 1
  • 1
  • 3