Showing posts with label Push notification. Show all posts
Showing posts with label Push notification. Show all posts

Sunday 23 December 2012

Open a new Activity on Receiving the notification in Android

Hello Droid Guys,

In this tutorial , I am going to explain how to open a new activity class
whenever a push notification comes on your device.

Step 1. For this first of all follow Android Goggle Cloud Messaging  . 
            In this blog I already explain how to register your application for GCM,
            Obtaining the sender id and getting the registration id from GCM server.


step 2. Once you complete the step-1 then inside your GCMIntentService.java class add
            following code.
      @Override  
      protected void onMessage(Context context, Intent arg1) {  
           Log.i(TAG, "new message= ");  
            String message = "success on server";  
         //  displayMessage(context, message);  
          // notifies user  
          generateNotification(context, message);  
      }  


Now,

    /**  
    * Issues a notification to inform the user that server has sent a message.  
    */  
   private static void generateNotification(Context context, String message) {  
     int icon = R.drawable.ic_launcher;  
     long when = System.currentTimeMillis();  
     NotificationManager notificationManager = (NotificationManager)  
         context.getSystemService(Context.NOTIFICATION_SERVICE);  
     Notification notification = new Notification(icon, message, when);  
     String title = context.getString(R.string.app_name);  
     Intent notificationIntent = new Intent(context, Messenger.class);  
     notificationIntent.putExtra("MESSAGE",message);  
     notificationIntent.putExtra("ISNOTIFICATION",true);  
     // set intent so it does not start a new activity  
     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |  
         Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);  
     PendingIntent intent =  
         PendingIntent.getActivity(context, 0, notificationIntent, 0);  
     notification.setLatestEventInfo(context, title, message, intent);  
     notification.flags |= Notification.FLAG_AUTO_CANCEL;  
     notificationManager.notify(0, notification);  
   }  



This , will helps you to open a new class whenever apush notification comes.
On tapping the Notification from notification bar.

Enjoy Coding... :)
Cheers :)

Also see this link for help
      1. Google Cloud Messaging 

Android Goggle Cloud Messaging | GCM | Android push notification


Hello Droid Guys,

This tutorial helps you to implement “Google Cloud Messaging for Android (GCM)"  and
sending "Android Push Notification" using GCM.
 According to Google, “Google Cloud Messaging for Android (GCM)" is a service which
 helps developer in sending data from server to there "Android Application" whenever
 there is new data added on server. Also , No need to request server after every time 
 period(the timely fashion which we mostly did to fetch updated data from server after a
 fixed time period for e,g after every 6hrs,or a day).
1. How it works ?
       1. Android device sends a "sender id" and "application id" to GCM server for 
           registration.
       2. After Successfully registration on server, the GCM server generate a 
           "Registration id" and returns it.
       3. After receiving this "registration id" the device send this "registration id "
           to our server (i.e. my mysql server).
       4. Our server store this "registration id" into database for later usage.



 Registering Your Application for “Google Cloud Messaging for Android (GCM)":

  Step-1. Goto Here and create a new project. (If you haven’t created already 
               otherwise it will take you to dashboard).

   
  
  Step-2. Click on create project and check your browser url, It will change some thing
                like:
               " https://code.google.com/apis/console/#project:4815162342 "
           
               
                Note: 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 “
             
android google cloud messaging example


Step-4. Go to API Access tab from the left menu of web pagee and press Create new
                  Server key and note down the generated key.

android google cloud messaging example



Creating Andrid application for GCM:

Note: Before starting to create android application , first update your ADT plugin to 20.
1. Go to window => android Sdk => extras=> choose Google Cloud Messaging for Android Library.

android push notification example
     
