厂商通道 SDK 集成指南
最近更新:2022-06-07
展开全部

厂商通道 SDK 集成指南

本文旨在指导客户使用自动集成的方式集成各个厂商通道的 SDK,实现离线推送。

SDK 下载详见 资源下载

前提条件

集成厂商通道 SDK 需要先申请厂商通道相关参数,详情参考 厂商通道参数申请指南

小米通道集成指南

配置 mavenCentral 支持

在 Project 根目录的主 gradle 中配置 mavenCentral 支持。(新建 project 默认配置就支持)

buildscript { repositories { mavenCentral() } } allprojects { repositories { mavenCentral() } }
          buildscript {  
    repositories {  
        mavenCentral()  
    }  
}  

allprojects {
    repositories {  
        mavenCentral()  
    } 
}

        
此代码块在浮窗中显示

配置依赖

在应用 module 的 gradle 中 dependencies 节点添加如下代码:

dependencies { //厂商版本和 JPush SDK 版本保持一致 implementation 'cn.jiguang.sdk.plugin:xiaomi:4.x.x' }
          dependencies {
    //厂商版本和 JPush SDK 版本保持一致
    implementation 'cn.jiguang.sdk.plugin:xiaomi:4.x.x'
}

        
此代码块在浮窗中显示

配置参数

在应用 module 的 gradle 中 defaultConfig 节点添加如下代码:

小米的参数需要添加前缀 “MI-”。

manifestPlaceholders = [ // 设置manifest.xml中的变量 XIAOMI_APPKEY : "MI-您的应用对应的小米的APPKEY",// 小米平台注册的appkey XIAOMI_APPID : "MI-您的应用对应的小米的APPID", // 小米平台注册的appid ]
          manifestPlaceholders = [
    // 设置manifest.xml中的变量
    XIAOMI_APPKEY : "MI-您的应用对应的小米的APPKEY",// 小米平台注册的appkey 
    XIAOMI_APPID : "MI-您的应用对应的小米的APPID", // 小米平台注册的appid
]

        
此代码块在浮窗中显示

配置代码混淆

如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:

-dontwarn com.xiaomi.push.** -keep class com.xiaomi.push.** { *; }
          -dontwarn com.xiaomi.push.**
-keep class com.xiaomi.push.** { *; }

        
此代码块在浮窗中显示

集成结果判断

若集成成功,日志显示如下:

D/JIGUANG-JPush: [XMPlatformsReceiver] xiao mi push register success D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=Tv3KBknVcnEaXnLe89MGEH3SWVgUYdLDYzJaST30IoIGATl2tv5eu6iuT/PTO0Mj, platform=1}],enable:true I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:Tv3KBknVcnEaXnLe89MGEH3SWVgUYdLDYzJaST30IoIGATl2tv5eu6iuT/PTO0Mj
          D/JIGUANG-JPush: [XMPlatformsReceiver] xiao mi push register success
D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=Tv3KBknVcnEaXnLe89MGEH3SWVgUYdLDYzJaST30IoIGATl2tv5eu6iuT/PTO0Mj, platform=1}],enable:true
I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:Tv3KBknVcnEaXnLe89MGEH3SWVgUYdLDYzJaST30IoIGATl2tv5eu6iuT/PTO0Mj

        
此代码块在浮窗中显示

小米通道测试方法

1.进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,填写参数:AppKey、AppID、AppSecret、DefaultTitle,并点击“启用”。 2.杀死 App 进程后进行推送,如果能够收到推送,则表明厂商通道集成成功。

华为通道集成指南

配置 mavenCentral 支持

在 Project 根目录的主 gradle 中配置 mavenCentral 支持和 agconnect 依赖。

