前序
在集成融云SDKLib前提下,如果不接极光可以参考融云三方推送接入流程,如果接入极光推送就不需要重复导入三方推送的jar包,只需要导入jiguang组合包就可以。(只有oppo 厂商 aar 需要单独引入,请将 jiguang/libs 下 com.heytap.msp-push-x.x.x.aar 单独拷贝一份到应用 module/libs 下)。
⚠️注意:集成下面步骤前要先把极光组合包集成完成才可以。
以下所有三方推送内容都需要先集成了极光组合包
implementation project(':jiguang')
- 小米极光组合包
XIAOMI_APPID : "MI-小米appid",
XIAOMI_APPKEY : "MI-小米appkey",
在Androidmanifest中添加
如果使用了 proguard,需要在配置文件中加入,可以防止一个误报的 warning 导致无法成功编译,
-dontwarn com.xiaomi.push.**
-keep class com.xiaomi.push.** { *; }
- VIVO极光组合包
在Mainfest中添加
⚠️注意:vivo推送需要应用上线通过审核才可收到极光测试推送,否则会收不到消息(错误码:10045--应用审核中,不可发送正式消息)
若需要混淆 app,请在混淆文件中添加以下说明,防止 SDK 内容被二次混淆.
-dontwarn com.vivo.push.**
-keep class com.vivo.push.**{*; }
-keep class com.vivo.vms.**{*; }
- OPPO极光组合包
在应用 module gradle 中添加 OPPO 账号配置
android {
......
defaultConfig {
applicationId "com.xxx.xxx" //JPush 上注册的包名.
......
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "你的 Appkey ", //JPush 上注册的包名对应的 Appkey.
JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
OPPO_APPKEY : "OP-OPPO的APPKEY",
OPPO_APPID : "OP-OPPO的APPID",
OPPO_APPSECRET: "OP-OPPO的APPSECRET",
]
......
}
......
}
dependencies {
......
implementation project(':jiguang')
// oppo 厂商 aar 需要单独引入
//** 请将 jiguang/libs 下 com.heytap.msp-push-x.x.x.aar 单独拷贝一份到应用 module/libs 下**
implementation(name: 'com.heytap.msp-push-2.1.0', ext: 'aar')
......
}
如果使用了 proguard,需要在配置文件中加入,可以防止一个误报的 warning 导致无法成功编译
-dontwarn com.coloros.mcsdk.**
-keep class com.coloros.mcsdk.** { *; }
-dontwarn com.heytap.**
-keep class com.heytap.** { *; }
-dontwarn com.mcs.**
-keep class com.mcs.** { *; }
⚠️注意:
接收 OPPO 推送需要用户的 oppo 手机开启应用的通知权限。
OPPO推送暂时只支持通知栏消息的推送。消息下发到 OS 系统模块并由系统通知模块展示,在用户点击通知前,不启动应用。
OPPO 推送的机型和规则等相关内容请参考 OPPO PUSH FAQ (opens new window)。
- 魅族极光组合包
- 需要厂商通道回执配置,需要去魅族官网进行配置,配置成功后给极光发送邮件,参考文档https://docs.jiguang.cn/jpush/client/Android/android_callback/#_4
- 对于同一个应用集成了多个推送SDK,且其他SDK也使用了魅族通道的用户: 可以将这个极光内置的Receiver,换成自己定义的Receiver。 这个Receiver必须继承魅族的com.meizu.cloud.pushsdk.MzPushMessageReceiver 且在每个回调方法,都回调给极光的PluginMeizuPlatformsReceiver。类似于这样:
public class MyMZPushReceiver extends MzPushMessageReceiver {
final PluginMeizuPlatformsReceiver receiver = new PluginMeizuPlatformsReceiver();
@Override
public void onReceive(Context context, Intent intent) {
receiver.onReceive(context, intent);
}
@Override
public void onRegister(Context context, String s) {
receiver.onRegister(context, s);
}
@Override
public void onMessage(Context context, String s) {
receiver.onMessage(context, s);
}
@Override
public void onNotificationArrived(Context context, MzPushMessage mzPushMessage) {
receiver.onNotificationArrived(context, mzPushMessage);
}
@Override
public void onNotificationClicked(Context context, MzPushMessage mzPushMessage) {
receiver.onNotificationClicked(context, mzPushMessage);
}
@Override
public void onUnRegister(Context context, boolean b) {
receiver.onUnRegister(context, b);
}
@Override
public void onPushStatus(Context context, PushSwitchStatus pushSwitchStatus) {
receiver.onPushStatus(context, pushSwitchStatus);
}
@Override
public void onRegisterStatus(Context context, RegisterStatus registerStatus) {
receiver.onRegisterStatus(context, registerStatus);
}
@Override
public void onUnRegisterStatus(Context context, UnRegisterStatus unRegisterStatus) {
receiver.onUnRegisterStatus(context, unRegisterStatus);
}
@Override
public void onSubTagsStatus(Context context, SubTagsStatus subTagsStatus) {
receiver.onSubTagsStatus(context, subTagsStatus);
}
@Override
public void onSubAliasStatus(Context context, SubAliasStatus subAliasStatus) {
receiver.onSubAliasStatus(context, subAliasStatus);
}
@Override
public void onUpdateNotificationBuilder(PushNotificationBuilder pushNotificationBuilder) {
receiver.onUpdateNotificationBuilder(pushNotificationBuilder);
}
}
在Androidmanifest中添加
如果使用了 proguard,需要在配置文件中加入,可以防止一个误报的 warning 导致无法成功编译,
-dontwarn com.meizu.cloud.**
-keep class com.meizu.cloud.** { *; }
- 华为推送组合包
1.添加 Huawei SDK 到项目中
在根级 build.gradle 中添加规则,以纳入 HMS 服务插件 和 华为 的 Maven 代码库,可根据华为开发者联盟发布的版本更新选择最新版本:
buildscript {
repositories {
google()
jcenter()
mavenCentral()
maven {url 'http://developer.huawei.com/repo/'}
}
dependencies {
classpath 'com.huawei.agconnect:agcp:1.4.2.300'
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven {url 'http://developer.huawei.com/repo/'}
}
}
在 app 模块的 build.gradle 添加
dependencies {
// 接入华为厂商
implementation 'com.huawei.hms:push:5.3.0.301'
}
在应用 module 的 build.gradle 文件底部添加 apply plugin 代码行,以启用 gradle 插件:
// ADD THIS AT THE TOP
apply plugin: 'com.huawei.agconnect'
2. 配置接收 HMS 消息的服务
对于同一个应用集成了多个推送SDK,且其他SDK也使用了华为通道的用户: 可以将这个极光内置的 Service,换成自己定义的 Service。 这个 Service 必须继承华为的 com.huawei.hms.push.HmsMessageService 且在每个回调方法,都回调给极光的 PluginHuaweiPlatformsService。类似于这样:
public class MyHWPushService extends HmsMessageService {
final PluginHuaweiPlatformsService service = new PluginHuaweiPlatformsService();
@Override
public void onNewToken(String s) {
service.onNewToken(s);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
service.onMessageReceived(remoteMessage);
}
@Override
public void onMessageSent(String s) {
service.onMessageSent(s);
}
@Override
public void onSendError(String s, Exception e) {
service.onSendError(s,e);
}
@Override
public void onDeletedMessages() {
service.onDeletedMessages();
}
}
3.在build.gradle中配置在华为后台添加的指纹证书对应的签名
注:HMS 服务必须要求 app 签名才能注册成功。指纹证书是在终端采用keytool -list -v -keystore keystorefileName 获取偶对应的指纹证书.
在 project 的 build.gradle 添加 如下内容
android {
signingConfigs {
release {
storeFile file("../myrong.jks")
storePassword '123456'
keyAlias 'key0'
keyPassword '123456'
}
debug {
storeFile file("../myrong.jks")
storePassword '123456'
keyAlias 'key0'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
}
成功集成华为厂商通道的标志
插件集成成功后,会向华为server请求token,拿到这个token即可证明 集成没问题。
token是可以在日志里查到的,观察极光日志输出:
贴图
完成华为厂商通道 SDK 集成后,需要开发者在华为开放平台开通并配置消息回执,方可把华为的送达统计等数据回调到极光平台,具体操作如下:* 登录华为AppGallery Connect网站;,选择需要开通推送服务的应用,进入应用服务页面
-
左侧导航选择增长-推送服务,在右侧配置页面选择配置-服务状态-回执状态,点击
开通
按钮 -
华为开通回执功能页面如下,填写相关信息
回调地址:可将极光回调地址 https://xpnscb.jpush.cn/v3/hpnsreport
HTTPS证书:可以通过命令:openssl s_client -connect xpnscb.jpush.cn:443 -showcerts 来获取证书
说明:
旧回调地址:https://report.jpush.cn/v3/hpnsreport 需尽快切换到新回调地址:https://xpnscb.jpush.cn/v3/hpnsreport
到此小米、vivo、oppo、魅族、华为推送都就集成完成了,特别提醒:一定要仔细检查各个三方推送的appKey、appId、appSecret等参数是否填写正确!!!