本文描述了如何解决接入 TIMPush 和其他友商产生冲突问题。
根本原因
发生客户端冲突的根本原因是:应用程序自身集成或者依赖的第三方推送客户端,与 TIMPush 中的第三方客户端产生冲突。
解决方法
如果存在上述情况,您可以选择以下方式兼容使用 TIMPush。
步骤1
步骤2
方式1:使用 TIMPush 的推送包,将 token 共享给友商:
1. 去掉友商冲突的对应的厂商包;
2. 通过 TIMPush 接口 getPushToken 获取到推送的 token,然后调用友商接口共享获取 token 即可。实现如下:
TUICore.callService(TUIConstants.TIMPush.SERVICE_NAME, TUIConstants.TIMPush.METHOD_GET_PUSH_TOKEN, null, new TUIServiceCallback() {@Overridepublic void onServiceCallback(int errorCode, String errorMessage, Bundle bundle) {if (errorCode == 0 && bundle != null) {String token = (String) bundle.get("token");Log.d(TAG, "getPushToken onServiceCallback data =" + token);// 共享 token}}});
方式2:使用友商的厂商推送包,将 token 回传给 TIMPush:
1. 去掉产生冲突的 TIMPush 的厂商包;
2. 通过友商的接口获取到推送的 token,然后调用接口 setPushToken 将 token 设置给 TIMPush。实现如下:
Map<String, Object> param = new HashMap<>();param.put(TUIConstants.TIMPush.METHOD_PUSH_BUSSINESS_ID_KEY, 11111);param.put(TUIConstants.TIMPush.METHOD_PUSH_TOKEN_KEY, "token");TUICore.callService(TUIConstants.TIMPush.SERVICE_NAME, TUIConstants.TIMPush.METHOD_SET_PUSH_TOKEN, param, new TUIServiceCallback() {@Overridepublic void onServiceCallback(int errorCode, String errorMessage, Bundle bundle) {if (errorCode == 0 && bundle != null) {String token = (String) bundle.get("token");Log.d(TAG, "registerPush onServiceCallback data =" + token);}}});