buildscript { repositories { google() mavenCentral() maven {url 'https://developer.huawei.com/repo/'} } } buildscript { dependencies { classpath 'com.huawei.agconnect:agcp:1.6.0.300' } } allprojects { repositories { google() mavenCentral() maven {url 'https://developer.huawei.com/repo/'} } }
          buildscript {
    repositories {
        google()
        mavenCentral()
        maven {url 'https://developer.huawei.com/repo/'}
    }
}
buildscript {
    dependencies {
        classpath 'com.huawei.agconnect:agcp:1.6.0.300'
    }
}
allprojects {
    repositories {
        google()
        mavenCentral()
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

        
此代码块在浮窗中显示

添加华为插件

在应用 module 的 build.gradle 文件底部添加 apply plugin 代码行,以启用 gradle 插件:

apply plugin: 'com.huawei.agconnect'
          apply plugin: 'com.huawei.agconnect'

        
此代码块在浮窗中显示

配置依赖

在应用 module 的 gradle 中 dependencies 节点添加如下代码,可根据华为发布的版本更新选择最新版本:

dependencies { //JPush Android SDK 4.6.0 以上版本更新华为 HMS SDK 版本为:6.3.0.304,接入要求:Android Studio 3.6.1 或更高版本、Android Gradle 插件 3.5.4 或更高版本。 implementation 'com.huawei.hms:push:6.3.0.304' //厂商版本和 JPush SDK 版本保持一致 implementation 'cn.jiguang.sdk.plugin:huawei:4.x.x' }
          dependencies {
    //JPush Android SDK 4.6.0 以上版本更新华为 HMS SDK 版本为:6.3.0.304,接入要求:Android Studio 3.6.1 或更高版本、Android Gradle 插件 3.5.4 或更高版本。
    implementation 'com.huawei.hms:push:6.3.0.304'
    
    //厂商版本和 JPush SDK 版本保持一致
    implementation 'cn.jiguang.sdk.plugin:huawei:4.x.x'
}

        
此代码块在浮窗中显示

配置 agconnect-services.json 文件

参考 厂商通道参数申请指南 获取 agconnect-services.json 文件,并配置到 app 目录下。

配置签名证书

在 build.gradle 中配置在华为后台添加的指纹证书对应的签名。

HMS 服务必须要求 app 签名才能注册成功,可以在终端采用keytool -list -v -keystore keystorefileName 获取对应的指纹证书。

signingConfigs { release { storeFile file("release.keystore")//签名文件的path storePassword "123456" keyAlias "android.keystore" keyPassword "123456" } } buildTypes { release { minifyEnabled true proguardFiles 'proguard-rules.pro' signingConfig signingConfigs.release } debug{ minifyEnabled false signingConfig signingConfigs.release } }
          signingConfigs {
        release {
            storeFile file("release.keystore")//签名文件的path
            storePassword "123456"
            keyAlias "android.keystore"
            keyPassword "123456"
        }
}

buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug{
          minifyEnabled false
           signingConfig signingConfigs.release
        }
 }

        
此代码块在浮窗中显示

与其他第三方推送SDK冲突

如果 App 还集成了其他第三方推送 SDK,如个推、友盟推送等,需要进行以下步骤处理:

1.创建 Service 继承华为的 com.huawei.hms.push.HmsMessageService。
2.在每个回调方法,都回调给极光的 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(); } }
          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();
    }
}

        
此代码块在浮窗中显示

配置代码混淆

如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:

-ignorewarning -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.hianalytics.android.**{*;} -keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;}
          -ignorewarning 
-keepattributes *Annotation* 
-keepattributes Exceptions 
-keepattributes InnerClasses 
-keepattributes Signature 
-keepattributes SourceFile,LineNumberTable 
-keep class com.hianalytics.android.**{*;} 
-keep class com.huawei.updatesdk.**{*;} 
-keep class com.huawei.hms.**{*;}

        
此代码块在浮窗中显示

如果开发者使用了 AndResGuard,需要在混淆配置文件中加入 AndResGuard 白名单。

"R.string.hms*", "R.string.connect_server_fail_prompt_toast", "R.string.getting_message_fail_prompt_toast", "R.string.no_available_network_prompt_toast", "R.string.third_app_*", "R.string.upsdk_*", "R.layout.hms*", "R.layout.upsdk_*", "R.drawable.upsdk*", "R.color.upsdk*", "R.dimen.upsdk*", "R.style.upsdk*", "R.string.agc*"
          "R.string.hms*",
