写点什么

MobPush 厂商通道 SDK 集成指南

  • 2023-03-31
    上海
  • 本文字数:5571 字

    阅读完需:约 18 分钟

开发工具:Android Studio


集成方式:Gradle


安卓版本支持:minSdkVersion 19


集成准备 MobPush 快速集成在使用厂商通道之前,请确保您已申请 MobTech 开发者账号并已按照 MobPush 快速集成文档进行集成,本篇文档将默认您已完成该步骤


Mob 开发者后台配置注册 MobTech 账号后,需要在 MobTech 后台进行相关信息的配置,详情可以点击查看具体配置信息


日志调试功能请在 AndroidManifest.xml 文件中 <application>下添加上面配置,在日志控制台即可查看到 TAG 为 MobPushLog 的相关日志:


<meta-dataandroid:name="com.mob.mobpush.debugLevel"android:value="4" />image.png


小米通道集成指南配置依赖在应用 module 的 gradle 文件中找到 MobSDK 代码块,添加 XIAOMI 代码块:


MobSDK {......MobPush {devInfo {//小米推送配置信息 XIAOMI{appId "您的应用对应的小米的 APPID"// 小米平台注册的 appidappKey "您的应用对应的小米的 APPKEY"// 小米平台注册的 appkey}}}配置代码混淆如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:


-dontwarn com.xiaomi.push.**-keep class com.xiaomi.push.** { ; }-keep class com.mob.pushsdk.plugins.xiaomi.PushXiaoMiRevicer {;}-dontwarn com.xiaomi.**-keep class com.xiaomi.{*;}-keep class com.xiaomi.mipush.sdk.{*;}-dontwarn com.xiaomi.mipush.sdk.**集成结果判断若集成成功,日志显示如下:


[MobPush]MobPush start init...[MobPush]MobPush wait for auth ...[MobPush]MobPush real start init ...[MobPush][XIAOMI] channel start init[MobPush]Mob-XIAOMI plugins initing[MobPush]Check push channel [XIAOMI] configuration information, appId:xxxxxxxxxx, appKey:xxxxxxxxxx[MobPush]request deviceToken success:xxxxxxxxxxxxxxxxxxxxxxx[MobPush][XIAOMI] channel register successful.华为通道集成指南配置 maven 在 Project 根目录的主 gradle 中配置华为 maven 地址。


buildscript {repositories {// 配置 HMS Core SDK 的 Maven 仓地址。maven {url 'https://developer.huawei.com/repo/'}}dependencies {


}
复制代码


}


allprojects {repositories {// 配置 HMS Core SDK 的 Maven 仓地址。maven {url 'https://developer.huawei.com/repo/'}}}配置依赖在应用 module 的 gradle 文件中找到 MobSDK 代码块,添加 HUAWEI 代码块:


MobSDK {......MobPush {devInfo {//华为推送配置信息 HUAWEI{appId "您的应用对应的华为的 APPID" // 华为平台注册的 appid// version "x.x.x.xxx" // 可选,可自行指定华为推送 SDK 版本,默认为 6.7.0.300}}}配置代码混淆如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:


-ignorewarnings-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.**{;}


-keep class com.huawei.{*;}-keep class com.huawei.hms.{*;}-dontwarn com.huawei.hms.**-dontwarn com.huawei.**如果开发者使用了 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*"集成结果判断若集成成功,日志显示如下:


[MobPush]MobPush start init...[MobPush]MobPush wait for auth ...[MobPush]MobPush real start init ...[MobPush][HUAWEI] plugin ready[MobPush][HUAWEI] channel start init[MobPush]Mob-HUAWEI plugins initing[MobPush]request deviceToken success:xxxxxxxxxxxxxxxxxxxxxxx[MobPush][HUAWEI] channel register successful.荣耀通道集成指南配置依赖在应用 module 的 gradle 文件中找到 MobSDK 代码块,添加 HONOR 代码块:


MobSDK {......MobPush {devInfo {//荣耀推送配置信息 HONOR{appId "您的应用对应的荣耀的 APPID"// 荣耀平台注册的 appid}}}配置代码混淆如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:


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


-keep class com.hihonor.push.{*; }-dontwarn com.hihonor.push.集成结果判断若集成成功,日志显示如下:


[MobPush]MobPush start init...[MobPush]MobPush wait for auth ...[MobPush]MobPush real start init ...[MobPush][HONOR] channel start init[MobPush]Mob-HONOR plugins initing[MobPush]request deviceToken success:BAEAAAAAD.StrWLJVdk[MobPush][HONOR] channel register successful.魅族通道集成指南配置依赖在应用 module 的 gradle 文件中找到 MobSDK 代码块,添加 MEIZU 代码块:


MobSDK {......MobPush {devInfo {//魅族推送配置信息 MEIZU{appId "您的应用对应的魅族的 APPID" // 魅族平台注册的 appidappKey "您的应用对应的魅族的 APPKEY" // 魅族平台注册的 appkey}}}配置代码混淆如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:


-dontwarn com.meizu.cloud.**-keep class com.meizu.cloud.** { ; }-dontwarn com.meizu.*-keep class com.meizu.**{*;}-keep class com.meizu.cloud.pushsdk.MzPushMessageReceiver{ public *; }集成结果判断若集成成功,日志显示如下:


[MobPush]MobPush start init...[MobPush]MobPush wait for auth ...[MobPush]MobPush real start init ...[MobPush][MEIZU] channel start init[MobPush]Check push channel [MEIZU] configuration information, appId:xxxxx, appKey:xxxxxxxxxxxxxxxxxxxxxxx[MobPush]request deviceToken success:xxxxxxxxxxxxxxxxxxxxxxx[MobPush][MEIZU] channel register successful.vivo 通道集成指南配置依赖在应用 module 的 gradle 文件中找到 MobSDK 代码块,添加 VIVO 代码块:


MobSDK {......MobPush {devInfo {//VIVO 推送配置信息 VIVO{appId "您的应用对应的 VIVO 的 APPID" // VIVO 平台注册的 appidappKey "您的应用对应的 VIVO 的 APPKEY" // VIVO 平台注册的 appkey}}}配置代码混淆如果使用了 proguard,为了防止误报的 warning 导致无法成功编译,需要在配置文件中加入以下内容:


-dontwarn com.vivo.push.**-keep class com.vivo.push.{*; }-keep class com.vivo.vms.{; }-keep class com.mob.pushsdk.plugins.vivo.PushVivoReceiver{;}集成结果判断若集成成功,日志显示如下:


[MobPush]MobPush start init...[MobPush]MobPush wait for auth ...[MobPush]MobPush real start init ...[MobPush][VIVO] channel start init[MobPush]MobPush-Vivo plugins initing[MobPush]request deviceToken success:xxxxxxxxxxxxxxxxxxxxxxx[MobPush][VIVO] channel register successful.OPPO 通道集成指南配置依赖在应用 module 的 gradle 文件中找到 MobSDK 代码块,添加 OPPO 代码块:


MobSDK {......MobPush {devInfo {//OPPO 推送配置信息 OPPO{appKey "您的应用对应的 OPPO 的 APPKEY" // OPPO 平台注册的 appkeyappSecret "您的应用对应的 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.** { *; }


-keep public class * extends android.app.Service-keep class com.heytap.msp.** { ;}-keep class com.mob.pushsdk.plugins.oppo.* { *;}集成结果判断若集成成功,日志显示如下:


[MobPush]MobPush start init...[MobPush]MobPush wait for auth ...[MobPush]MobPush real start init ...[MobPush][OPPO] channel start init[MobPush]MobPush-OPPO plugins initing[MobPush]Check push channel [OPPO] configuration informatio[MobPush][OPPO] channel getSDKVersion:3.1.0[MobPush]request deviceToken success:xxxxxxxxxxxxxxxxxxxxxxxFCM 通道集成指南配置 maven 在 Project 根目录的主 gradle 中配置 mavenCentral 支持和 google-services 依赖。


buildscript {repositories {mavenCentral()}dependencies {classpath 'com.google.gms:google-services:4.3.14'}}


allprojects {repositories {mavenCentral()maven { url "https://maven.google.com" }}}添加 FCM 插件//注册 FCM 推送需添加 apply plugin: 'com.google.gms.google-services'配置依赖在应用 module 的 gradle 文件中找到 MobSDK 代码块,添加 FCM 代码块:


MobSDK {......MobPush {devInfo {//FCM 推送配置信息 FCM{iconRes "@mipmap/ic_launcher" //设置默认推送通知显示图标,可自行更改 version "23.1.0" // FCM 版本,可自行指定}}}配置 google-services.json 文件参考 厂商通道参数申请指南 获取 google-services.json 文件,并配置到 app 目录下。


集成结果判断若集成成功,日志显示如下:


[MobPush][FCM] channel start init[MobPush]Mob-FCM plugins initing[MobPush]MobPush start init...[MobPush]MobPush wait for auth ...[MobPush]MobPush real start init ...[MobPush]request deviceToken success:xxxxxxxxxxxxxxxxxxxxxxx[MobPush][FCM] channel register successful.添加厂商回调(可选)跳转首页跳转首页获取附加字段的方法:


JSONArray var = MobPushUtils.parseMainPluginPushIntent(getIntent());System.out.println("-------------jsonMain 打印查看:"+var);返回说明


返回 字段 说明"id":"4bu9702gmq4mvl3myo" id 通知任务 id ,仅厂商通知有该字段{"key":"value"} 附加字段 附件字段需指定,不指定不会出现 ,仅厂商通知有该字段{"from_tcp":true} from_tcp 消息是否来自 MobPushTCP 通道,true:是{"msg":"MobPushNotifyMessage{}"} msg 消息体,对象为 MobPushNotifyMessage,仅 MobPushTCP 通道消息有该字段{"channel":"mobpush"} channel 渠道名 Scheme 跳转 scheme 跳转获取参数方法如下


JSONArray var = MobPushUtils.parseSchemePluginPushIntent(getIntent());System.out.println("-------------jsonScheme 打印查看:"+var);返回参数如下


返回 字段 说明{"from_tcp":true} from_tcp 消息是否来自 MobPushTCP 通道,true:是{"msg":"MobPushNotifyMessage{}"} msg 消息体,对象为 MobPushNotifyMessage,仅 MobPushTCP 通道消息有该字段{"key":"value"} 附加字段 附件字段需指定,建议不要使用 url 做为 key{"mobpush_link_k":"mlink://com.mob.mobpush.link"} scheme scheme 地址{"mobpush_link_v":"schemeKey=schemeValue"} scheme 参数 scheme 地址下携带的 scheme 参数{"id":"4brfm8nti9aj1arf28"} id 推送任务 id{"channel":"xiaomi"} channel 渠道名{"schemeLink":"mlink://com.mobpush.demo2"} scheme scheme 地址{"schemeKey":"schemeValue"} scheme 参数 scheme 地址下携带的 scheme 参数(华为,VIVO,OPPO){"schemeKey":"schemeValue","schemeUrl":"mlink://com.mob.mobpush.link"} schemeUrl scheme 地址下携带的 scheme 参数(flyme)小米厂商通道返回的数据打印样式


[{"mobpush_link_k": "mlink://com.mobpush.demo2","mobpush_link_v": "schemeKey=schemeValue","key": "value"},{"id": "4bqnx6rgmlseuptvy8"},{"channel": "xiaomi"},{"schemeLink": "mlink://com.mobpush.demo2"}]华为与 VIVO 厂商通道返回的数据打印样式


[{"schemeKey": "schemeValue"},{"id": "4bqoxqm2c9t5q6migw"},{"channel": "huawei"},{"mobpush_link_k": "mlink://com.mobpush.demo2","mobpush_link_v": "schemeKey=schemeValue","key": "value"},{"schemeLink": "mlink://com.mobpush.demo2"}]魅族厂商通道返回的数据打印样式


注意! 魅族手机不支持跳转到指定界面,默认是跳转到首页,可以在首页获取跳转指定页面的路径,可以通过代码控制跳转


//魅族厂商不支持 scheme 还原跳转,但是可以在首页打印获取如下[{"schemeKey": "schemeValue","schemeUrl": "mlink://com.mobpush.demo2"},{"id": "4bqoxqm2cawjqwl534"},{"channel": "flyme"},{"mobpush_link_k": "mlink://com.mobpush.demo2","mobpush_link_v": "schemeKey=schemeValue","key": "value"}]OPPO 厂商通道返回的数据打印样式


[{"mobpush_link_k": "mlink://com.mob.mobpush.linkone","mobpush_link_v": "schemeKey=schemeValue","onekey": "onevalue"},{"schemeKey": "schemeValue"},{"id": "32ugyk3t819xjwg"},{"channel": "oppo"},{"schemeLink": "mlink://com.mob.mobpush.linkone?pushData={"mobpush_link_k":"mlink://com.mob.mobpush.linkone","mobpush_link_v":"schemeKey=schemeValue","onekey":"onevalue"}&id=32ugyk3t819xjwg&channel=oppo&schemeData={"schemeKey":"schemeValue"}"}]厂商点击统计统计厂商通道下发通知的点击数,请在点击通知打开的 Activity 调用该方法。


MobPush.notificationClickAck(getIntent());厂商限制及错误码华为 参见 FAQ 错误码


小米 参见小米推送消息限制说明 错误码


oppo 参见 FAQ PUSH 运营规范


vivo 参见 FAQ 错误码


魅族 魅族暂未给出明确的敏感词或禁止词说明,详细以魅族文档为准或咨询魅族客服 Flyme 推送接入文档

用户头像

还未添加个人签名 2019-05-08 加入

还未添加个人简介

评论

发布
暂无评论
MobPush 厂商通道SDK集成指南_MobTech袤博科技_InfoQ写作社区