提交工单
咨询集成、功能及报价等问题
多端登录场景下,如果用户希望当某些平台的账号在线时,部分其他平台上的账号不收到离线推送通知,可以通过自定义推送规则实现。
在实现“自定义推送规则”功能之前,请确保:
如需用户自定义规则时收到通知,请重写 ZIMEventHandler 对象中的 onUserRuleUpdated 方法实现。
// 监听用户自定义规则
@Override
public void onUserRuleUpdated(ZIM zim, ZIMUserRule rule) {
// 离线推送规则
userRule.offlinePushRule;
}
如需支持用户自定义推送规则时,开发者需要构造 ZIMUserOfflinePushRule,规定用户在哪些平台上在线(onlinePlatforms)时,哪些平台无需接收离线推送(notToReceiveOfflinePushPlatforms)。
调用 updateUserOfflinePushRule 接口,设置上述规则。
// 设置离线推送规则
// 构造 ZIMUserOfflinePushRule
ArrayList<Integer> onlinePlatforms = new ArrayList<>();
// 当用户 win、MacOS、Linux 平台登录时
ArrayList<Integer> onlinePlatforms = new ArrayList<>();
onlinePlatforms.add(ZIMPlatformType.WIN.value());
onlinePlatforms.add(ZIMPlatformType.MAC_OS.value());
onlinePlatforms.add(ZIMPlatformType.LINUX.value());
offlineRule.setOnlinePlatforms(onlinePlatforms);
// 用户在 iPhoneOS、iPadOS、Android 上不收到离线推送
ArrayList<Integer> notToReceiveOfflinePushPlatforms = new ArrayList<>();
notToReceiveOfflinePushPlatforms.add(ZIMPlatformType.IPHONE_OS.value());
notToReceiveOfflinePushPlatforms.add(ZIMPlatformType.IPAD_OS.value());
notToReceiveOfflinePushPlatforms.add(ZIMPlatformType.ANDROID.value());
offlineRule.setNotToReceiveOfflinePushPlatforms(notToReceiveOfflinePushPlatforms);
// 调用 updateUserOfflinePushRule 方法
ZIM.getInstance().updateUserOfflinePushRule(offlineRule, new ZIMUserOfflinePushRuleUpdatedCallback() {
@Override
public void onUserOfflinePushRuleUpdated(ZIMUserOfflinePushRule updatedOfflinePushRule, ZIMError errorInfo) {
}
});
通过调用 querySelfUserInfo,即可在回调中的 selfUserInfo.userRule.offlinePushRule
获取当前用户自定义的离线推送规则。
ZIM.getInstance().querySelfUserInfo(new ZIMSelfUserInfoQueriedCallback() {
@Override
public void onSelfUserInfoQueried(ZIMSelfUserInfo selfUserInfo, ZIMError errorInfo) {
selfUserInfo.userRule.offlinePushRule; // 当前用户定义的离线推送规则
}
});
联系我们
文档反馈