提交工单
咨询集成、功能及报价等问题
多端登录场景下,如果用户希望当某些平台的账号在线时,部分其他平台上的账号不收到离线推送通知,可以通过自定义推送规则实现。
在实现“自定义推送规则”功能之前,请确保:
已在 ZEGO 控制台 创建项目,获取到了接入 ZIM SDK 服务所需的 AppID、AppSign。ZIM 服务权限不是默认开启的,使用前,请先在 ZEGO 控制台 自助开通 ZIM 服务(详情请参考控制台的 服务配置 - 即时通讯 - 开通服务),若无法开通 ZIM 服务,请联系 ZEGO 技术支持开通。
已集成 ZIM SDK,详情请参考 快速开始 - 实现基本收发消息 的 “2 集成 SDK”。
已实现 多端登录。
如需用户自定义规则后收到通知,请注册 ZIMEventHandler 回调代理,并监听 userRuleUpdated。
// 监听用户自定义规则
- (void)zim:(ZIM *)zim userRuleUpdated:(ZIMUserRule *)userRule{
// 离线推送规则
userRule.offlinePushRule;
}
如需支持用户自定义推送规则时,开发者需要构造 ZIMUserOfflinePushRule,规定用户在哪些平台上在线(onlinePlatforms)时,哪些平台无需接收离线推送(notToReceiveOfflinePushPlatforms)。
调用 updateUserOfflinePushRule 接口,设置上述规则。
// 设置离线推送规则
// 构造 ZIMUserOfflinePushRule
ZIMUserOfflinePushRule *offlineRule = [[ZIMUserOfflinePushRule alloc] init];
// 当用户 win、MacOS、Linux 平台登录时
offlineRule.onlinePlatforms = @[@(ZIMPlatformTypeWin),@(ZIMPlatformTypeMacOS),@(ZIMPlatformTypeLinux)];
// 用户在 iPhoneOS、iPadOS、Android 上不收到离线推送
offlineRule.notToReceiveOfflinePushPlatforms = @[@(ZIMPlatformTypeIPhoneOS),@(ZIMPlatformTypeIPadOS),@(ZIMPlatformTypeAndroid)];
[[ZIM getInstance] updateUserOfflinePushRule:offlineRule callback:^(ZIMUserOfflinePushRule * _Nonnull offlinePushRule, ZIMError * _Nonnull errorInfo) {
}];
通过调用 querySelfUserInfo,即可在回调中的 selfUserInfo.userRule.offlinePushRule
获取当前用户自定义的离线推送规则。
[[ZIM getInstance] querySelfUserInfo:^(ZIMSelfUserInfo * _Nonnull selfUserInfo, ZIMError * _Nonnull errorInfo) {
selfUserInfo.userRule.offlinePushRule; // 当前用户定义的离线推送规则
}];
联系我们
文档反馈