"R.string.connect_server_fail_prompt_toast",
"R.string.getting_message_fail_prompt_toast",
"R.string.no_available_network_prompt_toast",
"R.string.third_app_*",
"R.string.upsdk_*",
"R.layout.hms*",
"R.layout.upsdk_*",
"R.drawable.upsdk*",
"R.color.upsdk*",
"R.dimen.upsdk*",
"R.style.upsdk*",
"R.string.agc*"

        
此代码块在浮窗中显示

集成结果判断

若集成成功,日志显示如下:

I/JIGUANG-JPush: [HWPushHelper] get huawei token:IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA I/JIGUANG-JPush: [HWPushHelper] isNeedReport:true D/JIGUANG-JPush: [ActionHelper] doAction:third_action D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA, platform=2}],enable:true I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA
          I/JIGUANG-JPush: [HWPushHelper] get huawei token:IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA
I/JIGUANG-JPush: [HWPushHelper] isNeedReport:true
D/JIGUANG-JPush: [ActionHelper] doAction:third_action
D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA, platform=2}],enable:true
I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA

        
此代码块在浮窗中显示

华为通道测试方法

1.进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,填写参数:AppID、AppSecret、DefaultTitle,并点击“启用” 2.杀死 App 进程后进行推送,如果能够收到推送,则表明厂商通道集成成功。

魅族通道集成指南

配置 mavenCentral 支持

在 Project 根目录的主 gradle 中配置 mavenCentral 支持。(新建 project 默认配置就支持)

buildscript { repositories { mavenCentral() } } allprojects { repositories { mavenCentral() } }
          buildscript {  
    repositories {  
        mavenCentral()  
    }  
}  

allprojects {
    repositories {  
        mavenCentral()  
    } 
}

        
此代码块在浮窗中显示

配置依赖

在应用 module 的 gradle 中 dependencies 节点添加如下代码:

dependencies { //厂商版本和JPush SDK版本保持一致 implementation 'cn.jiguang.sdk.plugin:meizu:4.x.x' }
          dependencies {
  //厂商版本和JPush SDK版本保持一致
  implementation 'cn.jiguang.sdk.plugin:meizu:4.x.x'
}

        
此代码块在浮窗中显示

配置参数

在应用 module 的 gradle 中 defaultConfig 节点添加如下代码:

魅族的参数需要添加前缀 “MZ-”。

manifestPlaceholders = [ // 设置manifest.xml中的变量 MEIZU_APPKEY : "MZ-您的应用对应的魅族的APPKEY", // 魅族平台注册的appkey MEIZU_APPID : "MZ-您的应用对应的魅族的APPID", // 魅族平台注册的appid ]
          manifestPlaceholders = [
     // 设置manifest.xml中的变量
     MEIZU_APPKEY : "MZ-您的应用对应的魅族的APPKEY", // 魅族平台注册的appkey
     MEIZU_APPID : "MZ-您的应用对应的魅族的APPID", // 魅族平台注册的appid
]

        
此代码块在浮窗中显示

与其他第三方推送SDK冲突

如果 App 还集成了其他第三方推送 SDK,如个推、友盟推送等,需要进行以下步骤处理:

1.创建 Receiver 必须继承魅族的 com.meizu.cloud.pushsdk.MzPushMessageReceiver.
2.每个回调方法都回调给极光的 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); } }
          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);
    }
}

        
此代码块在浮窗中显示

配置代码混淆

如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:

-dontwarn com.meizu.cloud.** -keep class com.meizu.cloud.** { *; }
          -dontwarn com.meizu.cloud.**
-keep class com.meizu.cloud.** { *; }

        
此代码块在浮窗中显示

集成结果判断

若集成成功,日志显示如下:

