Google Cloud Messaging (GCM) for Android is a service that allows you to send data
from your server to your users' Android-powered device, and also to receive messages from
devices on the same connection.A Google Cloud Messaging (GCM) client is a GCM-enabled app that runs on an
Android device. A full GCM implementation requires both a client implementation and a server
implementation.
In this blog post, I would talk about a Google Cloud Messaging (GCM) client implementation specifically.
A GCM implementation includes a Google-provided connection server, a 3rd-party app server that interacts with the connection server, and a GCM-enabled client app running on an Android device.
The steps involved in writing a GCM client-side application are as follows:
1)Set up Google Play Services using its SDK.
2)Add the following to your application's manifest:
a)Android permissions related to Internet, register and receive messages, Google account, wake lock, GCM Framework, etc.
b)A receiver for
c)A
3)Finally, write your application code for checking Google Play Services APK, register for GCM, send a message, receive a message, etc.
I have added a sample example in this post that implements GCM client services by sending device information as well as gcm notification id to the server and in return server will send message which will be displayed in form of notification on client device.
Have a look on few code snippets,
GCMIntentService.java
AccountManager.java
Refer the below link for complete sample code:-
Download Sample Code
Download Apk File
In this blog post, I would talk about a Google Cloud Messaging (GCM) client implementation specifically.
A GCM implementation includes a Google-provided connection server, a 3rd-party app server that interacts with the connection server, and a GCM-enabled client app running on an Android device.
The steps involved in writing a GCM client-side application are as follows:
1)Set up Google Play Services using its SDK.
2)Add the following to your application's manifest:
a)Android permissions related to Internet, register and receive messages, Google account, wake lock, GCM Framework, etc.
b)A receiver for
com.google.android.c2dm.intent.RECEIVE.
c)A
Service
(typically an IntentService
)
to which the WakefulBroadcastReceiver
passes off
the work of handling the GCM message.3)Finally, write your application code for checking Google Play Services APK, register for GCM, send a message, receive a message, etc.
I have added a sample example in this post that implements GCM client services by sending device information as well as gcm notification id to the server and in return server will send message which will be displayed in form of notification on client device.
Have a look on few code snippets,
GCMIntentService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | public class GCMIntentService extends GCMBaseIntentService { String TAG="GCM"; @Override protected void onError(Context arg0, String arg1) { try { Log.v(TAG, "onError() "+arg1); } catch (Exception e) { e.printStackTrace(); } } @Override protected void onMessage(Context context, Intent intent) { try { String action = intent.getAction(); Log.v(TAG, "onMessage() "+action); if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) { Log.v(TAG,"Handle Registration"); } else if (action.equals("com.google.android.c2dm.intent.RECEIVE")) { Log.v(TAG,"intent.getExtras() "+intent.getExtras()); /**Show notification.*/ String messageText= intent.getStringExtra("message")+""; NotificationManagerGCM notificationManagerGCM=new NotificationManagerGCM(); if(messageText!=null && !messageText.equalsIgnoreCase("") && !messageText.equalsIgnoreCase("null")) { notificationManagerGCM.showNotificationRemoveableGCM(context,messageText); } else { notificationManagerGCM.showNotificationRemoveableGCM(context,"Notification Message GCM Demo"); } } } catch (Exception e) { e.printStackTrace(); } } @Override protected void onRegistered(Context arg0, String arg1) { try { Log.v(TAG, "onRegistered() "+arg1); } catch (Exception e) { e.printStackTrace(); } } @Override protected void onUnregistered(Context arg0, String arg1) { try { Log.v(TAG, "onUnregistered() "+arg1); } catch (Exception e) { e.printStackTrace(); } } @Override protected String[] getSenderIds(Context context) { String[] ids = new String[1]; NotificationManagerGCM managerTXTShield=new NotificationManagerGCM(); ids[0] = managerTXTShield.getGCMSenderID(context); return ids; } } |
AccountManager.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | public class AccountManager { Context mContext; Resources mResources; String url,apiKey; public AccountManager(Context mContext){ this.mContext = mContext; mResources = mContext.getResources(); url = mContext.getResources().getString(R.string.url); apiKey = mContext.getResources().getString(R.string.api_key); } /** * This method is used to send device information for gcm notification. * * @param context * @param user_id * @return */ public String requestDeviceRegistration(Context context) { String responseStr = ""; try{ // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); try{ Utility utility = new Utility(); String unique_device_id = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID); if(unique_device_id == null || unique_device_id.equalsIgnoreCase("null") || unique_device_id.equalsIgnoreCase("")){ unique_device_id = utility.getDeviceSerialNumber(); } String device_name = utility.getDeviceName(); String model_no = utility.getDeviceModelName(); String device_os_version = utility.getDeviceSDKVersion(); String notification_id = utility.getNotificationID(context); PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); String app_version = pInfo.versionName; System.out.println("apiKey: "+apiKey); System.out.println("unique_device_id: "+unique_device_id); System.out.println("notification_id: " + notification_id); System.out.println("device_name: "+device_name); System.out.println("model_no: "+model_no); System.out.println("device_os_version: "+device_os_version); System.out.println("app_version: "+app_version); // Add your data List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("unique_device_id", unique_device_id)); nameValuePairs.add(new BasicNameValuePair("notification_id", notification_id)); nameValuePairs.add(new BasicNameValuePair("device_name", device_name)); nameValuePairs.add(new BasicNameValuePair("model_no", model_no)); nameValuePairs.add(new BasicNameValuePair("device_os_version", device_os_version)); nameValuePairs.add(new BasicNameValuePair("app_version", app_version)); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); // Execute HTTP Post Request HttpResponse httpResponse = httpclient.execute(httppost); HttpEntity responseEntity = httpResponse.getEntity(); if(responseEntity != null){ responseStr = EntityUtils.toString(responseEntity); } } catch(Exception e){ e.printStackTrace(); } } catch(Exception e){ e.printStackTrace(); } return responseStr; } } |
Refer the below link for complete sample code:-
Download Sample Code
Download Apk File
No comments:
Post a Comment