集成极光推送

1,首先肯定是注册,添加应用

2,开始自动集成比手动集成简单第一步 在 build.gradle

defaultConfig {

multiDexEnabledtrue

applicationId rootProject.ext.cfg.applicationId

minSdkVersionrootProject.ext.cfg.minSdkVersion

targetSdkVersionrootProject.ext.cfg.targetSdkVersion

versionCode rootProject.ext.pkg.versionCode

versionName rootProject.ext.pkg.versionName

testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"

vectorDrawables.useSupportLibrarytrue

jackOptions {

enabledtrue

}

// dex突破65535的限制

multiDexEnabledtrue

//默认是umeng的渠道

manifestPlaceholders = [UMENG_CHANNEL_VALUE:"umeng"]

ndk {

//选择要添加的对应cpu类型的.so库(不需要的删除即可)。

abiFilters'armeabi','armeabi-v7a','armeabi-v8a','x86','x86_64','mips','mips64'

}

manifestPlaceholders= [

JPUSH_PKGNAME:applicationId,

JPUSH_APPKEY:"your appkey",//JPush上注册的包名对应的appkey(*换成你的*)

JPUSH_CHANNEL:"developer-default",//暂时填写默认值即可.

]

}

第二步

还是Module的build.gradle文件中哦

compile'cn.jiguang:jpush:2.1.8'// 此处以SDK 2.1.8版本为例

编译一下

如果报错的话,需要在Project的gradle.properties文件中添加下面的代码:

android.useDeprecatedNdk=true第三步    在MyApplication继承 Application中onCreat()方法中

初始化sdk

JPushInterface.setDebugMode(true);//正式版的时候设置false,关闭调试

JPushInterface.init(this);

//建议添加tag标签,发送消息的之后就可以指定tag标签来发送了

Set set =newHashSet<>();

set.add("xunChang");//名字任意,可多添加几个

set.add("Home");

set.add("Expand");

set.add("Mine");

JPushInterface.setTags(this,set, null);//设置标签第四步   自定义广播

packagecom.etcxc.android.base;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.text.TextUtils;

importandroid.util.Log;

importorg.json.JSONException;

importorg.json.JSONObject;

importjava.util.Iterator;

importcn.jpush.android.api.JPushInterface;

/**

*自定义接收器

*

*如果不定义这个Receiver,则:

* 1)默认用户会打开主界面

* 2)接收不到自定义消息

*/

public classMyReceiverextendsBroadcastReceiver{

private static finalStringTAG="JIGUANG-Example";

@Override

public voidonReceive(Context context,Intent intent) {

try{

Bundle bundle = intent.getExtras();

Log.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);

Log.d(TAG,"[MyReceiver]接收Registration Id : "+ regId);

//send the Registration Id to your server...

}else if(JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {

Log.d(TAG,"[MyReceiver]接收到推送下来的自定义消息: "+ bundle.getString(JPushInterface.EXTRA_MESSAGE));

processCustomMessage(context,bundle);

}else if(JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {

Log.d(TAG,"[MyReceiver]接收到推送下来的通知");

intnotifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);

Log.d(TAG,"[MyReceiver]接收到推送下来的通知的ID: "+ notifactionId);

}else if(JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {

Log.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())) {

Log.d(TAG,"[MyReceiver]用户收到到RICH PUSH CALLBACK: "+ bundle.getString(JPushInterface.EXTRA_EXTRA));

//在这里根据JPushInterface.EXTRA_EXTRA的内容处理代码,比如打开新的Activity, 打开一个网页等..

}else if(JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) {

booleanconnected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false);

Log.w(TAG,"[MyReceiver]"+ intent.getAction() +" connected state change to "+connected);

}else{

Log.d(TAG,"[MyReceiver] Unhandled intent - "+ intent.getAction());

}

}catch(Exception e){

}

}

//打印所有的intent extra数据

private staticStringprintBundle(Bundle bundle) {

StringBuilder sb =newStringBuilder();

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))) {

Log.i(TAG,"This message has no Extra data");

continue;

}

try{

JSONObject json =newJSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA));

Iterator it =  json.keys();

while(it.hasNext()) {

String myKey = it.next().toString();

sb.append("nkey:"+ key +", value: ["+

myKey +" - "+json.optString(myKey) +"]");

}

}catch(JSONException e) {

Log.e(TAG,"Get message extra JSON error!");

}

}else{

sb.append("nkey:"+ key +", value:"+ bundle.getString(key));

}

}

returnsb.toString();

}

//send msg to MainActivity

private voidprocessCustomMessage(Context context,Bundle bundle) {

//    if (MainActivity.isForeground) {

//      String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);

//      String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);

//      Intent msgIntent = new Intent(MainActivity.MESSAGE_RECEIVED_ACTION);

//      msgIntent.putExtra(MainActivity.KEY_MESSAGE, message);

//      if (!ExampleUtil.isEmpty(extras)) {

//          try {

//            JSONObject extraJson = new JSONObject(extras);

//            if (extraJson.length() > 0) {

//                msgIntent.putExtra(MainActivity.KEY_EXTRAS, extras);

//            }

//          } catch (JSONException e) {

//

//          }

//

//      }

//      LocalBroadcastManager.getInstance(context).sendBroadcast(msgIntent);

//    }

}

}第五步 注册广播  AndroidManifest.xml 并添加相应权限 ,看官网demo添加