D/JIGUANG-JPush: [ActionHelper] doAction:third_action D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=DDI5c060475064d447b40670206756d73605705037205, platform=3}],enable:true I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:DDI5c060475064d447b40670206756d73605705037205
          D/JIGUANG-JPush: [ActionHelper] doAction:third_action
D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=DDI5c060475064d447b40670206756d73605705037205, platform=3}],enable:true
I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:DDI5c060475064d447b40670206756d73605705037205

        
此代码块在浮窗中显示

魅族厂商测试方法

1.进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,填写参数:AppKey、AppID、AppSecret、DefaultTitle,并点击“启用”。 2.杀死 App 进程后进行推送,如果能够收到推送,则表明厂商通道集成成功。

vivo 通道集成指南

配置 mavenCentral 支持

在 Project 根目录的主 gradle 中配置 mavenCentral 支持。(新建 project 默认配置就支持)

buildscript { repositories { mavenCentral() } } allprojects { repositories { mavenCentral() } }
          buildscript {  
    repositories {  
        mavenCentral()  
    }  
}  

allprojects {
    repositories {  
        mavenCentral()  
    } 
}

        
此代码块在浮窗中显示

配置依赖

在应用 module 的 gradle 中 dependencies 节点添加如下代码:

dependencies{ //厂商版本和 JPush SDK 版本保持一致 implementation 'cn.jiguang.sdk.plugin:vivo:4.x.x' }
          dependencies{  
    //厂商版本和 JPush SDK 版本保持一致
    implementation 'cn.jiguang.sdk.plugin:vivo:4.x.x'
} 

        
此代码块在浮窗中显示

配置参数

在应用 module 的 gradle 中 defaultConfig 节点添加如下代码:

manifestPlaceholders=[ VIVO_APPKEY : "您的应用对应的VIVO的APPKEY", // VIVO平台注册的appkey VIVO_APPID : "您的应用对应的VIVO的APPID", // VIVO平台注册的appid ]
          manifestPlaceholders=[  
    VIVO_APPKEY : "您的应用对应的VIVO的APPKEY", // VIVO平台注册的appkey
    VIVO_APPID : "您的应用对应的VIVO的APPID", // VIVO平台注册的appid
] 

        
此代码块在浮窗中显示

集成结果判断

若集成成功,日志显示如下:

D/JIGUANG-JPush: [PushMessageReceiver] Vivo regId:15723354120401574713525 D/JIGUANG-JPush: [ActionHelper] doAction:third_action D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=15723354120401574713525, platform=5}],enable:true I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:15723354120401574713525
          D/JIGUANG-JPush: [PushMessageReceiver] Vivo regId:15723354120401574713525
D/JIGUANG-JPush: [ActionHelper] doAction:third_action
D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=15723354120401574713525, platform=5}],enable:true
I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:15723354120401574713525

        
此代码块在浮窗中显示

配置代码混淆

如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:

-dontwarn com.vivo.push.** -keep class com.vivo.push.**{*; } -keep class com.vivo.vms.**{*; }
          -dontwarn com.vivo.push.**
-keep class com.vivo.push.**{*; }
-keep class com.vivo.vms.**{*; }

        
此代码块在浮窗中显示

vivo 通道测试方法

1.进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,填写参数:AppKey、AppID、AppSecret、DefaultTitle,并点击“启用”。 2.杀死 App 进程后进行推送,如果能够收到推送,则表明厂商通道集成成功。

若 vivo 未上架,推送测试时需要在 vivo 推送平台添加测试设备,并且只能通过 API 指定推送参数 push_mode 进行下发。)

