How to add a push notification in my own android app

后端 未结 3 1704
长情又很酷
长情又很酷 2020-12-01 00:42

I have developed a push notification application in Android from this tutorial:push notification in android app. The register button is displayed when I run the

3条回答
  •  广开言路
    2020-12-01 00:58

    I am posting demo application of Google Cloud Messaging.

    Make sure you create demo application with API level equal or higher than Android OS 2.2 with Google API

    User have to signed in at-least one Google Account to use this service.

    First you have to add GCM library.

    Than create on class which I named GCMIntentService which extends GCMBaseIntentService as follows:

    package com.example.gcmdemo;
    
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;
    
    import com.google.android.gcm.GCMBaseIntentService;
    import com.google.android.gcm.GCMConstants;
    
    public class GCMIntentService extends GCMBaseIntentService {
    
         private static final String TAG = "Push Notification Demo GCMIntentService";
    
        @Override
        protected void onError(Context context, String errorId) {
    
            if(GCMConstants.ERROR_ACCOUNT_MISSING.equalsIgnoreCase(errorId)) {
                Log.v(TAG, "Error Account Missing");
            } else if(GCMConstants.ERROR_AUTHENTICATION_FAILED.equalsIgnoreCase(errorId)) {
                Log.v(TAG, "Error Authentication Failed");
            } else if(GCMConstants.ERROR_INVALID_PARAMETERS.equalsIgnoreCase(errorId)) {
                Log.v(TAG, "Error Invalid Parameters");
            } else if(GCMConstants.ERROR_INVALID_SENDER.equalsIgnoreCase(errorId)) {
                Log.v(TAG, "Error Invalid Sender");
            } else if(GCMConstants.ERROR_PHONE_REGISTRATION_ERROR.equalsIgnoreCase(errorId)) {
                Log.v(TAG, "Error Phone Registration Error");
            } else if(GCMConstants.ERROR_SERVICE_NOT_AVAILABLE.equalsIgnoreCase(errorId)) {
                Log.v(TAG, "Error Service Not Available");
            } 
        }
    
        @Override
        protected void onMessage(Context context, Intent intent) {
    
            // App Server Sends message as key value pairs 
            String value1 = intent.getStringExtra("key1");
            String value2 = intent.getStringExtra("key2");
    
            Log.v(TAG, "key1: "+value1 );
            Log.v(TAG, "key2: "+value2 );
        }
    
        @Override
        protected void onRegistered(Context context, String regId) {
    
            Log.v(TAG, "Successfull Registration : "+regId);
        }
    
        @Override
        protected void onUnregistered(Context context, String regId) {
    
            Log.v(TAG, "Successfully Unregistred : "+regId);
        }
    
        @Override
        protected String[] getSenderIds(Context context) {
            return super.getSenderIds(context);
        }
    
        @Override
        protected void onDeletedMessages(Context context, int total) {
            super.onDeletedMessages(context, total);
        }
    
        @Override
        protected boolean onRecoverableError(Context context, String errorId) {
            return super.onRecoverableError(context, errorId);
        }
    }
    

    Here is how you should check registration in following demo activity :

    package com.example.gcmdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    
    import com.google.android.gcm.GCMRegistrar;
    
    public class MainActivity extends Activity {
    
        private static final String TAG = "Push Notification Demo Activity";
        private static final String SENDER_ID = "1069713227710";
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            GCMRegistrar.checkDevice(this);
            GCMRegistrar.checkManifest(this);
            final String regId = GCMRegistrar.getRegistrationId(this);
            if (regId.equals("")) {
              GCMRegistrar.register(this, SENDER_ID);
            } else {
              Log.v(TAG, "Already registered : "+regId);
            }
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    }
    

    And finally the demo manifest :

    
    
        
    
        
    
        
    
        
        
        
        
        
        
        
        
    
        
            
                
                    
    
                    
                
            
    
            
                
                    
                    
    
                    
                
            
    
            
        
    
    
    

    Also you will need third party server side script as specified here.

提交回复
热议问题