为提升推送的到达率,mPaaS 集成了华为、小米、OPPO 和 vivo 等厂商的推送功能。采用 小米通知栏消息、 华为通知消息 、OPPO 通知栏消息 和 vivo 通知栏消息 实现推送,在进程挂起时,依然可以发送通知,用户点击通知栏可以激活进程。
本文档分为 客户端接入第三方推送渠道 和 接入 MpaaSNcActivity 两部分,引导开发者接入三方渠道的推送功能。在 客户端接入第三方推送渠道 中,分别介绍了接入华为、小米、OPPO 和 vivo 四家厂商的推送服务所需要进行的客户端配置。
客户端接入第三方推送渠道
接入华为渠道
注册华为推送
登录华为开发官网,注册账号并且开启推送服务。详情请参见 华为推送开启步骤。
客户端接入华为推送
MPS 支持接入华为 HMS2 和 HMS5,但在接入华为推送组件过程中,您只能选择其中一个版本进行接入。下面分别对华为 HMS2 和 HMS5 这两个版本的接入方式进行说明。
接入华为推送 – HMS2.x 版本
- 接入 MPS 依赖。第三方渠道的接入与 MPS 自建通道的接入完全相同,更多信息请参见 添加 SDK。
- 在 IDE 插件中添加 推送 – 华为2 组件。
-
配置
AndroidManifest.xml
。如果是基于 mPaaS 框架的工程,请在 Portal 工程的
AndroidManifest.xml
配置文件中进行配置。<activity
android:name="com.huawei.hms.activity.BridgeActivity"
android:configChanges="orientation|locale|screenSize|layoutDirection|fontScale"
android:excludeFromRecents="true"
android:exported="false"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent">
<meta-data
android:name="hwc-theme"
android:value="androidhwext:style/Theme.Emui.Translucent" />
</activity>
<!--为了防止低版本 dex 崩溃,动态开启 provider,enabled 设置为 false-->
<provider
android:name="com.huawei.hms.update.provider.UpdateProvider"
android:authorities="${applicationId}.hms.update.provider"
android:exported="false"
android:enabled="false"
android:grantUriPermissions="true">
</provider>
<!-- value 的值“appid”用实际申请的应用 ID 替换,来源于开发者联盟网站应用的服务详情。注意,value 中的斜杠(\)及空格要保留。-->
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="\ your huawei appId" />
<receiver
android:name="com.huawei.hms.support.api.push.PushEventReceiver"
>
<intent-filter>
<!-- 接收通道发来的通知栏消息,兼容老版本PUSH -->
<action android:name="com.huawei.intent.action.PUSH" />
</intent-filter>
</receiver>
<receiver
android:name="com.alipay.pushsdk.thirdparty.huawei.HuaweiPushReceiver"
android:process=":push">
<intent-filter>
<!-- 必须,用于接收 TOKEN -->
<action android:name="com.huawei.android.push.intent.REGISTRATION" />
<!-- 必须,用于接收消息 -->
<action android:name="com.huawei.android.push.intent.RECEIVE" />
<!-- 可选,用于点击通知栏或通知栏上的按钮后触发 onEvent 回调 -->
<action android:name="com.huawei.android.push.intent.CLICK" />
<!-- 可选,查看PUSH通道是否连接,不查看则不需要 -->
<action android:name="com.huawei.intent.action.PUSH_STATE" />
</intent-filter>
</receiver>
- 接入 MpaaSNcActivity。
接入华为推送 – HMS5.x 版本
- 接入 MPS 依赖。第三方渠道的接入与 MPS 自建通道的接入完全相同,更多信息请参见 添加 SDK。
- 在 IDE 插件中添加 推送 – HMS5 组件。
- 在华为应用服务控制台下载配置文件
agconnect-services.json
并放置到应用主工程的assets
目录下。 - 在项目根目录下的
build.gradle
文件中配置 HMS Core SDK 的 Maven 仓地址。allprojects {
repositories {
// 其他repo已省略
maven {url 'https://developer.huawei.com/repo/'}
}
}
-
在主工程的
build.gradle
文件中添加 HMS Core SDK 依赖。dependencies {
implementation 'com.huawei.hms:push:5.0.2.300'
// 华为HMS Core SDK版本会经常更新,最新版本号可以参考 https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides-V5/version-change-history-0000001050040072-V5
}
- 接入 MpaaSNcActivity。
- 如果您是从 2.x 版本升级到 5.x 版本,请卸载已安装的 推送 – 华为2 组件,并移除相应的
AndroidManifest.xml
文件中的华为推送配置。
应用角标处理
mPaaS 自 10.1.60.13 基线版本起支持应用角标处理。当服务端推送携带角标信息的消息到客户端时,SDK 提供接口处理应用图标上的角标信息。
MPPush
类提供以下三个处理应用角标的接口:
- 设置是否允许点击通知栏消息时自动清除应用角标消息。enable 为 true 时表示允许,false 表示不允许。
void setBadgeAutoClearEnabled(Context context, boolean enabled)
- 设置角标展示所在的应用图标对应的 Activity 名称。必须设置,否则无法清除角标信息。
void setBadgeActivityClassName(Context context, String name)
- 清除应用角标信息。SDK 不能处理角标信息的情况下可以使用此方法主动清除角标信息,例如用户主动点击应用图标进入应用时清除角标信息。
void clearBadges(Context context)
接入小米渠道
注册小米推送
参考以下小米官方文档,完成小米推送注册:
客户端接入小米推送
- 接入 MPS 依赖。第三方渠道的接入与 MPS 自建通道的接入完全相同,更多信息请参见 添加 SDK。
- 在 IDE 插件中添加 推送 – 小米 组件。
-
配置
AndroidManifest.xml
。如果是基于 mPaaS 框架的工程,请在 Portal 工程的
AndroidManifest.xml
配置文件中进行配置。<!--由于涉及到签名,权限放在 Portal 中-->
<permission
android:name="${applicationId}.permission.MIPUSH_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="${applicationId}.permission.MIPUSH_RECEIVE"/>
<!-- value 中的斜杠(\)及空格要保留 -->
<meta-data
android:name="xiaomi_appid"
android:value="\ 2xxxxxxxxxx" />
<!-- value 中的斜杠(\)及空格要保留 -->
<meta-data
android:name="xiaomi_appkey"
android:value="\ 5xxxxxxxxxxxx" />
<service android:name="com.xiaomi.push.service.XMJobService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":push" />
<service
android:name="com.xiaomi.push.service.XMPushService"
android:enabled="true"
android:process=":push"/>
<service
android:name="com.xiaomi.mipush.sdk.PushMessageHandler"
android:enabled="true"
android:exported="true"
android:process=":push"/>
<service
android:name="com.xiaomi.mipush.sdk.MessageHandleService"
android:enabled="true"
android:process=":push"/>
<receiver
android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
android:exported="true"
android:process=":push">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
<receiver
android:name="com.xiaomi.push.service.receivers.PingReceiver"
android:exported="false"
android:process=":push">
<intent-filter>
<action android:name="com.xiaomi.push.PING_TIMER"/>
</intent-filter>
</receiver>
<receiver
android:name="com.alipay.pushsdk.thirdparty.xiaomi.XiaoMiMsgReceiver"
android:exported="true"
android:process=":push">
<intent-filter>
<action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE"/>
</intent-filter>
<intent-filter>
<action android:name="com.xiaomi.mipush.ERROR"/>
</intent-filter>
<intent-filter>
<action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED"/>
</intent-filter>
</receiver>
- 接入 MpaaSNcActivity。
接入 OPPO 渠道
AliPushInterface
类进行初始化,请替换成使用MPPush
类。
注册 OPPO 推送
参考 OPPO推送平台使用指南 在 OPPO 开放平台 注册账号并申请接入推送服务。
客户端接入 OPPO 推送
- mPaaS 不提供 OPPO Push SDK 的库,请前往 OPPO SDK 文档 下载 SDK 并集成到主工程中。
说明:当前适配的版本为 2.0.2。
- 在 IDE 插件中添加 推送 – OPPO 组件。
-
配置
AndroidManifest.xml
。如果是基于 mPaaS 框架的工程,请在 Portal 工程的
AndroidManifest.xml
配置文件中进行配置。<uses-permission android:name="com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE" />
<uses-permission android:name="com.heytap.mcs.permission.RECIEVE_MCS_MESSAGE"/>
<application>
<service
android:name="com.heytap.mcssdk.PushService"
android:permission="com.coloros.mcs.permission.SEND_MCS_MESSAGE"
android:process=":push">
<intent-filter>
<action android:name="com.coloros.mcs.action.RECEIVE_MCS_MESSAGE"/>
</intent-filter>
</service>
<service
android:name="com.heytap.mcssdk.AppPushService"
android:permission="com.heytap.mcs.permission.SEND_MCS_MESSAGE"
android:process=":push">
<intent-filter>
<action android:name="com.heytap.mcs.action.RECEIVE_MCS_MESSAGE"/>
</intent-filter>
</service>
<meta-data
android:name="com.oppo.push.app_key"
android:value="OPPO开放平台获取"
/>
<meta-data
android:name="com.oppo.push.app_secret"
android:value="OPPO开放平台获取"
/>
<meta-data
android:name="mpaas.notification.channel.default.name"
android:value="默认"
/>
<meta-data
android:name="mpaas.notification.channel.default.description"
android:value="默认消息通知"
/>
</application>
- 接入 MpaaSNcActivity。
接入 vivo 渠道
注册 vivo 推送
参考 vivo 推送平台使用指南,在 vivo 开放平台 上注册账号,并申请接入推送服务。
客户端接入 vivo 推送
- mPaaS 不提供 vivo Push SDK 的库,请前往 vivo SDK 文档 下载 SDK 并集成到主工程中。
- 在 IDE 插件中添加 推送 – vivo 组件。
-
配置
AndroidManifest.xml
。如果是基于 mPaaS 框架的工程,请在 Portal 工程的
AndroidManifest.xml
配置文件中进行配置。<application>
<service
android:name="com.vivo.push.sdk.service.CommandClientService"
android:process=":push"
android:exported="true" />
<activity
android:name="com.vivo.push.sdk.LinkProxyClientActivity"
android:exported="false"
android:process=":push"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<meta-data
android:name="com.vivo.push.api_key"
android:value="VIVO开放平台提供" />
<meta-data
android:name="com.vivo.push.app_id"
android:value="VIVO开放平台提供" />
<receiver
android:name="com.alipay.pushsdk.thirdparty.vivo.PushMessageReceiver"
android:process=":push" >
<intent-filter>
<!-- 接收push消息 -->
<action android:name="com.vivo.pushclient.action.RECEIVE" />
</intent-filter>
</receiver>
</application>
- 接入 MpaaSNcActivity。
接入 MpaaSNcActivity
在不接入 MpaaSNcActivity
的情况下,第三方渠道消息将无法跳转。
<activity
android:name="com.alipay.pushsdk.thirdparty.MPaaSNcActivity"
android:exported="true"
android:theme="@android:style/Theme.Translucent">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
后续操作
在完成上述客户端接入第三方推送渠道的配置后,需要在消息推送控制台上配置对应三方渠道的相关参数。更多信息,参见 控制台渠道配置。