"third_party_channel": { "vivo": { "distribution": "ospush", "classification": 1, "push_mode": 1//可选,2020/09/21 新增,对应 vivo 的 pushMode 字段,值为int 类型,值分别是:“0”表示正式推送;“1”表示测试推送,不填默认为0 } }
          "third_party_channel": {
    "vivo": {
        "distribution": "ospush",
        "classification": 1,
        "push_mode": 1//可选,2020/09/21 新增,对应 vivo 的 pushMode 字段,值为int 类型,值分别是:“0”表示正式推送;“1”表示测试推送,不填默认为0
    }
}

        
此代码块在浮窗中显示

OPPO 通道集成指南

配置 mavenCentral 支持

在 Project 根目录的主 gradle 中配置 mavenCentral 支持。(新建 project 默认配置就支持)

buildscript { repositories { mavenCentral() } } allprojects { repositories { mavenCentral() } }
          buildscript {  
    repositories {  
        mavenCentral()  
    }  
}  

allprojects {
    repositories {  
        mavenCentral()  
    } 
}

        
此代码块在浮窗中显示

添加 aar 配置

在 build 文件中添加以下代码:

Android{ .... repositories { flatDir { dirs 'libs' } } .... }
          Android{
....
    repositories {
            flatDir {
                dirs 'libs'
            }
        }
....
}

        
此代码块在浮窗中显示

配置依赖

在应用 module 的 gradle 中 dependencies 节点添加如下代码:

dependencies{ implementation 'cn.jiguang.sdk.plugin:oppo:4.x.x' // JPush Android SDK v4.6.0 开始,需要单独引入 oppo 厂商 aar ,请下载官网 SDK 包并把 jpush-android-xxx-release/third-push/oppo/libs 下的 aar 文件单独拷贝一份到应用 module/libs 下 implementation(name: 'com.heytap.msp-push-3.0.0', ext: 'aar') //以下为 OPPO 3.0.0 aar需要依赖 implementation 'com.google.code.gson:gson:2.6.2' implementation 'commons-codec:commons-codec:1.6' implementation 'androidx.annotation:annotation:1.1.0' }
          dependencies{  
    
    implementation 'cn.jiguang.sdk.plugin:oppo:4.x.x'

    // JPush Android SDK v4.6.0 开始,需要单独引入 oppo 厂商 aar ,请下载官网 SDK 包并把 jpush-android-xxx-release/third-push/oppo/libs 下的 aar 文件单独拷贝一份到应用 module/libs 下
    implementation(name: 'com.heytap.msp-push-3.0.0', ext: 'aar')

    //以下为 OPPO 3.0.0 aar需要依赖
    implementation 'com.google.code.gson:gson:2.6.2'
    implementation 'commons-codec:commons-codec:1.6'
    implementation 'androidx.annotation:annotation:1.1.0'
} 

        
此代码块在浮窗中显示

配置参数

在应用 module 的 gradle 中 defaultConfig 节点添加如下代码:

OPPO 的参数需要添加前缀 “OP-”。

manifestPlaceholders=[ OPPO_APPKEY : "OP-您的应用对应的OPPO的APPKEY", // OPPO平台注册的appkey OPPO_APPID : "OP-您的应用对应的OPPO的APPID", // OPPO平台注册的appid OPPO_APPSECRET: "OP-您的应用对应的OPPO的APPSECRET"//OPPO平台注册的appsecret ]
          manifestPlaceholders=[  
    OPPO_APPKEY : "OP-您的应用对应的OPPO的APPKEY", // OPPO平台注册的appkey
    OPPO_APPID : "OP-您的应用对应的OPPO的APPID", // OPPO平台注册的appid
    OPPO_APPSECRET: "OP-您的应用对应的OPPO的APPSECRET"//OPPO平台注册的appsecret
] 

        
此代码块在浮窗中显示

配置代码混淆

如果使用了 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.** { *; }
          -dontwarn com.coloros.mcsdk.**
-keep class com.coloros.mcsdk.** { *; }

-dontwarn com.heytap.**
-keep class com.heytap.** { *; }

-dontwarn com.mcs.**
-keep class com.mcs.** { *; }

        
此代码块在浮窗中显示

集成结果判断

若集成成功,日志显示如下:

D/JIGUANG-JPush: [OPushCallback] OPush registerID is OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6 D/JIGUANG-JPush: [ActionHelper] doAction:third_action D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6, platform=4}],enable:true I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6
          D/JIGUANG-JPush: [OPushCallback] OPush registerID is OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6
D/JIGUANG-JPush: [ActionHelper] doAction:third_action
D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6, platform=4}],enable:true
I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6

        
此代码块在浮窗中显示

