MobPush 厂商通道SDK集成指南

开发工具:Android Studio

集成方式:Gradle

安卓版本支持:minSdkVersion 19

集成准备

MobPush快速集成

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

Mob开发者后台配置

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

日志调试功能

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

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

小米通道集成指南

配置依赖

在应用 module 的 gradle文件中找到MobSDK代码块,添加XIAOMI代码块:

MobSDK {
        ......
        MobPush {
                devInfo {
                        //小米推送配置信息
                        XIAOMI{
                            appId "您的应用对应的小米的APPID"// 小米平台注册的appid
                            appKey "您的应用对应的小米的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" // 魅族平台注册的appid
                            appKey "您的应用对应的魅族的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平台注册的appid
                            appKey "您的应用对应的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平台注册的appkey 
                            appSecret "您的应用对应的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:xxxxxxxxxxxxxxxxxxxxxxx

FCM通道集成指南

配置 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 参见PUSH运营规范

vivo 参见FAQ 错误码

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

MobTech袤博(www.mob.com)是全球领先的数据智能科技平台。自2012年成立以来,旗下MobTech开发者服务依...

128 声望
12 粉丝
0 条评论
推荐阅读
秒验 iOS端集成指南
开发工具:Xcode 集成方式:手动导入SDK或者Pod集成 SDK版本支持:SDK支持Xcode 9.1.0, iOS8.0+及以上版本集成前准备注册账号使用秒验SDK之前,需要先在MobTech官网注册开发者账号,并获取AppKey和AppSecret,详...

MobTech袤博

网易云音乐开源全链路埋点方案-曙光埋点(dawn)
网易云音乐开源了曙光埋点 dawn,一个跨多端的全链路埋点解决方案,旨在构造一个完美的数据理想国。曙光埋点创造性的提出了埋点虚拟树(VTree),并在此基础上实现了诸多能力,解决大前端侧埋点困难、精度差、不...

云音乐技术团队3阅读 2.4k

封面图
深度剖析 Runtime
做很多需求或者是技术细节验证的时候会用到 Runtime 技术,用了挺久的了,本文就写一些场景和源码分析相关的文章。先问几个小问题:class_rw_t的结构是数组,数组里面的元素是数组,那它是二维数组吗?为什么16字...

杭城小刘4阅读 1.1k

封面图
直播回顾 | 点击率提升400%,Ta是怎么做到的?
Discovery第18期直播已于3月30日圆满结束,本期直播邀请天眼查做客直播间,从天眼查与华为Push用户增长服务合作历程切入,聚焦用户增长,分享提升应用活跃度和渠道ROI的经验与见解。一起来回顾本期精彩内容吧!

HMSCore阅读 6.4k

Android Crash 前的最后抢救
众所周知,当 Andoird 程序发生未捕获的异常的时候,程序会直接 Crash 退出。而所谓安全气囊,是指在 Crash 发生时捕获异常,然后触发兜底逻辑,在程序退出前做最后的抢救。

xiangzhihong1阅读 1.3k

Mac下编译WebRTC(Mac和iOS版本)
随着新冠疫情的影响,这两年音视频的需求呈爆发式增长。在音视频领域中,WebRTC可以说是一个绕不开宝库,包括了音视频采集、编解码、传输、渲染的全过程。本文主要记录下在Mac平台上编译WebRTC Mac和iOS版本的全...

吴尼玛阅读 3.8k

教你如何在 Andorid 上使用OpenAI API 调用ChatGpt
现在Chat GPT功能越来越强了,几乎你想问实际问题它都能给你回答。正好,小组结课的 Android项目 有一个解梦的功能。正好调用chatGpt的Api来实现。下面就来简单实现在Andorid项目中打造一个简易的聊天机器人。

weiweiyi1阅读 987

MobTech袤博(www.mob.com)是全球领先的数据智能科技平台。自2012年成立以来,旗下MobTech开发者服务依...

128 声望
12 粉丝
宣传栏