高级功能
在接入推送 SDK 后,您还可以进行以下客户端配置:
前提条件
本文中的
MPPushMsgServiceAdapter
方法仅适用于基线 10.1.68.32 及以上版本。若当前使用的基线版本低于 10.1.68.32,可参考 mPaaS 升级指南 升级基线版本。旧版本中的
AliPushRcvService
方法仍可继续使用,如需查看旧版本文档,可 单击此处下载。
清除角标
厂商通道收到的消息,可在应用图标上显示消息数量的角标。目前推送 SDK 仅支持华为通道自动清除角标。
设置用户点击通知时自动清除应用角标:
// 设置是否自动清除 boolean autoClear = true; MPPush.setBadgeAutoClearEnabled(context, autoClear); // 设置应用入口 Activity 类名,不设置无法清除角标 String activityName = "com.mpaas.demo.push.LauncherActivity"; MPPush.setBadgeActivityClassName(context, activityName);
在角标无法自动清除的场景下,例如用户主动点击应用图标进入应用时,可以在
Application
中调用以下方法主动清除角标:MPPush.clearBadges(context);
上报厂商通道 token
如已接入厂商通道,推送 SDK 初始化后会收到厂商通道的 token,推送 SDK 会自动将厂商通道 token 和自建通道 token 绑定上报。
如有需要,可通过重写 MPPushMsgServiceAdapter
的 onChannelTokenReceive
和 onChannelTokenReport
方法监听厂商通道 token 的下发和上报:
public class MyPushMsgService extends MPPushMsgServiceAdapter {
/**
* 收到厂商通道 token 的回调
*
* @param channelToken 厂商通道 token
* @param channel 厂商通道类型
*/
@Override
protected void onChannelTokenReceive(String channelToken, PushOsType channel) {
Log.d("收到厂商通道 token: " + channelToken);
Log.d("厂商: " + channel.getName());
}
/**
* 厂商通道 token 上报结果的回调
*
* @param result 上报结果
*/
@Override
protected void onChannelTokenReport(ResultBean result) {
Log.d("上报厂商 token " + (result.success ? "成功" : ("错误:" + result.code)));
}
/**
* 是否自动上报厂商 token
*
* @return 返回 false,可根据需求上报
*/
@Override
protected boolean shouldReportChannelToken() {
return super.shouldReportChannelToken();
}
}
如需绑定上报,可重写 shouldReportChannelToken
方法并返回 false,并在确保收到两个 token 后调用:
MPPush.report(context, token , channel.value(), channelToken);
自定义 NotificationChannel
如需自定义自建通道的 NotificationChannel
的名称和说明,可在 AndroidManifest.xml
中添加:
<meta-data
android:name="mpaas.notification.channel.default.name"
android:value="名称" />
<meta-data
android:name="mpaas.notification.channel.default.description"
android:value="说明" />