OPPO 通道测试方法

1.进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,填写参数:AppKey、AppID、AppSecret、MasterSecret/AppServerSecret、DefaultTitle,并点击“启用”。 2.杀死 App 进程后进行推送,如果能够收到推送,则表明厂商通道集成成功。

若应用未上架,需要在 OPPO 开放平台申请推送测试权限,每个应用每天可以推送1000条公信通道消息。)

FCM 通道集成指南

配置 mavenCentral 支持

在 Project 根目录的主 gradle 中配置 mavenCentral 支持和 google-services 依赖。

buildscript { repositories { mavenCentral() } dependencies { classpath 'com.google.gms:google-services:4.3.8' } } allprojects { repositories { mavenCentral() maven { url "https://maven.google.com" } } }
          buildscript {
    repositories {
        mavenCentral() 
    }
    dependencies {
        classpath 'com.google.gms:google-services:4.3.8'
    }
}

allprojects {
    repositories {
        mavenCentral()
        maven { url "https://maven.google.com" }
    }
}

        
此代码块在浮窗中显示

添加 FCM 插件

在应用 module 的 build.gradle 文件底部添加 apply plugin 代码行,以启用 gradle 插件:

apply plugin: 'com.google.gms.google-services'
          apply plugin: 'com.google.gms.google-services'

        
此代码块在浮窗中显示

配置依赖

在应用 module 的 gradle 中 dependencies 节点添加如下代码:

dependencies { //厂商版本和 JPush SDK 版本保持一致 implementation 'cn.jiguang.sdk.plugin:fcm:4.x.x' implementation 'com.google.firebase:firebase-messaging:23.0.5' }
          dependencies {
    //厂商版本和 JPush SDK 版本保持一致
    implementation 'cn.jiguang.sdk.plugin:fcm:4.x.x'    
    implementation 'com.google.firebase:firebase-messaging:23.0.5'
}

        
此代码块在浮窗中显示

配置 google-services.json文件

参考 厂商通道参数申请指南 获取 google-services.json 文件,并配置到 app 目录下。

配置 FCM 通知图标

在 AndroidManifest.xml 中增加如下配置来设置 FCM 通知图标。

          <meta-data android:name="com.google.firebase.messaging.default_notification_icon"  
     android:resource="@drawable/您要配置的通知图标" />  

        
此代码块在浮窗中显示

集成结果判断

若集成成功,日志显示如下:

D/JIGUANG-JPush: [FCMPushHelper] fcm token is success dj793yH_RO6FqNyKImQJYV:APA91bExj3PSVv50pwtl83LXVeB_HKOCSkyB6qCE12TIwIRl-RKiqCfXjvCshcqVrqn_8htlNBa8_A_8ixq7YIxfrloxig2BryZPCkunyx_z2drz0L-C2K8R7J8Yrojs61WCsF-BZj8h D/JIGUANG-JPush: [ActionHelper] doAction:third_action D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=dj793yH_RO6FqNyKImQJYV:APA91bExj3PSVv50pwtl83LXVeB_HKOCSkyB6qCE12TIwIRl-RKiqCfXjvCshcqVrqn_8htlNBa8_A_8ixq7YIxfrloxig2BryZPCkunyx_z2drz0L-C2K8R7J8Yrojs61WCsF-BZj8h, platform=8}],enable:true I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:dj793yH_RO6FqNyKImQJYV:APA91bExj3PSVv50pwtl83LXVeB_HKOCSkyB6qCE12TIwIRl-RKiqCfXjvCshcqVrqn_8htlNBa8_A_8ixq7YIxfrloxig2BryZPCkunyx_z2drz0L-C2K8R7J8Yrojs61WCsF-BZj8h
          D/JIGUANG-JPush: [FCMPushHelper] fcm token is success dj793yH_RO6FqNyKImQJYV:APA91bExj3PSVv50pwtl83LXVeB_HKOCSkyB6qCE12TIwIRl-RKiqCfXjvCshcqVrqn_8htlNBa8_A_8ixq7YIxfrloxig2BryZPCkunyx_z2drz0L-C2K8R7J8Yrojs61WCsF-BZj8h
