How to Implement Google Cloud Messaging?

Hi guys, I will explain and show you a simple GCM Implementation.

gcm

Because C2DM has been officially deprecated as of June 26, 2012 :p

Refer: https://developers.google.com/android/c2dm/

Requirements:

1. Apache Ant – http://ant.apache.org/bindownload.cgi

2. Apache Tomcat – http://tomcat.apache.org/download-70.cgi

First of all you need to get an API key from Google API Console.

Getting your Sender ID

  • STEP 1.  Register Here .
  • STEP 2.  Click Create project. Your browser URL will change to something like:
    " https://code.google.com/apis/console/#project:4815162342 "

    Take note of the value after#project: (4815162342 in this example). This is your project ID, and it will be used later on as the GCM sender ID. This Id will be used by the Android Device while Registering for Push Notification.

  • STEP 3. Choose Service tab from the left side menu on the web page. and turn on “ Google Cloud Messaging for Android “
  • STEP 4. Go to API Access tab from the left menu of web page.

Note: If you going to use a static IP, provide it. If u don’t have, don worry.

Just press Create new Server key and note down the generated API key.

Refer: http://developer.android.com/guide/google/gcm/gs.html

Google has already some things to implement this. Just grab it from

http://code.google.com/p/gcm/source/checkout (You need to have git installed in ur PC)

if you don’t have git, get it from here – https://rapidshare.com/files/1274880597/gcm.zip

Server Implementation:

1. After downloading or else gitting, just extract and/or open up

gcm\samples\gcm-demo-server\WebContent\WEB-INF\classes

2. Open “api.key” with some text editor, some sample text will be there. Replace it with your API key.

3. open cmd there and navigate to the path(root of gcm-demo-server), you could find a build.xml.

Just give “ant war” in cmd. you will get a “gcm-demo.war” inside “dist” folder (gcm-demo-server\dist)

4. Copy that war file and paste it to “webapps” folder of tomcat.

Just check it whether its working “http://localhost:8080/gcm-demo”

It should give like the thing below.

Great your server implementation is over now.

Client Implementation:

Download GCMDemo (Client side) from here – https://rapidshare.com/files/3183517979/GCMDemo.zip

Extract and add it to IDE

If you have ADT or some issues with tools, follow the below things:

For this just create android project in your IDE with some name, eg: “GCMDemo”

Goto “gcm\samples\gcm-demo-client”, do the following:

1. Open up “AndroidManifest.xml” and copy it to the same xml which is in android project.

2.Open up “res” folder, you could find some folders. Just drag and drop it to “res”  folder in your android project.

3.Open up “src” folder,you will find a folder named as “src”. Just drag and drop it to “src” folder in your android project.

4.Open up “libs” folder,you will find a file named as “gcm.jar”. Just drag and drop it to “libs” folder in your android project.

For both of the steps, you need to add some spice ups for client implementation.

Open up android project in IDE. Goto “src  >> com.google.android.gcm.demo.app >> CommonUtilities.java” and do the following.

1. Replace “your_gcm-demo_url” with your server url, static IP users give your static IP.

static final String SERVER_URL = “your_gcm-demo_url”;  In my case “http://192.168.1.9/gcm-demo”

For non-static IP users:

Instead of giving “localhost, 127.0.0.1”, you should give system internal IP which u have mentioned in your network config. Because both of them are giving SocketException. So use system IPv4 Address.

To get it , XP and vista  users type “ipconfig” in your cmd. In W7, Goto Control panel>>Networking and sharing center>> Change adapter settings>>Local Area Connection”

Double click and click details where you could find your IP named as “Ipv4 Address”

2. Replace “your_sender_id_from_api_console_url” with your sender ID, like 4815162342 in this example

static final String SENDER_ID = “your_sender_id_from_api_console_url”;

Uffff! Just run your application in emulator now. Wait! wait! Just add an google account in your emulator. And then run your application. you can get following result.

Now refresh your server URL. you should get whats shown below.

Press “Send Message”. You will get a notification in your emulator.

Voila!! You did it!

If u have any doubts catch me on – https://twitter.com/satheesh420