解决推送客户端冲突
本文描述了如何避免或解决在应用程序中可能出现的推送客户端冲突的问题。
出现推送客户端冲突,可能由以下情况导致:
- 应用程序自身已集成第三方推送客户端,与融云推送服务依 赖的第三方厂商推送客户端 SDK 冲突
- 应用程序中依赖的其他 SDK 已集成第三方推送客户端,与融云推送服务依赖的第三方厂商推送客户端 SDK 冲突
如果存在上述情况,您可以选择是否使用融云的推送客户端集成方案。
不再使用融云的推送客户端集成方案
不再使用融云客户端推送集成方案,请按如下步骤进行处理:
-
参照推送客户端集成文档,完成控制台的第三方推送配置。
-
在 SDK init 之前,必须创建
PushConfig
,根据您使用的厂商启用推送通道,并将配置提供给RongPushClient
。PushConfig config = new PushConfig.Builder()
.enableFCM(true)
.enableHWPush(true)
.enableVivoPush(true)
.enableMiPush("小米 appId", "小米 appKey") //小米推送配置
.enableMeiZuPush("魅族 appId", "魅族 appKey") // 魅族推送配置
.enableOppoPush("OPPO_App_KEY", "OPPO_App_Secret") // OPPO 推送配置
.build();
RongPushClient.setPushConfig(config); //将推送相关配置设置到 SDK -
从第三方推送 SDK 获取厂商 token。具体方式请您查看第三方推送 SDK 文档。
-
由于
RongPushClient
会在 SDK 初始化异步执行,且暂不提供初始化完成的通知,建议您延时 3 秒左右调用onReceiveToken
方法向融云上报推送第三方 Token,否则 SDK 无法正常上报推送相关统计数据。PushManager.getInstance().onReceiveToken(context,pushType,token);
-
通过日志查看是否上报成功,搜索关键字 L-push-config-report-token-R,提示 report token success,上报成功集成成功。
继续使用融云推送客户端集成方案
如果您希望继续使用推送客户端集成方案,可移除应用自身集成的推送 SDK,从融云 IM SDK 的回调中获取厂商推送 Token,上报给第三方推送厂商,或第三方推送集成商。
您可以在 Application 的 onCreate
方法中设置 PushEventListener
,通过 onTokenReceived(PushType pushType, String token);
回调方法获取厂商推送 Token。
RongPushClient.setPushEventListener(
new PushEventListener() {
@Override
public void onTokenReceived(
PushType pushType,
String token) {
}
/// 此处省略其他方法
});