文档中心
IM 即时通讯
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 即时通讯
  • 离线推送
  • 自定义推送规则

自定义推送规则

更新时间:2024-04-15 19:16

多端登录场景下,如果用户希望当某些平台的账号在线时,部分其他平台上的账号不收到离线推送通知,可以通过自定义推送规则实现。

前提条件

在实现“自定义推送规则”功能之前,请确保:

  • 已在 ZEGO 控制台 创建项目,获取到了接入 ZIM SDK 服务所需的 AppID 和 ServerSecret。ZIM 服务权限不是默认开启的,使用前,请先在 ZEGO 控制台 自助开通 ZIM 服务(详情请参考 项目管理 - 即时通讯),若无法开通 ZIM 服务,请联系 ZEGO 技术支持开通。
  • 已获取登录 SDK 所需的 Token,详情请参考 使用 Token 鉴权。
  • 已集成 ZIM SDK,详情请参考 快速开始 - 实现基本收发消息 的 “3 集成 SDK”。
  • 已实现 多端登录。

实现流程

用户离线推送规则变化通知

如需用户自定义规则时收到通知,请重写 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; // 当前用户定义的离线推送规则

    }
});
本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