AndroidManifest.xml

第六步、混淆

在ProGuard文件(即proguard-rules.pro)中加入混淆代码:

-dontoptimize

-dontpreverify

-dontwarn cn.jpush.**

-keepclasscn.jpush.** { *;}最后  去测试吧~~~~~~

极光推送 android 最新,Android——快速集成极光推送-Go语言中文社区相关推荐

  1. android不死service,Android面试题-Service不死之身-Go语言中文社区

    自定义控件 联网 工具 数据库 源码分析相关面试题 Activity相关面试题 Service相关面试题 与XMPP相关面试题 与性能优化相关面试题 与登录相关面试题 与开发相关面试题 与人事相关面试 ...

  2. 在内网中使用maven_maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)-Go语言中文社区...

    在上一章<maven构建docker镜像三部曲之二:编码和构建镜像>的实战中,我们将spring boot的web工程构建成docker镜像并在本地启动容器成功,今天我们把docker-m ...

  3. Android心电数据分析,Android SurfaceView+Canvas画脉搏/心电数据图-Go语言中文社区

    实际演示效果: Canvas 画图基本步骤: 1.布局添加一个SurfaceView<?xml version="1.0" encoding="utf-8" ...

  4. java adt简单开发,android java开发 第一天 之熟悉eclipse adt-Go语言中文社区

    1.下载并安装好android-sdk后(android-sdk里包含了android 1.6 ~ android4.0的所有api,支持各种版本的android) 2.下载adt(android d ...

  5. 国内下载android源码,Android国内源码下载——亲测成功-Go语言中文社区

    一.工具准备 首先安装git和curl工具 sudo apt-get install git-core curl 然后通过curl下载repo并配置repo mkdir ~/bin echo &quo ...

  6. android电视盒子设备名字,Android电视TV盒子开发——常用ADB命令-Go语言中文社区...

    目前智能电视(TV).盒子(机顶盒)基本都是Android系统,所以开发盒子app的重任自然就会落到我们这些苦逼Android程序员身上. PS:目前盒子的Android版本绝大部分还都是在6.0以下 ...

  7. android 用户中心布局,android用户中心头像选择功能的方法实现-Go语言中文社区

    实现总体思路:主要采用startActivityForResult(intent, 0x111)和setResult(0x111, intent)方法.并且,在MainActivity中实现 onAc ...

  8. go语言编写php扩展,[原创]快速开发一个PHP扩展-Go语言中文社区

    快速开发一个PHP扩展 本文通过非常快速的方式讲解了如何制作一个PHP 5.2 环境的扩展(PHP Extension),希望能够在图文的方式下让想快速学习的朋友了解一下制作过程. 需求:比如开发一个 ...

  9. Android 一分钟快速使用极光推送

    之前一直都是在项目中,直接把jpush下载的资源直接放在主module,每次感觉需要配置的东西很多,有时候会担心缺少什么导致最后跑不通. 如果你是老手,每个人都各有各的风格习惯,相互学习的可以了解下 ...

最新文章

  1. Linux 下 Redis 安装详解
  2. NOIP2009潜伏者【B003】
  3. 伟世盾安助国电高级培训中心实现一网双管
  4. Linux常用命令----压缩解压命令
  5. 使用管道符在PowerShell中进行各种数据操作
  6. Python开发【Part 11】:线程与进程
  7. C语言程序设计--输入与输出
  8. Android插件化开发之AMS与应用程序(客户端ActivityThread、Instrumentation、Activity)通信模型分析
  9. 图论知识总结(简易)
  10. 应用程序的可视化图形引擎库控件Vectordraw Developer Framework
  11. Raspberry 4B 2G Shairport-sync Airplay
  12. ILSVRC历届冠军论文笔记
  13. 计算机论文里的代码查重时被标红怎么办呢?
  14. 高等数学知识点总结——导数定义及性质、微积分、泰勒展开、洛必达法则、函数单调性判断
  15. Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程
  16. windows文件共享客户端的一些事——samba文件共享
  17. echart报错echarts/lib/visual/dataColor in ./node_modules/echarts-liquidfill/src/liquidFill.js
  18. 禅意茶艺茶道茶文化PPT模板
  19. mysql utf8和gbk的区别_MySQL字符集 GBK、GB2312、UTF8区别
  20. vba批量合并指定的sheet_Excel VBA 多个工作表合并方法

热门文章

  1. 真正的程序员,从来不会告诉你这些事!
  2. 奇奇怪怪的知识增加了,大括号的历史你知道吗?
  3. 反转了!“只问了1个框架,就给了35K的Python岗”
  4. sass封装h5适配文件
  5. html文字...点击后全部显示,js 文字超出部分隐藏、点击显示更多示例
  6. android 获取cpu使用率_超详细的zabbix监控windows磁盘IO及cpu使用率教程
  7. resttemplate post提交json_SEO工具脚本,Python百度普通收录API提交工具
  8. HttpClient4.5 简单入门实例(一)
  9. vba上传指定文件ftp服务器
  10. Docker Redis部署_04