极光推送简介
极光推送,英文简称 JPush,是一个面向普通开发者开放的,免费的第三方消息推送服务。
自动集成
1. 配置 jcenter 支持
在Project 级 build.gradle 中配置jcenter 支持。(新建 project 默认支持)
buildscript {
repositories {
jcenter()
}
......
}
allprojects {
repositories {
jcenter()
}
}
2. 添加依赖
在 module级的 build.gradle 中添加依赖和 AndroidManifest 的替换变量。
android {
......
defaultConfig {
applicationId "com.xxx.xxx" //JPush 上注册的包名.
......
ndk {
//选择要添加的对应 cpu 类型的 .so 库。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "你的 Appkey ", //JPush 上注册的包名对应的 Appkey.
JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
]
......
}
......
}
dependencies {
......
compile 'cn.jiguang.sdk:jpush:3.8.6' // 此处以JPush 3.8.6 版本为例。
compile 'cn.jiguang.sdk:jcore:2.5.5' // 此处以JCore 2.5.5 版本为例。
......
}
3. 在Application中初始化
MyApplication.java
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//需在 init 之前调用,避免出现部分日志没打印的情况。多进程情况下建议在自定义的 Application 中 onCreate 中调用。
JPushInterface.setDebugMode(true); // 设置开启日志,发布时请关闭日志
JPushInterface.init(this); // 初始化 JPush
}
}
同时要在清单文件中配置
4. 自定义广播和服务类
MyJCommonService.class
/**
* 自定义广播接收器
* 增加极光的广播和服务类继承类
* 服务就是为了让极光服务更加的坚挺,进程不被杀死。
* 在清单文件中注册
*/
public class MyJCommonService extends JCommonService {
private static final String TAG = "MyJCommonService";
//...
}
MyJPushMessageReceiver.class
/**
* create by 星航指挥官
* create on 2020/11/19
* 不过是大梦一场空
* 课不过是孤影照惊鸿
*/
/*
* 状态回调
* 接受极光添加标签呀接口呀注册成功失败的监听,里面可以重写很多办法,来进行获取操作返回的信息。
* */
public class MyJPushMessageReceiver extends JPushMessageReceiver {
private static final String TAG = "MyJPushMessageReceiver";
/**
* tag增删查改的操作会在此方法中回调结果
*/
@Override
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
super.onTagOperatorResult(context, jPushMessage);
//下面2个回调类似
// Log.e(TAG, "onTagOperatorResult查询得到的别名: " + jPushMessage.getAlias());
// Log.e(TAG, "onTagOperatorResult查询得到的标签: " + jPushMessage.getTags());
Log.e(TAG, "onTagOperatorResult错误码0为成功: " + jPushMessage.getErrorCode());
// Log.e(TAG, "onTagOperatorResult传入的标示: " + jPushMessage.getSequence());
//如果错误码为6002 请求超时的话 发送一个广播通知MainActivity重新设置别名和标签
if (jPushMessage.getErrorCode()==6002)