IM 即时通讯
iOS
产品介绍
简介
主要功能
产品优势
功能介绍
帐号集成与登录
基础消息功能
群组功能
聊天室功能
聊天室标签功能
圈组功能
多端登录与互踢策略
质量数据监控台
海外数据中心
IM平滑迁移方案
接口及业务限制
更新日志
IM UIKit 更新日志
NIM SDK 开发版更新日志
NIM SDK 稳定版更新日志
体验 Demo
下载 SDK 与 Demo 源码
快速开始
跑通 IM Demo 源码
跑通圈组 Demo 源码
实现单聊消息收发(不含 UI)
实现圈组消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能概览
快速集成 IM UIKit
组件导入
初始化与登录
界面跳转
自定义用户信息
会话列表相关
集成会话列表界面
自定义会话列表 UI
会话列表 API 概览
会话消息相关
集成会话消息界面
实现地理位置消息功能
实现音视频通话
实现自定义消息收发
自定义会话消息 UI
会话消息 API 概览
通讯录相关
集成通讯录界面
自定义通讯录 UI
通讯录 API 概览
IM UIKit API 概览
不含 UI 集成
集成 SDK
初始化
登录相关
登录 IM
多端登录与互踢
登出 IM
消息相关
消息概述
消息收发
自定义消息收发
消息配置选项
NOS 资源场景
广播消息收发
消息已读回执
消息撤回
消息重发与转发
消息更新
消息过滤
语音消息处理
本地消息插入
历史消息
最近会话
服务端会话服务
用户资料
用户关系
在线状态订阅
系统通知
离线推送
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
聊天室
圈组功能
圈组概述
登录管理
服务器相关
服务器概述
服务器管理
服务器成员管理
游客功能
服务器未读数管理
频道相关
频道概述
频道管理
频道黑白名单
实时互动频道
频道分组
频道分组黑白名单
频道未读数管理
搜索服务器与频道
身份组相关
身份组概述
身份组应用场景
服务器身份组
频道身份组
频道分组身份组
用户定制权限
自定义权限项
成员权限查询与判定
身份组相关查询
圈组订阅机制
圈组消息相关
图解圈组消息流转
圈组消息收发
圈组消息撤回
圈组消息更新
圈组消息删除
消息正在输入
会话消息回复(Thread)
圈组快捷评论
圈组消息缓存
圈组消息搜索
查询历史消息
查询@我的消息
圈组系统通知相关
圈组系统通知概述
圈组系统通知收发
圈组系统通知更新
圈组离线推送
圈组内容审核
圈组第三方回调
圈组相关抄送
圈组各端接口命名差异
反垃圾
聊天扩展
其他
最佳实践
IM 登录最佳实践
聊天室重要消息投递
参考文档
iOS PushKit 配置
iOS苹果推送配置
API 参考
iOS SDK API
iOS SDK 状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
开通聊天室功能
配置客户端应用标识
常见问题
FAQ
错题集
iOS 推送问题排查
服务协议

圈组系统通知(已废弃)

更新时间: 2022/12/27 15:34:45

本文已不再维护,请前往圈组系统通知相关查看更新的文档。

圈组系统通知概览

系统通知可分为内置系统通知和自定义系统通知。

系统通知类型 说明 离线系统通知限制
内置系统通知 圈组内置的系统通知, 类型包括“邀请服务器成员”、“踢除服务器成员”、“修改频道信息” 等 服务器成员管理事件的系统通知支持存离线,每月至多存 1,000 条离线通知。其他内置系统通知不存离线
自定义系统通知 开发者自定义系统通知。 SDK 不解析自定义系统通知,仅负责传递 每月 1,000 条离线通知

内置系统通知分类

圈组内置系统通知,可进一步分为服务器成员管理事件的系统通知服务器其他相关事件的系统通知频道事件系统通知频道分组事件系统通知身份组成员管理事件的系统通知身份组权限事件系统通知。除了服务器成员管理事件的系统通知,其余类型都通过参与者与观察者机制控制接收人及其接收条件。

每个类型的具体触发条件和接收条件,请参考服务端的圈组系统通知

技术原理

圈组中的系统通知是由云信服务器下发给用户的通知类消息,用于包括创建 Server、创建 Channel、申请加入 Server 等事件的通知。

SDK 通过 NIMQChatSystemNotification 来定义圈组的系统通知。