D/JIGUANG-JPush: [ActionHelper] doAction:third_action
D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=dj793yH_RO6FqNyKImQJYV:APA91bExj3PSVv50pwtl83LXVeB_HKOCSkyB6qCE12TIwIRl-RKiqCfXjvCshcqVrqn_8htlNBa8_A_8ixq7YIxfrloxig2BryZPCkunyx_z2drz0L-C2K8R7J8Yrojs61WCsF-BZj8h, platform=8}],enable:true
I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:dj793yH_RO6FqNyKImQJYV:APA91bExj3PSVv50pwtl83LXVeB_HKOCSkyB6qCE12TIwIRl-RKiqCfXjvCshcqVrqn_8htlNBa8_A_8ixq7YIxfrloxig2BryZPCkunyx_z2drz0L-C2K8R7J8Yrojs61WCsF-BZj8h

        
此代码块在浮窗中显示

FCM 通道测试方法

1.测试前置条件

  • 手机系统有 GooglePlay 服务且版本不低于17.3.4。
  • 测试需要挂海外节点的VPN,手机网络可以正常访问谷歌。
  • 若使用国内手机测试,只能退到后台测试,不能关闭后台,国内厂商对系统做了调整,关后台会杀进程。
  • 删除 pushservice 多进程配置。

2.进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,填写参数:App Secret,并点击“启用”。 3.若在国内测试,需要在初始化之后设置国家码。

JPushInterface.setDebugMode(true); JPushInterface.init(this); JCoreInterface.testCountryCode("us");
          JPushInterface.setDebugMode(true);
JPushInterface.init(this);
JCoreInterface.testCountryCode("us");

        
此代码块在浮窗中显示

4.在极光后台查看推送的记录是 FCM 通道还是极光通道。

华硕厂商通道

功能描述

  • 集成厂商通道前请确保正确集成了极光 JPush 服务

  • 华硕系统通道功能已经深度嵌入到极光现有JPush SDK,开发者无需额外集成工作,只要使用的是 Android JPush SDK v3.5.6 及其以上版本,都自动支持

  • 在华硕设备上 JPush 通道和华硕通道共存

  • 华硕通道初始化后,JPush 平台已经支持的功能全部支持,推送和对接都通过极光平台进行,使用方式按照极光集成步骤来即可,开发者不需要额外对接其它平台

华硕通道开启方法

进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,点击“启用”。

注: 极光根据华硕系统版本间差异,现采取的方案是支持使用华硕服务系统,通知走华硕通道;对于不支持的机型或系统还是走极光通道。

华硕支持机型和系统说明方式

手机机型 安卓版本 系统版本
ROG2 Android 9 16.0640.1910.8
ROG3 android 10 17.0823.2007.23
ROG5 android 11 18.0810.2011.30
ROG5s android 11 18.1220.2105.29

荣耀通道集成指南

使用限制

  • 设备要求:荣耀设备 Magic UI 5.0+

添加 Honor SDK 到项目中

  • 在 third-push 目录下找到 honor 目录,从 libs 中拷贝其中的 jar 包至工程的 libs 目录下。
  • jar 包说明:
    • HiPushSdk-vxxx-release.aar : honor 推送包
    • HiPushSdkCommon-vxxx-release.aar : honor 推送包

配置 mavenCentral 支持

在 Project 根目录的主 gradle 中配置 mavenCentral 支持。(新建 project 默认配置就支持)

buildscript { repositories { ... mavenCentral() ... } } allprojets { repositories { ... mavenCentral() ... } }
          buildscript {
    repositories {
      ...
      mavenCentral()
      ...
    }
}

allprojets {
    repositories {
        ...
        mavenCentral()
        ...
    }
}

        
此代码块在浮窗中显示