Now Start Creating Android application project and remember to add gcm .jar inside your project lib folder.
You can easily find this gcm.jar inside your  android_sdk/extras/google/gcm  after updating your ADT and 
SDk.
Now place following file inside your project
1.PushAndroidActivity.java
 package com.mukesh.gcm;  
 import static com.mukesh.gcm.CommonUtilities.SENDER_ID;  
 import android.app.Activity;  
 import android.os.Bundle;  
 import android.util.Log;  
 import android.widget.TextView;  
 import com.google.android.gcm.GCMRegistrar;  
 public class PushAndroidActivity extends Activity {  
      private String TAG = "** pushAndroidActivity **";  
      private TextView mDisplay;  
      @Override  
      public void onCreate(Bundle savedInstanceState) {  
           super.onCreate(savedInstanceState);  
           checkNotNull(SENDER_ID, "SENDER_ID");  
           GCMRegistrar.checkDevice(this);  
           GCMRegistrar.checkManifest(this);  
           setContentView(R.layout.main);  
           mDisplay = (TextView) findViewById(R.id.display);  
           final String regId = GCMRegistrar.getRegistrationId(this);  
           Log.i(TAG, "registration id ===== " + regId);  
           if (regId.equals("")) {  
                GCMRegistrar.register(this, SENDER_ID);  
           } else {  
                Log.v(TAG, "Already registered");  
           }  
           mDisplay.setText("ffffff  " + regId);  
      }  
      private void checkNotNull(Object reference, String name) {  
           if (reference == null) {  
                throw new NullPointerException(getString(R.string.error_config,  
                          name));  
           }  
      }  
      @Override  
      protected void onPause() {  
           super.onPause();  
           GCMRegistrar.unregister(this);  
      }  
 }  


2.GCMIntentService.java
 package com.mukesh.gcm;  
 import static com.mukesh.gcm.CommonUtilities.SENDER_ID;  
 import android.content.Context;  
 import android.content.Intent;  
 import android.util.Log;  
 import com.google.android.gcm.GCMBaseIntentService;  
 public class GCMIntentService extends GCMBaseIntentService {  
      public GCMIntentService() {  
           super(SENDER_ID);  
      }  
      private static final String TAG = "===GCMIntentService===";  
      @Override  
      protected void onRegistered(Context arg0, String registrationId) {  
           Log.i(TAG, "Device registered: regId = " + registrationId);  
      }  
      @Override  
      protected void onUnregistered(Context arg0, String arg1) {  
           Log.i(TAG, "unregistered = " + arg1);  
      }  
      @Override  
      protected void onMessage(Context arg0, Intent arg1) {  
           Log.i(TAG, "new message= ");  
      }  
      @Override  
      protected void onError(Context arg0, String errorId) {  
           Log.i(TAG, "Received error: " + errorId);  
      }  
      @Override  
      protected boolean onRecoverableError(Context context, String errorId) {  
           return super.onRecoverableError(context, errorId);  
      }  
 }  


3. CommonUtilities.java

 package com.mukesh.gcm;  
     public final class CommonUtilities {  
     static final String SENDER_ID = "4815162342";  
 }  


4. AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?>  
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
      package="com.mukesh.gcm" android:versionCode="1" android:versionName="1.0">  
      <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />  
      <permission android:name="com.mukesh.gcma.permission.C2D_MESSAGE"  
           android:protectionLevel="signature" />  
      <uses-permission android:name="com.mukesh.gcm.permission.C2D_MESSAGE" />  
      <uses-permission android:name="android.permission.GET_ACCOUNTS" />  
      <uses-permission android:name="android.permission.WAKE_LOCK" />  
      <uses-permission android:name="android.permission.INTERNET" />  
      <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />  
      <application android:icon="@drawable/ic_launcher"  
           android:label="@string/app_name">  
           <activity android:name=".PushAndroidActivity" android:label="@string/app_name">  
                <intent-filter>  
                     <action android:name="android.intent.action.MAIN" />  
                     <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>  
           </activity>  
           <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver"  
                android:permission="com.google.android.c2dm.permission.SEND">  
                <intent-filter>  
                     <action android:name="com.google.android.c2dm.intent.RECEIVE" />  
                     <action android:name="com.google.android.c2dm.intent.REGISTRATION" />  
                     <category android:name="com.mukesh.gcm" />  
                </intent-filter>  
           </receiver>  
           <service android:name=".GCMIntentService" />  
      </application>  
 </manifest>   



Enjoy Coding... :)
Cheers :)

Also see this blog for more help:
     1. Open| Launch Activity on receiving Push Notification 

 

Copyright @ 2013 Android Developers Blog.