NIMQChatSystemNotification 的参数如下:

返回值类型 参数 说明
unsinged long long serverId 通知所属的圈组服务器的 ID
unsinged long long channelId 通知所属的频道的 ID
NSArray<NSString*> toAccids 通知接收者账号列表
NSString fromAccount 通知发送者的 accid
NIMQChatSystemNotificationToType toType 通知发送对象类型。主要分为服务器,服务器成员,频道,频道成员
NSInteger fromClientType 通知发送者的客户端类型
NSString fromDeviceId 发送方设备 ID
NSString fromNick 发送方昵称
NSTimeInterval time 消息发送时间
NSTimeInterval updateTime 通知更新时间
NIMQChatSystemNotificationType type 通知类型,具体系统通知类型的接收条件等信息,可参考服务器的 QChatSystemMsgType
NSString messageClientId 客户端生成的消息 ID,会用于去重
unsigned long long messageServerID 服务器生成的通知 ID,全局唯一
NSString body 通知内容
NIMQChatSystemNotificationAttachment attach 通知附件
NSString ext 扩展字段,推荐使用 JSON 格式
NSInteger status 状态,可以自定义。默认为 0,大于 10,000 为用户自定义的状态,具体可查看NIMQChatSystemNotificationStatus
NSString pushPayload 第三方自定义的推送属性,限制使用 JSON 格式
NSString pushContent 自定义推送文案
NIMQChatSystemNotificationSetting setting 自定义系统通知设置,如是否需要计入推送未读,是否需要带推送前缀等
NSString env 环境变量,用于指向不同的抄送,第三方回调等配置
NSString callbackExt 获取第三方回调回来的自定义扩展字段

实现方法

发送自定义系统通知

SDK 提供发送自定义系统通知的能力。

SDK 通过圈组消息 NIMQChatMessageManager 中的 sendSystemNotification 发送自定义系统通知。

  • 接口原型
/**
 * 发送自定义系统通知
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)sendSystemNotification:(NIMQChatSendSystemNotificationParam *)param
                    completion:(nullable NIMQChatSendSystemNotificationHandler)completion;

其中 NIMQChatSendSystemNotificationParam 是发送自定义系统通知入参。

  • 示例代码
id<NIMQChatMessageManager> qchatMessageManager = [[NIMSDK sharedSDK] qchatMessageManager];
NIMQChatSendSystemNotificationParam *param = [[NIMQChatSendSystemNotificationParam alloc] initWithServerId:123456 channelId:121212];
param.body = @"系统通知内容";
[qchatMessageManager sendSystemNotification:param
                completion:^(NSError *__nullable error, NIMQChatSendSystemNotificationResult *__nullable result) {
    // your code
}];

重发自定义系统通知

SDK 支持重发自定义系统通知,重发已经发送成功的自定义系统通知。通知接收方不会再次收到系统通知。

SDK 通过圈组消息 NIMQChatMessageManager 中的 resendSystemNotification 重新发送自定义系统通知。

  • 接口原型
/**
 * 重发自定义系统通知
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)resendSystemNotification:(NIMQChatResendSystemNotificationParam *)param
                    completion:(nullable NIMQChatSendSystemNotificationHandler)completion;

其中 NIMQChatResendSystemNotificationParam 是重发自定义系统通知入参。

  • 示例代码
id<NIMQChatMessageManager> qchatMessageManager = [[NIMSDK sharedSDK] qchatMessageManager];
NIMQChatResendSystemNotificationParam *param = [[NIMQChatResendSystemNotificationParam alloc] init];
param.systemNotification = systemNotification;
[qchatMessageManager resendSystemNotification:param
                  completion:^(NSError *__nullable error, NIMQChatSendSystemNotificationResult *__nullable result) {
    // your code
}];

圈组系统通知接收事件回调

SDK 通过圈组消息管理器回调 NIMQChatMessageManagerDelegate 中的 onRecvSystemNotification 回调系统通知接收事件。

  • 接口原型
/**
 * 圈组系统通知接收事件回调
 *
 * @param result 结果详情
 */
- (void)onRecvSystemNotification:(NIMQChatReceiveSystemNotificationResult *)result;

其中NIMQChatReceiveSystemNotificationResult 是圈组系统通知接收事件的回调类型。

  • 示例代码
// 添加监听
- (void)addListener {
    [[[NIMSDK sharedSDK] qchatMessageManager] addDelegate:self];
}