配置参数和依赖

在项目 module 的 build.gradle 中添加如下代码:

defaultConfig { ... manifestPlaceholders = [ ... HONOR_APPID : "您的应用对应的Honor的APP ID", // Honor平台注册的APP ID ... ] ... } dependencies { ... implementation 'cn.jiguang.sdk.plugin:honor:4.7.2' //4.7.2 极光对应插件的版本号 implementation(name: 'HiPushSdk-v6.0.4.101-release', ext: 'aar') implementation(name: 'HiPushSdkCommon-v6.0.4.101-release', ext: 'aar') ... } android { ... repositories { flatDir { dirs 'libs' } } ... }
            defaultConfig {
        ...
        manifestPlaceholders = [
               ...
               HONOR_APPID : "您的应用对应的Honor的APP ID", // Honor平台注册的APP ID
               ...
        ]
        ...
    }
  dependencies {
        ...
        implementation 'cn.jiguang.sdk.plugin:honor:4.7.2' //4.7.2 极光对应插件的版本号
        implementation(name: 'HiPushSdk-v6.0.4.101-release', ext: 'aar')
        implementation(name: 'HiPushSdkCommon-v6.0.4.101-release', ext: 'aar')
        ...
  }
  android {
        ...
        repositories {
            flatDir {
                dirs 'libs'
            }
        }
        ...
  }

        
此代码块在浮窗中显示

注1:极光集成荣耀通道在 JPush Android SDK 4.7.0 添加,对应测试的荣耀 SDK 版本为:HiPushSdk-v6.0.4.101-release.aar、HiPushSdkCommon-v6.0.4.101-release.aar。

注2荣耀 Push SDK 的官方文档

配置签名证书

在 build.gradle 中配置在荣耀后台添加的指纹证书对应的签名。

  • 荣耀服务必须要求 app 签名才能注册成功。
  • 可以在终端采用 keytool -list -v -keystore <签名文件的绝对路径> 获取对应的指纹证书。
  • 如果没有签名文件或密钥口令,也可以在终端采用 keytool -list -printcert -jarfile < Apk 文件的绝对路径> 获取对应的指纹证书。
signingConfigs { release { storeFile file("release.keystore")//签名文件的path storePassword "123456" keyAlias "android.keystore" keyPassword "123456" } } buildTypes { release { minifyEnabled true proguardFiles 'proguard-rules.pro' signingConfig signingConfigs.release } debug{ minifyEnabled false signingConfig signingConfigs.release } }
                signingConfigs {
          release {
              storeFile file("release.keystore")//签名文件的path
              storePassword "123456"
              keyAlias "android.keystore"
              keyPassword "123456"
          }
      }
  
      buildTypes {
          release {
              minifyEnabled true
              proguardFiles 'proguard-rules.pro'
              signingConfig signingConfigs.release
          }
          debug{
              minifyEnabled false
              signingConfig signingConfigs.release
          }
      }
  

        
此代码块在浮窗中显示

集成结果判断

若集成成功,日志显示如下:

[HonorPushHelper] get honor token:s18069ps301291893q1ssro2o40s1630-n262n542r9669q62o83s390306179rro-775875632-654-6105326555582-PA-0052993947080949113-5
          [HonorPushHelper] get honor token:s18069ps301291893q1ssro2o40s1630-n262n542r9669q62o83s390306179rro-775875632-654-6105326555582-PA-0052993947080949113-5

        
此代码块在浮窗中显示

配置代码混淆

如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:

-ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable
          
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
  

        
此代码块在浮窗中显示

荣耀通道测试方法

1.进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,填写参数:App ID、Client ID、Client Secrect、App Secret,并点击“启用”。

2.杀死 App 进程后进行推送,如果能够收到推送,则表明厂商通道集成成功。

文档内容是否对您有帮助?

Copyright 2011-2022, jiguang.cn, All Rights Reserved. 粤ICP备12056275号-13 深圳市和讯华谷信息技术有限公司

在文档中心打开