极光推送的集成(下)
一.下载Demo到本地
二. 复制Demo里libs文件夹下的所有文件到项目的libs文件夹下
1.demo的libs文件夹下的文件
2.项目libs的文件夹
注意: 导入的jar包一定要添加到库
说明 :使用android studio的开发者,如果使用jniLibs文件夹导入so文件,则仅需将所有cpu类型的文件夹拷进去;如果将so文件添加在module的libs文件夹下,注意在module的gradle配置中添加一下配置:
android {
......
sourceSets {
main {
jniLibs.srcDirs = ['libs']
......
}
......
}
......
}
三. AndroidManifest.xml配置
1.打开demo的xml
配置文件复制所有权限到项目的配置文件
代码
2.application
的内容复制)
复制备注为 "Required" 的部分,根据提示把包名和Appkey填好
代码
把包名和和appkey都换好后发现有两个错误,根据提示的包名到demo的目录下找到,复制到项目中,再复制包名替换
注意:把关联的两个复制进来后发先会报错,因为这个类调用了别类的方法,你可以根据需要复制也一起复制进来
四. Acitivy里的代码添加
可以参考demo的MainActivity
的代码进行复制,再初始化时调用registerMessageReceiver()
方法
主要是这两个方法:
public void registerMessageReceiver() {
mMessageReceiver = new MessageReceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(MESSAGE_RECEIVED_ACTION);
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, filter);
}
public class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {
String messge = intent.getStringExtra(KEY_MESSAGE);
String extras = intent.getStringExtra(KEY_EXTRAS);
StringBuilder showMsg = new StringBuilder();
showMsg.append(KEY_MESSAGE + " : " + messge + "\n");
if (!ExampleUtil.isEmpty(extras)) {
showMsg.append(KEY_EXTRAS + " : " + extras + "\n");
}
}
} catch (Exception e){
}
}
}
补充:myReceiver调用了MainActivity这个变量,并在不同的生命周期改变其值
public static boolean isForeground = false;
@Override
protected void onResume() {
isForeground = true;
super.onResume();
}
@Override
protected void onPause() {
isForeground = false;
super.onPause();
}
@Override
protected void onDestroy() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onDestroy();
}
最后在初始化时调用Jpush的初始化方法
// 初始化 JPush。如果已经初始化,但没有登录成功,则执行重新登录。
JPushInterface.init(getApplicationContext());
五. 混淆
集成 JPush Android SDK 的混淆
请下载4.x及以上版本的proguard.jar, 并替换你Android Sdk "tools\proguard\lib\proguard.jar"
请在工程的混淆文件中添加以下配置:
-dontoptimize
-dontpreverify
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }
2.0.5 ~ 2.1.7 版本有引入 gson 和 protobuf ,增加排除混淆的配置。(2.1.8版本不需配置)
-dontwarn com.google.**
-keep class com.google.gson.** {*;}
-keep class com.google.protobuf.** {*;}
六.完成,发消息测试
一个简单的极光推送就完成了.觉得文章不错请点赞你的喜欢是我创作的动力