极光推送Android集成以及使用(本文只集成了通知,如需要自定义消息,富文本等请去查看官方文档)https://docs.jiguang.cn/

 

一、概念图

 

二、搭建环境以及集成

1. 官网注册,并创建应用,获取app_key

2. 官网下载Jpush SDK或者Demo

jpush-android-3.x.x-release.zip 集成压缩包内容

AndroidManifest.xml客户端嵌入SDK参考的配置文件

libs/jcore-android.1.x.x.jar极光开发者服务的核心包。

libs/jpush-android-3.x.y.jarJPush SDK 开发包。

libs/(cpu-type)/libjcore1xx.so各种CPU类型的native开发包。

res集成SDK必须添加的资源文件

example是一个完整的 Android 项目,通过这个演示了 JPush SDK 的基本用法,可以用来做参考。

 

如图,将所需jar、so包导入libs中,并根据下图在app.builde中添加依赖

 

 

 

AndroidManifest 如下:

 

 

具体实现:

 

1.在application中

  JPushInterface.setDebugMode(true);     // 设置开启日志,发布时请关闭JPushInterface.init(this);            // 初始化 JPush

 

 

初始化推送:JPushInterface.init(getApplicationContext());

停止推送:JPushInterface.stopPush(getApplicationContext());

恢复推送:JPushInterface.resumePush(getApplicationContext());

 

2. MyReceiver

/**
 * 自定义接收器
 *
 * 如果不定义这个 Receiver,则:
 * 1) 默认用户会打开主界面
 * 2) 接收不到自定义消息
 */

public class MyReceiver extends BroadcastReceiver {
   private static final String TAG = "JIGUANG-Example";

   @Override
   public void onReceive(Context context, Intent intent) {
      try {
         Bundle bundle = intent.getExtras();
         Logger.d(TAG, "[MyReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle));

         if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
            String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
            Logger.d(TAG, "[MyReceiver] 接收Registration Id : " + regId);
            //send the Registration Id to your server...

         
}  else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
            Logger.d(TAG, "[MyReceiver] 接收到推送下来的通知");
            int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
            Logger.d(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId);

         } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
            Logger.d(TAG, "[MyReceiver] 用户点击打开了通知");

            //打开自定义的Activity
            
Intent i = new Intent(context, TestActivity.class);
            i.putExtras(bundle);
            //i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
            context.startActivity(i);

         } else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) {
            Logger.d(TAG, "[MyReceiver] 用户收到到RICH PUSH CALLBACK: " + bundle.getString(JPushInterface.EXTRA_EXTRA));
            //在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码,比如打开新的Activity, 打开一个网页等..

         
} else if(JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) {
            boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false);
            Logger.w(TAG, "[MyReceiver]" + intent.getAction() +" connected state change to "+connected);
         } else {
            Logger.d(TAG, "[MyReceiver] Unhandled intent - " + intent.getAction());
         }
      } catch (Exception e){

      }

   }

   // 打印所有的 intent extra 数据
   
private static String printBundle(Bundle bundle) {
      StringBuilder sb = new StringBuilder();
      for (String key : bundle.keySet()) {
         if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
            sb.append("\nkey:" + key + ", value:" + bundle.getInt(key));
         }else if(key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)){
            sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key));
         } else if (key.equals(JPushInterface.EXTRA_EXTRA)) {
            if (TextUtils.isEmpty(bundle.getString(JPushInterface.EXTRA_EXTRA))) {
               Logger.i(TAG, "This message has no Extra data");
               continue;
            }

            try {
               JSONObject json = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA));
               Iterator it =  json.keys();

               while (it.hasNext()) {
                  String myKey = it.next();
                  sb.append("\nkey:" + key + ", value: [" +
                        myKey + " - " +json.optString(myKey) + "]");
               }
            } catch (JSONException e) {
               Logger.e(TAG, "Get message extra JSON error!");
            }

         } else {
            sb.append("\nkey:" + key + ", value:" + bundle.getString(key));
         }
      }
      return sb.toString();
   }
   


}

 

极光后台发送推送即可:

 

 

 

 源码地址:https://download.csdn.net/download/silence_sep/10435366

 

更多相关文章

  1. android 技术经验归纳
  2. Android2.1 短信应用解析
  3. Android开发之BroadcastReceiver详解
  4. 【原】android本地推送
  5. Android(安卓)PDU
  6. Android——发送和接收广播
  7. Android利用系统广播---监听应用程序安装和卸载[转]
  8. android2.1短信应用
  9. android sms接收流程(ril分析)

随机推荐

  1. 安卓开发环境安装
  2. Android(安卓)如何在Android项目中搭建HT
  3. Android Intent传递对象
  4. 【转】android自带的软件或者服务
  5. xamarin for android 环境配置
  6. 自定义progressbar 样式
  7. 【android】listview动态更新(与数据库之
  8. Android framework源码按键操作的完整流
  9. android 进程内存查看
  10. Android listview 制作表格样式+由下往上