// 移除监听
- (void)removeListener {
    [[[NIMSDK sharedSDK] qchatMessageManager] removeDelegate:self];
}

// 回调方法
- (void)qchatKickedOut:(NIMLoginKickoutResult *)result {
    // your code
}

更新系统通知

对于已发送的系统通知,可以修改系统通知中部分信息。

SDK 通过圈组消息 NIMQChatMessageManager 中的 updateSystemNotification 更新系统通知。

  • 接口原型
/**
 * 更新系统通知(可以更新状态、也可以更新内容)
 */
- (void)updateSystemNotification:(NIMQChatUpdateSystemNotificationParam *)param
             completion:(nullable NIMQChatUpdateSystemNotificationHandler)completion;

其中 NIMQChatUpdateSystemNotificationParam 是更新系统通知入参。

  • 示例代码
id<NIMQChatMessageManager> qchatMessageManager = [[NIMSDK sharedSDK] qchatMessageManager];
NIMQChatUpdateSystemNotificationParam *param = [[NIMQChatUpdateSystemNotificationParam alloc] init];
param.msgServerId = systemNotification.messageServerID;
param.notificationType = NIMQChatSystemNotificationTypeCustom;
param.status = 10000;

//更新设置
NIMQChatUpdateParam *universalUpdateInfo = [NIMQChatUpdateParam new];
universalUpdateInfo.postscript = @"更新系统通知";
universalUpdateInfo.pushContent = @"更新了系统通知";
universalUpdateInfo.env = @"***";
universalUpdateInfo.routeEnable = YES;

param.updateParam = universalUpdateInfo;

[qchatMessageManager updateSystemNotification:param
                  completion:^(NSError *__nullable error, NIMQChatUpdateSystemNotificationResult *__nullable result) {
    // your code
}];

圈组系统通知更新事件回调

SDK 通过圈组消息管理器回调 NIMQChatMessageManagerDelegate 中的 onSystemNotificationUpdate 回调系统通知更新事件。

  • 接口原型
/**
 * 圈组系统通知更新事件回调
 *
 * @param result 结果详情
 */
- (void)onSystemNotificationUpdate:(NIMQChatSystemNotificationUpdateResult *)result;

其中NIMQChatSystemNotificationUpdateResult 是圈组系统通知更新同步事件回调参数类型。

  • 示例代码
// 添加监听
- (void)addListener {
    [[[NIMSDK sharedSDK] qchatMessageManager] addDelegate:self];
}

// 移除监听
- (void)removeListener {
    [[[NIMSDK sharedSDK] qchatMessageManager] removeDelegate:self];
}

// 回调方法
- (void)qchatKickedOut:(NIMLoginKickoutResult *)result {
    // your code
}

标记系统通知已读

可以对系统通知标记已读。标记已读后的系统通知将从服务端删除,后续不会在其他端接收到了。

SDK 通过圈组消息 NIMQChatMessageManager 中的 markSystemNotificationsRead 标记系统通知已读。

  • 接口原型
/**
 * 标记系统通知已读
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)markSystemNotificationsRead:(NIMQChatMarkSystemNotificationsReadParam *)param
                         completion:(nullable NIMQChatHandler)completion;

其中 NIMQChatMarkSystemNotificationsReadParam 是标记系统通知已读的入参。

  • 示例代码
id<NIMQChatMessageManager> qchatMessageManager = [[NIMSDK sharedSDK] qchatMessageManager];
NIMQChatMarkSystemNotificationsReadParam *param = [[NIMQChatMarkSystemNotificationsReadParam alloc] init];
NIMQChatMarkSystemNotificationsReadItem *item = [[NIMQChatMarkSystemNotificationsReadItem alloc] init];
item.messageServerId = 10101010;
item.type = NIMQChatSystemNotificationTypeCustom;
param.items = @[item];
[qchatMessageManager markSystemNotificationsRead:param
                     completion:^(NSError *__nullable error) {
    // your code
}];
此文档是否对你有帮助?
有帮助
我要吐槽
  • 圈组系统通知概览
  • 内置系统通知分类
  • 技术原理
  • 实现方法
  • 发送自定义系统通知
  • 重发自定义系统通知
  • 圈组系统通知接收事件回调
  • 更新系统通知
  • 圈组系统通知更新事件回调
  • 标记系统通知已读