mirror of
https://github.com/lakaola/chat-uniapp.git
synced 2026-05-06 21:50:21 +08:00
初始化项目
This commit is contained in:
BIN
nativeplugins/TUICallingUniPlugin-TUICallingModule/ios/ImSDK_Plus.framework/.DS_Store
vendored
Normal file
BIN
nativeplugins/TUICallingUniPlugin-TUICallingModule/ios/ImSDK_Plus.framework/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -0,0 +1,15 @@
|
||||
// Copyright (c) 2020 Tencent. All rights reserved.
|
||||
|
||||
#ifndef TIM_IM_SDK_PLUS_H_
|
||||
#define TIM_IM_SDK_PLUS_H_
|
||||
|
||||
#import "TIMErrorCode.h"
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+APNS.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
#import "V2TIMManager+Conversation.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
#import "V2TIMManager+Friendship.h"
|
||||
#import "V2TIMManager+Signaling.h"
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,415 @@
|
||||
// Copyright (c) 2020 Tencent. All rights reserved.
|
||||
|
||||
#ifndef TIM_ERROR_CODE_H_
|
||||
#define TIM_ERROR_CODE_H_
|
||||
|
||||
enum ERROR_CODE {
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (一)IM SDK 的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 通用错误码
|
||||
|
||||
ERR_SUCC = 0, ///< 无错误。
|
||||
ERR_IN_PROGESS = 6015, ///< 执行中,请做好接口调用控制,例如,第一次初始化操作在回调前,后续的初始化操作会返回该错误码。
|
||||
ERR_INVALID_PARAMETERS = 6017, ///< 参数无效,请检查参数是否符合要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_IO_OPERATION_FAILED = 6022, ///< 操作本地 IO 错误,检查是否有读写权限,磁盘是否已满。
|
||||
ERR_INVALID_JSON = 6027, ///< 错误的 JSON 格式,请检查参数是否符合接口的要求,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_OUT_OF_MEMORY = 6028, ///< 内存不足,可能存在内存泄漏,iOS 平台使用 Instrument 工具,Android 平台使用 Profiler 工具,分析出什么地方的内存占用高。
|
||||
ERR_PARSE_RESPONSE_FAILED = 6001, ///< PB 解析失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SERIALIZE_REQ_FAILED = 6002, ///< PB 序列化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_NOT_INITIALIZED = 6013, ///< IM SDK 未初始化,初始化成功回调之后重试。
|
||||
ERR_LOADMSG_FAILED = 6005, ///< 加载本地数据库操作失败,可能存储文件有损坏,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服定位具体问题。
|
||||
ERR_DATABASE_OPERATE_FAILED = 6019, ///< 本地数据库操作失败,可能是部分目录无权限或者数据库文件已损坏。
|
||||
ERR_SDK_COMM_CROSS_THREAD = 7001, ///< 跨线程错误,不能在跨越不同线程中执行,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_TINYID_EMPTY = 7002, ///< TinyId 为空,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_COMM_INVALID_IDENTIFIER = 7003, ///< Identifier 非法,必须不为空,要求可打印 ASCII 字符(0x20-0x7e),长度不超过32字节。
|
||||
ERR_SDK_COMM_FILE_NOT_FOUND = 7004, ///< 文件不存在,请检查文件路径是否正确。
|
||||
ERR_SDK_COMM_FILE_TOO_LARGE = 7005, ///< 文件大小超出了限制,图片、语音最大限制是28MB,视频、文件最大限制是100MB
|
||||
ERR_SDK_COMM_FILE_SIZE_EMPTY = 7006, ///< 空文件,要求文件大小不是0字节,如果上传图片、语音、视频或文件,请检查文件是否正确生成。
|
||||
ERR_SDK_COMM_FILE_OPEN_FAILED = 7007, ///< 文件打开失败,请检查文件是否存在,或者已被独占打开,引起 SDK 打开失败。
|
||||
ERR_SDK_COMM_API_CALL_FREQUENCY_LIMIT = 7008, ///< API 调用超频
|
||||
ERR_SDK_INTERFACE_NOT_SUPPORT = 7013, ///< 套餐包不支持该接口的使用,请升级到旗舰版套餐
|
||||
ERR_SDK_INVALID_OPERATION = 7014, ///< 非法请求
|
||||
|
||||
// 帐号错误码
|
||||
|
||||
ERR_SDK_NOT_LOGGED_IN = 6014, ///< IM SDK 未登录,请先登录,成功回调之后重试,或者已被踢下线,可使用 TIMManager getLoginUser 检查当前是否在线。
|
||||
ERR_NO_PREVIOUS_LOGIN = 6026, ///< 自动登录时,并没有登录过该用户,这时候请调用 login 接口重新登录。
|
||||
ERR_USER_SIG_EXPIRED = 6206, ///< UserSig 过期,请重新获取有效的 UserSig 后再重新登录。
|
||||
ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, ///< 其他终端登录同一个帐号,引起已登录的帐号被踢,需重新登录。
|
||||
ERR_SDK_ACCOUNT_LOGIN_IN_PROCESS = 7501, ///< 登录正在执行中,例如,第一次 login 或 autoLogin 操作在回调前,后续的 login 或 autoLogin 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_LOGOUT_IN_PROCESS = 7502, ///< 登出正在执行中,例如,第一次 logout 操作在回调前,后续的 logout 操作会返回该错误码。
|
||||
ERR_SDK_ACCOUNT_TLS_INIT_FAILED = 7503, ///< TLS SDK 初始化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_NOT_INITIALIZED = 7504, ///< TLS SDK 未初始化,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_TRANSPKG_ERROR = 7505, ///< TLS SDK TRANS 包格式错误,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_DECRYPT_FAILED = 7506, ///< TLS SDK 解密失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_FAILED = 7507, ///< TLS SDK 请求失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_SDK_ACCOUNT_TLS_REQUEST_TIMEOUT = 7508, ///< TLS SDK 请求超时,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_INVALID_CONVERSATION = 6004, ///< 会话无效,getConversation 时检查是否已经登录,如未登录获取会话,会有此错误码返回。
|
||||
ERR_FILE_TRANS_AUTH_FAILED = 6006, ///< 文件传输鉴权失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_NO_SERVER = 6007, ///< 文件传输获取 Server 列表失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
|
||||
ERR_FILE_TRANS_UPLOAD_FAILED = 6008, ///< 文件传输上传失败,请检查网络是否连接
|
||||
ERR_IMAGE_UPLOAD_FAILED_NOTIMAGE = 6031, ///< 文件传输上传失败,请检查上传的图片是否能够正常打开。
|
||||
ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, ///< 文件传输下载失败,请检查网络,或者文件、语音是否已经过期,目前资源文件存储7天。
|
||||
ERR_HTTP_REQ_FAILED = 6010, ///< HTTP 请求失败,请检查 URL 地址是否合法,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_INVALID_MSG_ELEM = 6016, ///< IM SDK 无效消息 elem,具体可查看错误信息进一步定义哪个字段。
|
||||
ERR_INVALID_SDK_OBJECT = 6021, ///< 无效的对象,例如用户自己生成 TIMImage 对象,或内部赋值错误导致对象无效。
|
||||
ERR_SDK_MSG_BODY_SIZE_LIMIT = 8001, ///< 消息长度超出限制,消息长度不要超过8k,消息长度是各个 elem 长度的总和,elem 长度是所有 elem 字段的长度总和。
|
||||
ERR_SDK_MSG_KEY_REQ_DIFFER_RSP = 8002, ///< 消息 KEY 错误,内部错误,网络请求包的 KEY 和 回复包的不一致。
|
||||
ERR_SDK_IMAGE_CONVERT_ERROR = 8003, ///< 万象优图 HTTP 请求失败。
|
||||
ERR_MERGER_MSG_LAYERS_OVER_LIMIT = 8005, ///< 合并消息嵌套层数超过上限(上限 100 层)。
|
||||
|
||||
ERR_SDK_SIGNALING_INVALID_INVITE_ID = 8010, ///< 信令请求 ID 无效或已经被处理过。
|
||||
ERR_SDK_SIGNALING_NO_PERMISSION = 8011, ///< 信令请求无权限,比如取消非自己发起的邀请。
|
||||
ERR_SDK_SIGNALING_ALREADY_EXISTS = 8012, ///< 信令邀请已存在。
|
||||
|
||||
// 群组错误码
|
||||
|
||||
ERR_SDK_GROUP_INVALID_ID = 8501, ///< 群组 ID 非法,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长48个字节,且前缀不能为 @TGS#(避免与服务端默认分配的群组 ID 混淆)。
|
||||
ERR_SDK_GROUP_INVALID_NAME = 8502, ///< 群名称非法,群名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_INTRODUCTION = 8503, ///< 群简介非法,群简介最长240字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_NOTIFICATION = 8504, ///< 群公告非法,群公告最长300字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_INVALID_FACE_URL = 8505, ///< 群头像 URL 非法,群头像 URL 最长100字节,可在网页浏览器尝试访问该 URL 地址。
|
||||
ERR_SDK_GROUP_INVALID_NAME_CARD = 8506, ///< 群名片非法,群名片最长50字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_GROUP_MEMBER_COUNT_LIMIT = 8507, ///< 超过群组成员数的限制,在创建群和邀请成员时,指定的成员数超出限制,最大群成员数量:私有群是200人,公开群是2000人,聊天室是10000人,音视频聊天室和在线成员广播大群无限制。
|
||||
ERR_SDK_GROUP_JOIN_PRIVATE_GROUP_DENY = 8508, ///< 不允许申请加入 Private 群组,任意群成员可邀请入群,且无需被邀请人同意。
|
||||
ERR_SDK_GROUP_INVITE_SUPER_DENY = 8509, ///< 不允许邀请角色为群主的成员,请检查角色字段是否填写正确。
|
||||
ERR_SDK_GROUP_INVITE_NO_MEMBER = 8510, ///< 不允许邀请0个成员,请检查成员字段是否填写正确。
|
||||
ERR_SDK_GROUP_ATTR_FREQUENCY_LIMIT = 8511, ///< 群属性接口操作限制:增删改接口后台限制1秒5次,查接口 SDK 限制5秒20次。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SDK_FRIENDSHIP_INVALID_PROFILE_KEY = 9001, ///< 资料字段非法,资料支持标配字段及自定义字段,其中自定义字段的关键字,必须是英文字母,且长度不得超过8字节,自定义字段的值最长不能超过500字节。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_REMARK = 9002, ///< 备注字段非法,最大96字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_WORDING = 9003, ///< 请求添加好友的请求说明字段非法,最大120字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
ERR_SDK_FRIENDSHIP_INVALID_ADD_SOURCE = 9004, ///< 请求添加好友的添加来源字段非法,来源需要添加“AddSource_Type_”前缀。
|
||||
ERR_SDK_FRIENDSHIP_FRIEND_GROUP_EMPTY = 9005, ///< 好友分组字段非法,必须不为空,每个分组的名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
|
||||
|
||||
// 网络错误码
|
||||
|
||||
ERR_SDK_NET_ENCODE_FAILED = 9501, ///< 网络加密失败,内部错误。
|
||||
ERR_SDK_NET_DECODE_FAILED = 9502, ///< 网络数据解密失败,内部错误。
|
||||
ERR_SDK_NET_AUTH_INVALID = 9503, ///< 未完成鉴权,可能登录未完成,请在登录完成后再操作。
|
||||
ERR_SDK_NET_COMPRESS_FAILED = 9504, ///< 数据包压缩失败,内部错误。
|
||||
ERR_SDK_NET_UNCOMPRESS_FAILED = 9505, ///< 数据包解压失败,内部错误。
|
||||
ERR_SDK_NET_FREQ_LIMIT = 9506, ///< 调用频率限制,最大每秒发起 5 次请求。
|
||||
ERR_SDK_NET_REQ_COUNT_LIMIT = 9507, ///< 请求队列満,超过同时请求的数量限制,最大同时发起1000个请求。
|
||||
ERR_SDK_NET_DISCONNECT = 9508, ///< 网络已断开,未建立连接,或者建立 socket 连接时,检测到无网络。
|
||||
ERR_SDK_NET_ALLREADY_CONN = 9509, ///< 网络连接已建立,重复创建连接,内部错误。
|
||||
ERR_SDK_NET_CONN_TIMEOUT = 9510, ///< 建立网络连接超时,请等网络恢复后重试。
|
||||
ERR_SDK_NET_CONN_REFUSE = 9511, ///< 网络连接已被拒绝,请求过于频繁,服务端拒绝服务。
|
||||
ERR_SDK_NET_NET_UNREACH = 9512, ///< 没有到达网络的可用路由,请等网络恢复后重试。
|
||||
ERR_SDK_NET_SOCKET_NO_BUFF = 9513, ///< 系统中没有足够的缓冲区空间资源可用来完成调用,系统过于繁忙,内部错误。
|
||||
ERR_SDK_NET_RESET_BY_PEER = 9514, ///< 对端重置了连接,可能服务端过载,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_SOCKET_INVALID = 9515, ///< socket 套接字无效,内部错误。
|
||||
ERR_SDK_NET_HOST_GETADDRINFO_FAILED = 9516, ///< IP 地址解析失败,内部错误,可能是本地 imsdk_config 配置文件被损坏,读取到到 IP 地址非法。
|
||||
ERR_SDK_NET_CONNECT_RESET = 9517, ///< 网络连接到中间节点或服务端重置,引起连接失效,内部错误,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
|
||||
ERR_SDK_NET_WAIT_INQUEUE_TIMEOUT = 9518, ///< 请求包等待进入待发送队列超时,发送时网络连接建立比较慢 或 频繁断网重连时,会出现该错误,请检查网络连接是否正常。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT = 9519, ///< 请求包已进入 IM SDK 待发送队列,等待进入操作系统的网络层时超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT = 9520, ///< 请求包已由 IM SDK 待发送队列进入操作系统网络层,等待服务端回包超时。一般可能原因是本地网络受限/不通或本地网络与 IM SDK 后台连接不通。建议用不同的网络环境分别运行 IM SDK 来确认是否因当前网络环境问题引起。
|
||||
ERR_SDK_NET_WAIT_SEND_REMAINING_TIMEOUT = 9521, ///< 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误时检测有联网,内部错误。
|
||||
ERR_SDK_NET_PKG_SIZE_LIMIT = 9522, ///< 请求包长度大于限制,最大支持 1MB 。
|
||||
ERR_SDK_NET_WAIT_SEND_TIMEOUT_NO_NETWORK = 9523, ///< 请求包已进入待发送队列,等待进入系统的网络 buffer 超时,数据包较多 或 发送线程处理不过来,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_WAIT_ACK_TIMEOUT_NO_NETWORK = 9524, ///< 请求包已进入系统的网络 buffer ,等待服务端回包超时,可能请求包没离开终端设备、中间路由丢弃、服务端意外丢包或回包被系统网络层丢弃,在回调错误码时检测到没有联网。
|
||||
ERR_SDK_NET_SEND_REMAINING_TIMEOUT_NO_NETWORK = 9525, ///< 请求包已进入待发送队列,部分数据已发送,等待发送剩余部分出现超时,可能上行带宽不足,请检查网络是否畅通,在回调错误码时检测到没有联网。
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (二)服务端的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// SSO 接入层的错误码
|
||||
|
||||
ERR_SVR_SSO_CONNECT_LIMIT = -302 , ///< SSO 的连接数量超出限制,服务端拒绝服务。
|
||||
ERR_SVR_SSO_VCODE = -10000, ///< 下发验证码标志错误。
|
||||
ERR_SVR_SSO_D2_EXPIRED = -10001, ///< D2 过期。
|
||||
ERR_SVR_SSO_A2_UP_INVALID = -10003, ///< A2 校验失败等场景使用。
|
||||
ERR_SVR_SSO_A2_DOWN_INVALID = -10004, ///< 处理下行包时发现 A2 验证没通过或者被安全打击。
|
||||
ERR_SVR_SSO_EMPTY_KEY = -10005, ///< 不允许空 D2Key 加密。
|
||||
ERR_SVR_SSO_UIN_INVALID = -10006, ///< D2 中的 uin 和 SSO 包头的 uin 不匹配。
|
||||
ERR_SVR_SSO_VCODE_TIMEOUT = -10007, ///< 验证码下发超时。
|
||||
ERR_SVR_SSO_NO_IMEI_AND_A2 = -10008, ///< 需要带上 IMEI 和 A2 。
|
||||
ERR_SVR_SSO_COOKIE_INVALID = -10009, ///< Cookie 非法。
|
||||
ERR_SVR_SSO_DOWN_TIP = -10101, ///< 下发提示语,D2 过期。
|
||||
ERR_SVR_SSO_DISCONNECT = -10102, ///< 断链锁屏。
|
||||
ERR_SVR_SSO_IDENTIFIER_INVALID = -10103, ///< 失效身份。
|
||||
ERR_SVR_SSO_CLIENT_CLOSE = -10104, ///< 终端自动退出。
|
||||
ERR_SVR_SSO_MSFSDK_QUIT = -10105, ///< MSFSDK 自动退出。
|
||||
ERR_SVR_SSO_D2KEY_WRONG = -10106, ///< SSO D2key 解密失败次数太多,通知终端需要重置,重新刷新 D2 。
|
||||
ERR_SVR_SSO_UNSURPPORT = -10107, ///< 不支持聚合,给终端返回统一的错误码。终端在该 TCP 长连接上停止聚合。
|
||||
ERR_SVR_SSO_PREPAID_ARREARS = -10108, ///< 预付费欠费。
|
||||
ERR_SVR_SSO_PACKET_WRONG = -10109, ///< 请求包格式错误。
|
||||
ERR_SVR_SSO_APPID_BLACK_LIST = -10110, ///< SDKAppID 黑名单。
|
||||
ERR_SVR_SSO_CMD_BLACK_LIST = -10111, ///< SDKAppID 设置 service cmd 黑名单。
|
||||
ERR_SVR_SSO_APPID_WITHOUT_USING = -10112, ///< SDKAppID 停用。
|
||||
ERR_SVR_SSO_FREQ_LIMIT = -10113, ///< 频率限制(用户),频率限制是设置针对某一个协议的每秒请求数的限制。
|
||||
ERR_SVR_SSO_OVERLOAD = -10114, ///< 过载丢包(系统),连接的服务端处理过多请求,处理不过来,拒绝服务。
|
||||
|
||||
// 资源文件错误码
|
||||
|
||||
ERR_SVR_RES_NOT_FOUND = 114000, ///< 要发送的资源文件不存在。
|
||||
ERR_SVR_RES_ACCESS_DENY = 114001, ///< 要发送的资源文件不允许访问。
|
||||
ERR_SVR_RES_SIZE_LIMIT = 114002, ///< 文件大小超过限制。
|
||||
ERR_SVR_RES_SEND_CANCEL = 114003, ///< 用户取消发送,如发送过程中登出等原因。
|
||||
ERR_SVR_RES_READ_FAILED = 114004, ///< 读取文件内容失败。
|
||||
ERR_SVR_RES_TRANSFER_TIMEOUT = 114005, ///< 资源文件(如图片、文件、语音、视频)传输超时,一般是网络问题导致。
|
||||
ERR_SVR_RES_INVALID_PARAMETERS = 114011, ///< 参数非法。
|
||||
ERR_SVR_RES_INVALID_FILE_MD5 = 115066, ///< 文件 MD5 校验失败。
|
||||
ERR_SVR_RES_INVALID_PART_MD5 = 115068, ///< 分片 MD5 校验失败。
|
||||
|
||||
// 后台公共错误码
|
||||
|
||||
ERR_SVR_COMM_INVALID_HTTP_URL = 60002, ///< HTTP 解析错误 ,请检查 HTTP 请求 URL 格式。
|
||||
ERR_SVR_COMM_REQ_JSON_PARSE_FAILED = 60003, ///< HTTP 请求 JSON 解析错误,请检查 JSON 格式。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT = 60004, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_ACCOUNT_EX = 60005, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
|
||||
ERR_SVR_COMM_INVALID_SDKAPPID = 60006, ///< SDKAppID 失效,请核对 SDKAppID 有效性。
|
||||
ERR_SVR_COMM_REST_FREQ_LIMIT = 60007, ///< REST 接口调用频率超过限制,请降低请求频率。
|
||||
ERR_SVR_COMM_REQUEST_TIMEOUT = 60008, ///< 服务请求超时或 HTTP 请求格式错误,请检查并重试。
|
||||
ERR_SVR_COMM_INVALID_RES = 60009, ///< 请求资源错误,请检查请求 URL。
|
||||
ERR_SVR_COMM_ID_NOT_ADMIN = 60010, ///< REST API 请求的 Identifier 字段请填写 App 管理员帐号。
|
||||
ERR_SVR_COMM_SDKAPPID_FREQ_LIMIT = 60011, ///< SDKAppID 请求频率超限,请降低请求频率。
|
||||
ERR_SVR_COMM_SDKAPPID_MISS = 60012, ///< REST 接口需要带 SDKAppID,请检查请求 URL 中的 SDKAppID。
|
||||
ERR_SVR_COMM_RSP_JSON_PARSE_FAILED = 60013, ///< HTTP 响应包 JSON 解析错误。
|
||||
ERR_SVR_COMM_EXCHANGE_ACCOUNT_TIMEUT = 60014, ///< 置换帐号超时。
|
||||
ERR_SVR_COMM_INVALID_ID_FORMAT = 60015, ///< 请求包体 Identifier 类型错误,请确认 Identifier 为字符串格式。
|
||||
ERR_SVR_COMM_SDKAPPID_FORBIDDEN = 60016, ///< SDKAppID 被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FORBIDDEN = 60017, ///< 请求被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT = 60018, ///< 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_REQ_FREQ_LIMIT_EX = 60019, ///< 请求过于频繁,请稍后重试。
|
||||
ERR_SVR_COMM_INVALID_SERVICE = 60020, ///< 未购买套餐包或购买的套餐包正在配置中暂未生效,请五分钟后再次尝试。
|
||||
ERR_SVR_COMM_SENSITIVE_TEXT = 80001, ///< 文本安全打击,文本中可能包含敏感词汇。
|
||||
ERR_SVR_COMM_BODY_SIZE_LIMIT = 80002, ///< 发消息包体过长,目前支持最大8k消息包体长度,请减少包体大小重试。
|
||||
|
||||
// 帐号错误码
|
||||
|
||||
ERR_SVR_ACCOUNT_USERSIG_EXPIRED = 70001, ///< UserSig 已过期,请重新生成 UserSig,建议 UserSig 有效期不小于24小时。
|
||||
ERR_SVR_ACCOUNT_USERSIG_EMPTY = 70002, ///< UserSig 长度为0,请检查传入的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED = 70003, ///< UserSig 校验失败,请确认下 UserSig 内容是否被截断,如缓冲区长度不够导致的内容截断。
|
||||
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED_EX = 70005, ///< UserSig 校验失败,可用工具自行验证生成的 UserSig 是否正确。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_PUBLICKEY = 70009, ///< 用公钥验证 UserSig 失败,请确认生成的 UserSig 使用的私钥和 SDKAppID 是否对应。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_ID = 70013, ///< 请求的 Identifier 与生成 UserSig 的 Identifier 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_SDKAPPID = 70014, ///< 请求的 SDKAppID 与生成 UserSig 的 SDKAppID 不匹配。
|
||||
ERR_SVR_ACCOUNT_USERSIG_PUBLICKEY_NOT_FOUND = 70016, ///< 验证 UserSig 时公钥不存在。请先登录控制台下载私钥,下载私钥的具体方法可参考 [下载签名用的私钥](https://cloud.tencent.com/document/product/269/32688#.E4.B8.8B.E8.BD.BD.E7.AD.BE.E5.90.8D.E7.94.A8.E7.9A.84.E7.A7.81.E9.92.A5) 。
|
||||
ERR_SVR_ACCOUNT_SDKAPPID_NOT_FOUND = 70020, ///< SDKAppID 未找到,请在云通信 IM 控制台确认应用信息。
|
||||
ERR_SVR_ACCOUNT_INVALID_USERSIG = 70052, ///< UserSig 已经失效,请重新生成,再次尝试。
|
||||
ERR_SVR_ACCOUNT_NOT_FOUND = 70107, ///< 请求的用户帐号不存在。
|
||||
ERR_SVR_ACCOUNT_SEC_RSTR = 70114, ///< 安全原因被限制。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_TIMEOUT = 70169, ///< 服务端内部超时,请重试。
|
||||
ERR_SVR_ACCOUNT_INVALID_COUNT = 70206, ///< 请求中批量数量不合法。
|
||||
ERR_SVR_ACCOUNT_INVALID_PARAMETERS = 70402, ///< 参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。
|
||||
ERR_SVR_ACCOUNT_ADMIN_REQUIRED = 70403, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_ACCOUNT_FREQ_LIMIT = 70050, ///< 因失败且重试次数过多导致被限制,请检查 UserSig 是否正确,一分钟之后再试。
|
||||
ERR_SVR_ACCOUNT_BLACKLIST = 70051, ///< 帐号被拉入黑名单。
|
||||
ERR_SVR_ACCOUNT_COUNT_LIMIT = 70398, ///< 创建帐号数量超过免费体验版数量限制,请升级为专业版。
|
||||
ERR_SVR_ACCOUNT_INTERNAL_ERROR = 70500, ///< 服务端内部错误,请重试。
|
||||
|
||||
// 资料错误码
|
||||
|
||||
ERR_SVR_PROFILE_INVALID_PARAMETERS = 40001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_PROFILE_ACCOUNT_MISS = 40002, ///< 请求参数错误,没有指定需要拉取资料的用户帐号。
|
||||
ERR_SVR_PROFILE_ACCOUNT_NOT_FOUND = 40003, ///< 请求的用户帐号不存在。
|
||||
ERR_SVR_PROFILE_ADMIN_REQUIRED = 40004, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_PROFILE_SENSITIVE_TEXT = 40005, ///< 资料字段中包含敏感词。
|
||||
ERR_SVR_PROFILE_INTERNAL_ERROR = 40006, ///< 服务端内部错误,请稍后重试。
|
||||
ERR_SVR_PROFILE_READ_PERMISSION_REQUIRED = 40007, ///< 没有资料字段的读权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_WRITE_PERMISSION_REQUIRED = 40008, ///< 没有资料字段的写权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_TAG_NOT_FOUND = 40009, ///< 资料字段的 Tag 不存在。
|
||||
ERR_SVR_PROFILE_SIZE_LIMIT = 40601, ///< 资料字段的 Value 长度超过500字节。
|
||||
ERR_SVR_PROFILE_VALUE_ERROR = 40605, ///< 标配资料字段的 Value 错误,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
ERR_SVR_PROFILE_INVALID_VALUE_FORMAT = 40610, ///< 资料字段的 Value 类型不匹配,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
|
||||
|
||||
// 关系链错误码
|
||||
|
||||
ERR_SVR_FRIENDSHIP_INVALID_PARAMETERS = 30001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID = 30002, ///< SDKAppID 不匹配。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND = 30003, ///< 请求的用户帐号不存在。
|
||||
ERR_SVR_FRIENDSHIP_ADMIN_REQUIRED = 30004, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_FRIENDSHIP_SENSITIVE_TEXT = 30005, ///< 关系链字段中包含敏感词。
|
||||
ERR_SVR_FRIENDSHIP_INTERNAL_ERROR = 30006, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_FRIENDSHIP_NET_TIMEOUT = 30007, ///< 网络超时,请稍后重试。
|
||||
ERR_SVR_FRIENDSHIP_WRITE_CONFLICT = 30008, ///< 并发写导致写冲突,建议使用批量方式。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_DENY = 30009, ///< 后台禁止该用户发起加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_COUNT_LIMIT = 30010, ///< 自己的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_GROUP_COUNT_LIMIT = 30011, ///< 分组已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_LIMIT = 30012, ///< 未决数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_BLACKLIST_LIMIT = 30013, ///< 黑名单数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_PEER_FRIEND_LIMIT = 30014, ///< 对方的好友数已达系统上限。
|
||||
ERR_SVR_FRIENDSHIP_IN_SELF_BLACKLIST = 30515, ///< 请求添加好友时,对方在自己的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_DENY_ANY = 30516, ///< 请求添加好友时,对方的加好友验证方式是不允许任何人添加自己为好友。
|
||||
ERR_SVR_FRIENDSHIP_IN_PEER_BLACKLIST = 30525, ///< 请求添加好友时,自己在对方的黑名单中,不允许加好友。
|
||||
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_NEED_CONFIRM = 30539, ///< A 请求加 B 为好友,B 的加好友验证方式被设置为“AllowType_Type_NeedConfirm”,这时 A 与 B 之间只能形成未决关系,该返回码用于标识加未决成功,以便与加好友成功的返回码区分开,调用方可以捕捉该错误给用户一个合理的提示。
|
||||
ERR_SVR_FRIENDSHIP_ADD_FRIEND_SEC_RSTR = 30540, ///< 添加好友请求被安全策略打击,请勿频繁发起添加好友请求。
|
||||
ERR_SVR_FRIENDSHIP_PENDENCY_NOT_FOUND = 30614, ///< 请求的未决不存在。
|
||||
ERR_SVR_FRIENDSHIP_DEL_NONFRIEND = 31704, ///< 与请求删除的帐号之间不存在好友关系。
|
||||
ERR_SVR_FRIENDSHIP_DEL_FRIEND_SEC_RSTR = 31707, ///< 删除好友请求被安全策略打击,请勿频繁发起删除好友请求。
|
||||
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND_EX = 31804, ///< 请求的用户帐号不存在。
|
||||
|
||||
// 最近联系人错误码
|
||||
|
||||
ERR_SVR_CONV_ACCOUNT_NOT_FOUND = 50001, ///< 请求的用户帐号不存在。
|
||||
ERR_SVR_CONV_INVALID_PARAMETERS = 50002, ///< 请求参数错误,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_CONV_ADMIN_REQUIRED = 50003, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_CONV_INTERNAL_ERROR = 50004, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_CONV_NET_TIMEOUT = 50005, ///< 网络超时,请稍后重试。
|
||||
|
||||
// 消息错误码
|
||||
|
||||
ERR_SVR_MSG_PKG_PARSE_FAILED = 20001, ///< 请求包非法,请检查发送方和接收方帐号是否存在。
|
||||
ERR_SVR_MSG_INTERNAL_AUTH_FAILED = 20002, ///< 内部鉴权失败。
|
||||
ERR_SVR_MSG_INVALID_ID = 20003, ///< Identifier 无效或者 Identifier 未导入云通信 IM。
|
||||
ERR_SVR_MSG_NET_ERROR = 20004, ///< 网络异常,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR1 = 20005, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_MSG_PUSH_DENY = 20006, ///< 触发发送单聊消息之前回调,App 后台返回禁止下发该消息。
|
||||
ERR_SVR_MSG_IN_PEER_BLACKLIST = 20007, ///< 发送单聊消息,被对方拉黑,禁止发送。
|
||||
ERR_SVR_MSG_BOTH_NOT_FRIEND = 20009, ///< 消息发送双方互相不是好友,禁止发送(配置单聊消息校验好友关系才会出现)。
|
||||
ERR_SVR_MSG_NOT_PEER_FRIEND = 20010, ///< 发送单聊消息,自己不是对方的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_NOT_SELF_FRIEND = 20011, ///< 发送单聊消息,对方不是自己的好友(单向关系),禁止发送。
|
||||
ERR_SVR_MSG_SHUTUP_DENY = 20012, ///< 因禁言,禁止发送消息。
|
||||
ERR_SVR_MSG_REVOKE_TIME_LIMIT = 20016, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_MSG_DEL_RAMBLE_INTERNAL_ERROR = 20018, ///< 删除漫游内部错误。
|
||||
ERR_SVR_MSG_JSON_PARSE_FAILED = 90001, ///< JSON 格式解析失败,请检查请求包是否符合 JSON 规范。
|
||||
ERR_SVR_MSG_INVALID_JSON_BODY_FORMAT = 90002, ///< JSON 格式请求包中 MsgBody 不符合消息格式描述,或者 MsgBody 不是 Array 类型,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_INVALID_TO_ACCOUNT = 90003, ///< JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_RAND = 90005, ///< JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_TIMESTAMP = 90006, ///< JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_BODY_NOT_ARRAY = 90007, ///< JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型
|
||||
ERR_SVR_MSG_ADMIN_REQUIRED = 90009, ///< 请求需要 App 管理员权限。
|
||||
ERR_SVR_MSG_INVALID_JSON_FORMAT = 90010, ///< JSON 格式请求包不符合消息格式描述,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_COUNT_LIMIT = 90011, ///< 批量发消息目标帐号超过500,请减少 To_Account 中目标帐号数量。
|
||||
ERR_SVR_MSG_TO_ACCOUNT_NOT_FOUND = 90012, ///< To_Account 没有注册或不存在,请确认 To_Account 是否导入云通信 IM 或者是否拼写错误。
|
||||
ERR_SVR_MSG_TIME_LIMIT = 90026, ///< 消息离线存储时间错误(最多不能超过7天)。
|
||||
ERR_SVR_MSG_INVALID_SYNCOTHERMACHINE = 90031, ///< JSON 格式请求包体中 SyncOtherMachine 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_INVALID_MSGLIFETIME = 90044, ///< JSON 格式请求包体中 MsgLifeTime 字段不是 Integer 类型
|
||||
ERR_SVR_MSG_ACCOUNT_NOT_FOUND = 90048, ///< 请求的用户帐号不存在。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR2 = 90994, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR3 = 90995, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR4 = 91000, ///< 服务内部错误,请重试。
|
||||
ERR_SVR_MSG_INTERNAL_ERROR5 = 90992, ///< 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务端是否正常向云通信 IM 后台服务端返回回调结果。
|
||||
ERR_SVR_MSG_BODY_SIZE_LIMIT = 93000, ///< JSON 数据包超长,消息包体请不要超过8k。
|
||||
ERR_SVR_MSG_LONGPOLLING_COUNT_LIMIT = 91101, ///< Web 端长轮询被踢(Web 端同时在线实例个数超出限制)。
|
||||
// 120001 - 130000, ///< 单聊第三方回调返回的自定义错误码。
|
||||
|
||||
// 群组错误码
|
||||
|
||||
ERR_SVR_GROUP_INTERNAL_ERROR = 10002, ///< 服务端内部错误,请重试。
|
||||
ERR_SVR_GROUP_API_NAME_ERROR = 10003, ///< 请求中的接口名称错误,请核对接口名称并重试。
|
||||
ERR_SVR_GROUP_INVALID_PARAMETERS = 10004, ///< 参数非法,请根据错误描述检查请求是否正确。
|
||||
ERR_SVR_GROUP_ACOUNT_COUNT_LIMIT = 10005, ///< 请求包体中携带的帐号数量过多。
|
||||
ERR_SVR_GROUP_FREQ_LIMIT = 10006, ///< 操作频率限制,请尝试降低调用的频率。
|
||||
ERR_SVR_GROUP_PERMISSION_DENY = 10007, ///< 操作权限不足,比如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限。
|
||||
ERR_SVR_GROUP_INVALID_REQ = 10008, ///< 请求非法,可能是请求中携带的签名信息验证不正确,请再次尝试或 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系技术客服。
|
||||
ERR_SVR_GROUP_SUPER_NOT_ALLOW_QUIT = 10009, ///< 该群不允许群主主动退出。
|
||||
ERR_SVR_GROUP_NOT_FOUND = 10010, ///< 群组不存在,或者曾经存在过,但是目前已经被解散。
|
||||
ERR_SVR_GROUP_JSON_PARSE_FAILED = 10011, ///< 解析 JSON 包体失败,请检查包体的格式是否符合 JSON 格式。
|
||||
ERR_SVR_GROUP_INVALID_ID = 10012, ///< 发起操作的 Identifier 非法,请检查发起操作的用户 Identifier 是否填写正确。
|
||||
ERR_SVR_GROUP_ALLREADY_MEMBER = 10013, ///< 被邀请加入的用户已经是群成员。
|
||||
ERR_SVR_GROUP_FULL_MEMBER_COUNT = 10014, ///< 群已满员,无法将请求中的用户加入群组,如果是批量加人,可以尝试减少加入用户的数量。
|
||||
ERR_SVR_GROUP_INVALID_GROUPID = 10015, ///< 群组 ID 非法,请检查群组 ID 是否填写正确。
|
||||
ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY = 10016, ///< App 后台通过第三方回调拒绝本次操作。
|
||||
ERR_SVR_GROUP_SHUTUP_DENY = 10017, ///< 因被禁言而不能发送消息,请检查发送者是否被设置禁言。
|
||||
ERR_SVR_GROUP_RSP_SIZE_LIMIT = 10018, ///< 应答包长度超过最大包长(1MB),请求的内容过多,请尝试减少单次请求的数据量。
|
||||
ERR_SVR_GROUP_ACCOUNT_NOT_FOUND = 10019, ///< 请求的用户帐号不存在。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED = 10021, ///< 群组 ID 已被使用,请选择其他的群组 ID。
|
||||
ERR_SVR_GROUP_SEND_MSG_FREQ_LIMIT = 10023, ///< 发消息的频率超限,请延长两次发消息时间的间隔。
|
||||
ERR_SVR_GROUP_REQ_ALLREADY_BEEN_PROCESSED = 10024, ///< 此邀请或者申请请求已经被处理。
|
||||
ERR_SVR_GROUP_GROUPID_IN_USED_FOR_SUPER = 10025, ///< 群组 ID 已被使用,并且操作者为群主,可以直接使用。
|
||||
ERR_SVR_GROUP_SDKAPPID_DENY = 10026, ///< 该 SDKAppID 请求的命令字已被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_NOT_FOUND = 10030, ///< 请求撤回的消息不存在。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_TIME_LIMIT = 10031, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_SVR_GROUP_REVOKE_MSG_DENY = 10032, ///< 请求撤回的消息不支持撤回操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REVOKE_MSG = 10033, ///< 群组类型不支持消息撤回操作。
|
||||
ERR_SVR_GROUP_REMOVE_MSG_DENY = 10034, ///< 该消息类型不支持删除操作。
|
||||
ERR_SVR_GROUP_NOT_ALLOW_REMOVE_MSG = 10035, ///< 音视频聊天室和在线成员广播大群不支持删除消息。
|
||||
ERR_SVR_GROUP_AVCHATROOM_COUNT_LIMIT = 10036, ///< 音视频聊天室创建数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买预付费套餐“IM音视频聊天室”。
|
||||
ERR_SVR_GROUP_COUNT_LIMIT = 10037, ///< 单个用户可创建和加入的群组数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“单人可创建与加入群组数”。
|
||||
ERR_SVR_GROUP_MEMBER_COUNT_LIMIT = 10038, ///< 群成员数量超过限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“扩展群人数上限”。
|
||||
ERR_SVR_GROUP_ATTRIBUTE_WRITE_CONFILCT = 10056, ///< 群属性写冲突,请先拉取最新的群属性后再尝试写操作,IMSDK 5.6 及其以上版本支持。
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (三)IM SDK V3 版本的错误码
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ERR_NO_SUCC_RESULT = 6003, ///< 批量操作无成功结果。
|
||||
ERR_TO_USER_INVALID = 6011, ///< 无效接收方。
|
||||
ERR_REQUEST_TIMEOUT = 6012, ///< 请求超时。
|
||||
ERR_INIT_CORE_FAIL = 6018, ///< INIT CORE 模块失败。
|
||||
ERR_EXPIRED_SESSION_NODE = 6020, ///< SessionNode 为 null 。
|
||||
ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, ///< 在登录完成前进行了登出(在登录时返回)。
|
||||
ERR_TLSSDK_NOT_INITIALIZED = 6024, ///< TLS SDK 未初始化。
|
||||
ERR_TLSSDK_USER_NOT_FOUND = 6025, ///< TLS SDK 没有找到相应的用户信息。
|
||||
ERR_BIND_FAIL_UNKNOWN = 6100, ///< QALSDK 未知原因BIND失败。
|
||||
ERR_BIND_FAIL_NO_SSOTICKET = 6101, ///< 缺少 SSO 票据。
|
||||
ERR_BIND_FAIL_REPEATD_BIND = 6102, ///< 重复 BIND。
|
||||
ERR_BIND_FAIL_TINYID_NULL = 6103, ///< TinyId 为空。
|
||||
ERR_BIND_FAIL_GUID_NULL = 6104, ///< GUID 为空。
|
||||
ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, ///< 解注册包失败。
|
||||
ERR_BIND_FAIL_REG_TIMEOUT = 6106, ///< 注册超时。
|
||||
ERR_BIND_FAIL_ISBINDING = 6107, ///< 正在 BIND 操作中。
|
||||
ERR_PACKET_FAIL_UNKNOWN = 6120, ///< 发包未知错误。
|
||||
ERR_PACKET_FAIL_REQ_NO_NET = 6121, ///< 发送请求包时没有网络。
|
||||
ERR_PACKET_FAIL_RESP_NO_NET = 6122, ///< 发送回复包时没有网络。
|
||||
ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, ///< 发送请求包时没有权限。
|
||||
ERR_PACKET_FAIL_SSO_ERR = 6124, ///< SSO 错误。
|
||||
ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, ///< 请求超时。
|
||||
ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, ///< 回复超时。
|
||||
ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, ///< 重发失败。
|
||||
ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, ///< 重发时没有真正发送。
|
||||
ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, ///< 保存被过滤。
|
||||
ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, ///< 发送过载。
|
||||
ERR_PACKET_FAIL_LOGIC_ERR = 6131, ///< 数据逻辑错误。
|
||||
ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, ///< proxy_manager 没有完成服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCING = 6151, ///< proxy_manager 正在进行服务端数据同步。
|
||||
ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, ///< proxy_manager 同步失败。
|
||||
ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, ///< proxy_manager 请求参数,在本地检查不合法。
|
||||
ERR_GROUP_INVALID_FIELD = 6160, ///< Group assistant 请求字段中包含非预设字段。
|
||||
ERR_GROUP_STORAGE_DISABLED = 6161, ///< Group assistant 群资料本地存储没有开启。
|
||||
ERR_LOADGRPINFO_FAILED = 6162, ///< 加载群资料失败。
|
||||
ERR_REQ_NO_NET_ON_REQ = 6200, ///< 请求的时候没有网络。
|
||||
ERR_REQ_NO_NET_ON_RSP = 6201, ///< 响应的时候没有网络。
|
||||
ERR_SERIVCE_NOT_READY = 6205, ///< QALSDK 服务未就绪。
|
||||
ERR_LOGIN_AUTH_FAILED = 6207, ///< 账号认证失败( TinyId 转换失败)。
|
||||
ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, ///< 在应用启动后没有尝试联网。
|
||||
ERR_REQ_FAILED = 6210, ///< QALSDK 执行失败。
|
||||
ERR_REQ_INVALID_REQ = 6211, ///< 请求非法,toMsgService 非法。
|
||||
ERR_REQ_OVERLOADED = 6212, ///< 请求队列满。
|
||||
ERR_REQ_KICK_OFF = 6213, ///< 已经被其他终端踢了。
|
||||
ERR_REQ_SERVICE_SUSPEND = 6214, ///< 服务被暂停。
|
||||
ERR_REQ_INVALID_SIGN = 6215, ///< SSO 签名错误。
|
||||
ERR_REQ_INVALID_COOKIE = 6216, ///< SSO cookie 无效。
|
||||
ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, ///< 登录时 TLS SDK 回包校验,包体长度错误。
|
||||
ERR_LOGIN_OPENMSG_TIMEOUT = 6218, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态超时。
|
||||
ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态时解析回包失败。
|
||||
ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, ///< 登录时 TLS SDK 解密失败。
|
||||
ERR_WIFI_NEED_AUTH = 6221, ///< WIFI 需要认证。
|
||||
ERR_USER_CANCELED = 6222, ///< 用户已取消。
|
||||
ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, ///< 消息撤回超过了时间限制(默认2分钟)。
|
||||
ERR_LACK_UGC_EXT = 6224, ///< 缺少 UGC 扩展包。
|
||||
ERR_AUTOLOGIN_NEED_USERSIG = 6226, ///< 自动登录,本地票据过期,需要 UserSig 手动登录。
|
||||
ERR_QAL_NO_SHORT_CONN_AVAILABLE = 6300, ///< 没有可用的短连接 SSO 。
|
||||
ERR_REQ_CONTENT_ATTACK = 80101, ///< 消息内容安全打击。
|
||||
ERR_LOGIN_SIG_EXPIRE = 70101, ///< 登录返回,票据过期。
|
||||
ERR_SDK_HAD_INITIALIZED = 90101, ///< IM SDK 已经初始化无需重复初始化。
|
||||
ERR_OPENBDH_BASE = 115000, ///< OpenBDH 错误码基。
|
||||
ERR_REQUEST_NO_NET_ONREQ = 6250, ///< 请求时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_NO_NET_ONRSP = 6251, ///< 响应时没有网络,请等网络恢复后重试。
|
||||
ERR_REQUEST_FAILED = 6252, ///< QALSDK 执行失败。
|
||||
ERR_REQUEST_INVALID_REQ = 6253, ///< 请求非法,toMsgService 非法。
|
||||
ERR_REQUEST_OVERLOADED = 6254, ///< 请求队列満。
|
||||
ERR_REQUEST_KICK_OFF = 6255, ///< 已经被其他终端踢了。
|
||||
ERR_REQUEST_SERVICE_SUSPEND = 6256, ///< 服务被暂停。
|
||||
ERR_REQUEST_INVALID_SIGN = 6257, ///< SSO 签名错误。
|
||||
ERR_REQUEST_INVALID_COOKIE = 6258, ///< SSO cookie 无效。
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,110 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+APNS
|
||||
//
|
||||
// 消息推送接口,里面包含了消息的推送的开启逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
@class V2TIMAPNSConfig;
|
||||
@protocol V2TIMAPNSListener;
|
||||
|
||||
@interface V2TIMManager (APNS)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 设置 APNS 推送
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 1.1 设置 APNS 监听
|
||||
*/
|
||||
- (void)setAPNSListener:(id<V2TIMAPNSListener>)apnsListener;
|
||||
|
||||
/**
|
||||
* 1.2 设置 APNS 推送
|
||||
*
|
||||
* config -> token:苹果后台对客户端的唯一标识,需要主动调用系统 API 获取,获取方法如下:
|
||||
*
|
||||
* <pre>
|
||||
* //获取 token 代码示例
|
||||
* if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
|
||||
* [[UIApplication sharedApplication] registerUserNotificationSettings:
|
||||
* [UIUserNotificationSettings settingsForTypes:
|
||||
* (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
|
||||
* [[UIApplication sharedApplication] registerForRemoteNotifications];
|
||||
* }
|
||||
* else{
|
||||
* [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
|
||||
* (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
|
||||
* }
|
||||
*
|
||||
* //收到 token 代码示例
|
||||
* -(void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
|
||||
* //回调的 deviceToken 就是需要的 token 信息
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* config -> busiId:推送证书 ID,上传推送证书(p.12)到 IM 控制台后生成。
|
||||
* 具体步骤请参考 [离线推送](https://cloud.tencent.com/document/product/269/9154)。
|
||||
*
|
||||
* @note
|
||||
* - 接口成功设置后会开启离线推送功能,如果您需要自定义推送的格式信息,请参考 V2TIMManager+Message.h 里面的 sendMessage 接口。
|
||||
* - 如果成功开启了离线推送,APP 进后台后,如果收到消息,会弹系统推送通知,APP 进前台后,如果收到消息,则不会弹系统推送通知。
|
||||
* - APP 进后台后应用图标展示的未读数默认为所有会话未读数之和,如果您需要自定义 APP 的未读数,请监听 V2TIMAPNSListener 回调设置。
|
||||
* - 如果您想关闭离线推送,请把 config 设置为 nil。
|
||||
*/
|
||||
- (void)setAPNS:(V2TIMAPNSConfig*)config succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// APNS 监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@protocol V2TIMAPNSListener <NSObject>
|
||||
@optional
|
||||
/** 程序进后台后,自定义 APP 的未读数,如果不处理,APP 未读数默认为所有会话未读数之和
|
||||
* <pre>
|
||||
*
|
||||
* - (uint32_t)onSetAPPUnreadCount {
|
||||
* return 100; // 自定义未读数
|
||||
* }
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
- (uint32_t)onSetAPPUnreadCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// APNS 配置
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@interface V2TIMAPNSConfig : NSObject
|
||||
|
||||
/**
|
||||
* APNS token 或者 TPNS token
|
||||
* @note token 使用注意事项
|
||||
* - 当接入推送 TPNS 通道时,需要设置 isTPNSToken 为 YES,上报注册 TPNS 获取的 token;
|
||||
* - 当接入推送 APNS 通道时,需要设置 isTPNSToken 为 NO,上报注册 APNS 获取的 token。
|
||||
*/
|
||||
@property(nonatomic,strong) NSData *token;
|
||||
|
||||
/**
|
||||
* IM 控制台证书 ID,接入 TPNS 时不需要填写
|
||||
*/
|
||||
@property(nonatomic,assign) int businessID;
|
||||
|
||||
/**
|
||||
* 是否接入配置 TPNS, token 是否是从 TPNS 获取
|
||||
*/
|
||||
@property(nonatomic,assign) BOOL isTPNSToken;
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,246 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Conversation
|
||||
//
|
||||
// 会话接口,里面包含了会话的获取,删除,更新的逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Group.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
|
||||
@protocol V2TIMConversationListener;
|
||||
@class V2TIMConversation;
|
||||
@class V2TIMGroupAtInfo;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 消息会话相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@interface V2TIMManager (Conversation)
|
||||
|
||||
/// 获取会话列表成功的回调,nextSeq:下一次分页拉取的游标 isFinished:会话列表是否已经拉取完毕
|
||||
typedef void(^V2TIMConversationResultSucc)(NSArray<V2TIMConversation *>*list, uint64_t nextSeq, BOOL isFinished);
|
||||
/// 获取单个会话成功回调
|
||||
typedef void(^V2TIMConversationSucc)(V2TIMConversation *conv);
|
||||
/// 搜索会话列表成功回调
|
||||
typedef void(^V2TIMConversationListSucc)(NSArray<V2TIMConversation *>*list);
|
||||
/// 获取会话总未读数回调
|
||||
typedef void(^V2TIMTotalUnreadMessageCountSucc)(UInt64 totalCount);
|
||||
|
||||
/// 会话类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMConversationType) {
|
||||
V2TIM_C2C = 1, ///< 单聊
|
||||
V2TIM_GROUP = 2, ///< 群聊
|
||||
};
|
||||
|
||||
/// @ 类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupAtType) {
|
||||
V2TIM_AT_ME = 1, ///< @ 我
|
||||
V2TIM_AT_ALL = 2, ///< @ 群里所有人
|
||||
V2TIM_AT_ALL_AT_ME = 3, ///< @ 群里所有人并且单独 @ 我
|
||||
};
|
||||
|
||||
/**
|
||||
* 1.1 添加会话监听器
|
||||
*/
|
||||
- (void)addConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(addConversationListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除会话监听器
|
||||
*/
|
||||
- (void)removeConversationListener:(id<V2TIMConversationListener>)listener NS_SWIFT_NAME(removeConversationListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.3 获取会话列表
|
||||
*
|
||||
* - 一个会话对应一个聊天窗口,比如跟一个好友的 1v1 聊天,或者一个聊天群,都是一个会话。
|
||||
* - 由于历史的会话数量可能很多,所以该接口希望您采用分页查询的方式进行调用,每次分页拉取的个数建议为 100 个。
|
||||
* - 该接口拉取的是本地缓存的会话,如果服务器会话有更新,SDK 内部会自动同步,然后在 @ref V2TIMConversationListener 回调告知客户。
|
||||
* - 如果会话全部拉取完毕,成功回调里面 V2TIMConversationResult 中的 isFinished 获取字段值为 YES。
|
||||
*
|
||||
* @note 会话排序规则
|
||||
* - 5.5.892 及以后版本, 该接口获取的会话列表默认已经按照会话 orderKey 做了排序,orderKey 值越大,代表该会话排序越靠前。
|
||||
* - 5.5.892 以前版本,该接口获取的会话列表默认已经按照会话 lastMessage -> timestamp 做了排序,timestamp 越大,会话越靠前。
|
||||
*
|
||||
* @param nextSeq 分页拉取的游标,第一次默认取传 0,后续分页拉传上一次分页拉取成功回调里的 nextSeq
|
||||
* @param count 分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话
|
||||
*/
|
||||
- (void)getConversationList:(uint64_t)nextSeq count:(int)count succ:(V2TIMConversationResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
|
||||
/**
|
||||
* 1.4 获取单个会话
|
||||
*
|
||||
* @param conversationID 会话唯一 ID, C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)getConversation:(NSString *)conversationID succ:(V2TIMConversationSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 1.5 获取指定会话列表
|
||||
*
|
||||
* @param conversationIDList 会话唯一 ID 列表,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*/
|
||||
- (void)getConversationList:(NSArray<NSString *> *)conversationIDList succ:(V2TIMConversationListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 1.6 删除会话以及该会话中的历史消息
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*
|
||||
* @note 请注意:
|
||||
* - 该会话以及会话中的历史消息,会被 SDK 从本地和服务端一同删除掉,并且不可恢复。
|
||||
*/
|
||||
- (void)deleteConversation:(NSString *)conversationID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 1.7 设置会话草稿
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
*
|
||||
* 只在本地保存,不会存储 Server,不能多端同步,程序卸载重装会失效。
|
||||
*/
|
||||
- (void)setConversationDraft:(NSString *)conversationID draftText:(NSString *)draftText succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 1.8 设置会话置顶(5.3.425 及以上版本支持)
|
||||
*
|
||||
* @param conversationID 会话唯一 ID,C2C 单聊组成方式:[NSString stringWithFormat:@"c2c_%@",userID];群聊组成方式为 [NSString stringWithFormat:@"group_%@",groupID]
|
||||
* @param isPinned 是否置顶
|
||||
*/
|
||||
- (void)pinConversation:(NSString *)conversationID isPinned:(BOOL)isPinned succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 1.9 获取所有会话的未读消息总数(5.3.425 及以上版本支持)
|
||||
* @note
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 的会话。
|
||||
*/
|
||||
- (void)getTotalUnreadMessageCount:(V2TIMTotalUnreadMessageCountSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 设置会话监听器(待废弃接口,请使用 addConversationListener 和 removeConversationListener 接口)
|
||||
*/
|
||||
- (void)setConversationListener:(id<V2TIMConversationListener>)listener __attribute__((deprecated("use addConversationListener: instead")));
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话变更监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@protocol V2TIMConversationListener <NSObject>
|
||||
@optional
|
||||
/**
|
||||
* 同步服务器会话开始,SDK 会在登录成功或者断网重连后自动同步服务器会话,您可以监听这个事件做一些 UI 进度展示操作。
|
||||
*/
|
||||
- (void)onSyncServerStart;
|
||||
|
||||
/**
|
||||
* 同步服务器会话完成,如果会话有变更,会通过 onNewConversation | onConversationChanged 回调告知客户
|
||||
*/
|
||||
- (void)onSyncServerFinish;
|
||||
|
||||
/**
|
||||
* 同步服务器会话失败
|
||||
*/
|
||||
- (void)onSyncServerFailed;
|
||||
|
||||
/**
|
||||
* 有新的会话(比如收到一个新同事发来的单聊消息、或者被拉入了一个新的群组中),可以根据会话的 lastMessage -> timestamp 重新对会话列表做排序。
|
||||
*/
|
||||
- (void)onNewConversation:(NSArray<V2TIMConversation*> *) conversationList;
|
||||
|
||||
/**
|
||||
* 某些会话的关键信息发生变化(未读计数发生变化、最后一条消息被更新等等),可以根据会话的 lastMessage -> timestamp 重新对会话列表做排序。
|
||||
*/
|
||||
- (void)onConversationChanged:(NSArray<V2TIMConversation*> *) conversationList;
|
||||
|
||||
/**
|
||||
* 会话未读总数变更通知(5.3.425 及以上版本支持)
|
||||
* @note
|
||||
* - 未读总数会减去设置为免打扰的会话的未读数,即消息接收选项设置为 V2TIMMessage.V2TIM_NOT_RECEIVE_MESSAGE 或 V2TIMMessage.V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE 的会话。
|
||||
*/
|
||||
- (void)onTotalUnreadMessageCountChanged:(UInt64) totalUnreadCount;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 会话对象 V2TIMConversation
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 会话对象
|
||||
@interface V2TIMConversation : NSObject
|
||||
|
||||
/// 会话类型
|
||||
@property(nonatomic,assign,readonly) V2TIMConversationType type;
|
||||
|
||||
/// 会话唯一 ID,如果是 C2C 单聊,组成方式为 c2c_userID,如果是群聊,组成方式为 group_groupID
|
||||
@property(nonatomic,strong,readonly) NSString *conversationID;
|
||||
|
||||
/// 如果会话类型为 C2C 单聊,userID 会存储对方的用户ID,否则为 nil
|
||||
@property(nonatomic,strong,readonly) NSString *userID;
|
||||
|
||||
/// 如果会话类型为群聊,groupID 会存储当前群的群 ID,否则为 nil
|
||||
@property(nonatomic,strong,readonly) NSString *groupID;
|
||||
|
||||
/// 如果会话类型为群聊,groupType 为当前群类型,否则为 nil
|
||||
@property(nonatomic,strong,readonly) NSString *groupType;
|
||||
|
||||
/// 会话展示名称(群组:群名称 >> 群 ID;C2C:对方好友备注 >> 对方昵称 >> 对方的 userID)
|
||||
@property(nonatomic,strong,readonly) NSString *showName;
|
||||
|
||||
/// 会话展示头像(群组:群头像;C2C:对方头像)
|
||||
@property(nonatomic,strong,readonly) NSString *faceUrl;
|
||||
|
||||
/// 会话未读消息数量,直播群(AVChatRoom)不支持未读计数,默认为 0
|
||||
@property(nonatomic,assign,readonly) int unreadCount;
|
||||
|
||||
/// 消息接收选项(接收 | 接收但不提醒 | 不接收)
|
||||
@property(nonatomic,assign,readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/**
|
||||
* 会话最后一条消息
|
||||
* @note 5.5.892 以前版本,请您使用 lastMessage -> timestamp 对会话做排序,timestamp 越大,会话越靠前
|
||||
*/
|
||||
@property(nonatomic,strong,readonly) V2TIMMessage *lastMessage;
|
||||
|
||||
/// 群会话 @ 信息列表,用于展示 “有人@我” 或 “@所有人” 这两种提醒状态
|
||||
@property(nonatomic,strong,readonly) NSArray<V2TIMGroupAtInfo *> *groupAtInfolist;
|
||||
|
||||
/// 草稿信息,设置草稿信息请调用 setConversationDraft() 接口
|
||||
@property(nonatomic,strong,readonly) NSString *draftText;
|
||||
|
||||
/// 草稿编辑时间,草稿设置的时候自动生成
|
||||
@property(nonatomic,strong,readonly) NSDate *draftTimestamp;
|
||||
|
||||
/// 是否置顶
|
||||
@property(nonatomic,assign,readonly) BOOL isPinned;
|
||||
|
||||
/**
|
||||
* 排序字段(5.5.892 及以后版本支持)
|
||||
* @note
|
||||
* - 排序字段 orderKey 是按照会话的激活时间线性递增的一个数字(注意:不是时间戳,因为同一时刻可能会有多个会话被同时激活)
|
||||
* - 5.5.892 及其以后版本,推荐您使用该字段对所有会话进行排序,orderKey 值越大,代表该会话排序越靠前
|
||||
* - 当您 “清空会话所有消息” 或者 “逐个删除会话的所有消息” 之后,会话的 lastMessage 变为空,但会话的 orderKey 不会改变;如果想保持会话的排序位置不变,可以使用该字段对所有会话进行排序
|
||||
*/
|
||||
@property(nonatomic,assign,readonly) NSUInteger orderKey;
|
||||
|
||||
@end
|
||||
|
||||
/// @ 信息
|
||||
@interface V2TIMGroupAtInfo : NSObject
|
||||
/// @ 消息序列号,即带有 “@我” 或者 “@所有人” 标记的消息的序列号
|
||||
@property(nonatomic,assign,readonly) uint64_t seq;
|
||||
|
||||
/// @ 提醒类型,分成 “@我” 、“@所有人” 以及 “@我并@所有人” 三类
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupAtType atType;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,518 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Friendship
|
||||
//
|
||||
// 关系链接口,里面包含了好友的添加、删除,黑名单的添加、删除等逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
#import "V2TIMManager.h"
|
||||
|
||||
@protocol V2TIMFriendshipListener;
|
||||
@class V2TIMFriendOperationResult;
|
||||
@class V2TIMFriendInfoResult;
|
||||
@class V2TIMFriendInfo;
|
||||
@class V2TIMFriendCheckResult;
|
||||
@class V2TIMFriendApplicationResult;
|
||||
@class V2TIMFriendAddApplication;
|
||||
@class V2TIMFriendApplication;
|
||||
@class V2TIMFriendGroup;
|
||||
@class V2TIMFriendSearchParam;
|
||||
|
||||
@interface V2TIMManager (Friendship)
|
||||
|
||||
/// 获取好友列表成功回调
|
||||
typedef void (^V2TIMFriendInfoListSucc)(NSArray<V2TIMFriendInfo *> *infoList);
|
||||
/// 获取指定好友信息成功回调
|
||||
typedef void (^V2TIMFriendInfoResultListSucc)(NSArray<V2TIMFriendInfoResult *> *resultList);
|
||||
/// 好友操作成功回调
|
||||
typedef void (^V2TIMFriendOperationResultSucc)(V2TIMFriendOperationResult *result);
|
||||
/// 好友列表操作成功回调
|
||||
typedef void (^V2TIMFriendOperationResultListSucc)(NSArray<V2TIMFriendOperationResult *> *resultList);
|
||||
/// 好友检查成功回调
|
||||
typedef void (^V2TIMFriendCheckResultListSucc)(NSArray<V2TIMFriendCheckResult *> *resultList);
|
||||
/// 获取群分组列表成功回调
|
||||
typedef void (^V2TIMFriendGroupListSucc)(NSArray<V2TIMFriendGroup *> * groups);
|
||||
/// 获取好友申请列表成功回调
|
||||
typedef void (^V2TIMFriendApplicationResultSucc)(V2TIMFriendApplicationResult *result);
|
||||
|
||||
/// 好友申请类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendApplicationType) {
|
||||
V2TIM_FRIEND_APPLICATION_COME_IN = 1, ///< 别人发给我的
|
||||
V2TIM_FRIEND_APPLICATION_SEND_OUT = 2, ///< 我发给别人的
|
||||
V2TIM_FRIEND_APPLICATION_BOTH = 3, ///< 别人发给我的 和 我发给别人的。仅拉取时有效
|
||||
};
|
||||
|
||||
/// 好友类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendType) {
|
||||
V2TIM_FRIEND_TYPE_SINGLE = 1, ///< 单向好友
|
||||
V2TIM_FRIEND_TYPE_BOTH = 2, ///< 双向好友
|
||||
};
|
||||
|
||||
/// 好友关系类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendRelationType) {
|
||||
V2TIM_FRIEND_RELATION_TYPE_NONE = 0x0, ///< 不是好友
|
||||
V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST = 0x1, ///< 对方在我的好友列表中
|
||||
V2TIM_FRIEND_RELATION_TYPE_IN_OTHER_FRIEND_LIST = 0x2, ///< 我在对方的好友列表中
|
||||
V2TIM_FRIEND_RELATION_TYPE_BOTH_WAY = 0x3, ///< 互为好友
|
||||
};
|
||||
|
||||
/// 好友申请接受类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendAcceptType) {
|
||||
V2TIM_FRIEND_ACCEPT_AGREE = 0, ///< 接受加好友(建立单向好友)
|
||||
V2TIM_FRIEND_ACCEPT_AGREE_AND_ADD = 1, ///< 接受加好友并加对方为好友(建立双向好友)
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 关系链和用户资料监听器
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 添加关系链监听器
|
||||
*/
|
||||
- (void)addFriendListener:(id<V2TIMFriendshipListener>)listener NS_SWIFT_NAME(addFriendListener(listener:));
|
||||
|
||||
/**
|
||||
* 1.2 移除关系链监听器
|
||||
*/
|
||||
- (void)removeFriendListener:(id<V2TIMFriendshipListener>)listener NS_SWIFT_NAME(removeFriendListener(listener:));
|
||||
|
||||
/**
|
||||
* 设置关系链监听器(待废弃接口,请使用 addFriendListener 和 removeFriendListener 接口)
|
||||
*/
|
||||
- (void)setFriendListener:(id<V2TIMFriendshipListener>)listener __attribute__((deprecated("use addFriendListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友添加、删除、列表获取、资料设置相关接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 获取好友列表
|
||||
*/
|
||||
- (void)getFriendList:(V2TIMFriendInfoListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.2 获取指定好友资料
|
||||
* @param userIDList 好友 userID 列表
|
||||
* - ID 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
*/
|
||||
- (void)getFriendsInfo:(NSArray<NSString *> *)userIDList succ:(V2TIMFriendInfoResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.3 设置指定好友资料
|
||||
*/
|
||||
- (void)setFriendInfo:(V2TIMFriendInfo *)info succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
|
||||
/**
|
||||
* 2.4 搜索好友(5.4.666 及以上版本支持,需要您购买旗舰版套餐)
|
||||
|
||||
* @note 接口返回本地存储的用户资料,可以根据 V2TIMFriendInfoResult 中的 getRelation 来判断是否为好友。
|
||||
*/
|
||||
- (void)searchFriends:(V2TIMFriendSearchParam *)searchParam succ:(V2TIMFriendInfoResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.5 添加好友
|
||||
*/
|
||||
- (void)addFriend:(V2TIMFriendAddApplication *)application succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.6 删除好友
|
||||
* @param userIDList 要删除的好友 userID 列表
|
||||
* - ID 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
* @param deleteType 删除类型(单向好友、双向好友)
|
||||
*/
|
||||
- (void)deleteFromFriendList:(NSArray *)userIDList deleteType:(V2TIMFriendType)deleteType succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.7 检查指定用户的好友关系
|
||||
* @param userIDList 要检查的 userID 列表
|
||||
* @param checkType 检查类型 (单向好友检查、双向好友检查)
|
||||
* @param succ 成功后的回调
|
||||
* @param fail 失败后的回调
|
||||
*
|
||||
* @note checkType 的使用需要注意:
|
||||
* - checkType 如果传入 V2TIM_FRIEND_TYPE_SINGLE,结果返回:V2TIM_FRIEND_RELATION_TYPE_NONE、V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST 两种情况
|
||||
* - checkType 如果传入 V2TIM_FRIEND_TYPE_BOTH,结果返回:V2TIM_FRIEND_RELATION_TYPE_NONE、V2TIM_FRIEND_RELATION_TYPE_IN_MY_FRIEND_LIST、
|
||||
* V2TIM_FRIEND_RELATION_TYPE_IN_OTHER_FRIEND_LIST、V2TIM_FRIEND_RELATION_TYPE_BOTH_WAY 四种情况
|
||||
*/
|
||||
- (void)checkFriend:(NSArray<NSString *> *)userIDList checkType:(V2TIMFriendType)checkType succ:(V2TIMFriendCheckResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友申请、删除相关逻辑
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 3.1 获取好友申请列表
|
||||
*
|
||||
* @note 好友申请列表包括发起的好友申请和收到的好友申请。
|
||||
*/
|
||||
- (void)getFriendApplicationList:(V2TIMFriendApplicationResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.2 同意好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
* @param acceptType 建立单向/双向好友关系
|
||||
*/
|
||||
- (void)acceptFriendApplication:(V2TIMFriendApplication *)application type:(V2TIMFriendAcceptType)acceptType succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.3 拒绝好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
*/
|
||||
- (void)refuseFriendApplication:(V2TIMFriendApplication *)application succ:(V2TIMFriendOperationResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.4 删除好友申请
|
||||
*
|
||||
* @param application 好友申请信息,getFriendApplicationList 成功后会返回
|
||||
*/
|
||||
- (void)deleteFriendApplication:(V2TIMFriendApplication *)application succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.5 设置好友申请已读
|
||||
*/
|
||||
- (void)setFriendApplicationRead:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 黑名单
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 添加用户到黑名单
|
||||
*/
|
||||
- (void)addToBlackList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 4.2 把用户从黑名单中删除
|
||||
*/
|
||||
- (void)deleteFromBlackList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 4.3 获取黑名单列表
|
||||
*/
|
||||
- (void)getBlackList:(V2TIMFriendInfoListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友分组
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 5.1 新建好友分组
|
||||
*
|
||||
* @param groupName 分组名称
|
||||
* @param userIDList 要添加到分组中的好友
|
||||
*/
|
||||
- (void)createFriendGroup:(NSString *)groupName userIDList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 5.2 获取分组信息
|
||||
*
|
||||
* @param groupNameList 要获取信息的好友分组名称列表,传入 nil 获得所有分组信息
|
||||
*/
|
||||
- (void)getFriendGroupList:(NSArray *)groupNameList succ:(V2TIMFriendGroupListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 5.3 删除好友分组
|
||||
*/
|
||||
- (void)deleteFriendGroup:(NSArray *)groupNameList succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 5.4 修改好友分组的名称
|
||||
*/
|
||||
- (void)renameFriendGroup:(NSString*)oldName newName:(NSString*)newName succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 5.5 添加好友到一个好友分组
|
||||
*/
|
||||
- (void)addFriendsToFriendGroup:(NSString *)groupName userIDList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 5.6 从好友分组中删除好友
|
||||
*/
|
||||
- (void)deleteFriendsFromFriendGroup:(NSString *)groupName userIDList:(NSArray *)userIDList succ:(V2TIMFriendOperationResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 资料关系链回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 资料关系链回调
|
||||
@protocol V2TIMFriendshipListener <NSObject>
|
||||
@optional
|
||||
/**
|
||||
* 好友申请新增通知,两种情况会收到这个回调:
|
||||
* 1. 自己申请加别人好友
|
||||
* 2. 别人申请加自己好友
|
||||
*/
|
||||
- (void)onFriendApplicationListAdded:(NSArray<V2TIMFriendApplication *> *)applicationList;
|
||||
|
||||
/**
|
||||
* 好友申请删除通知,四种情况会收到这个回调:
|
||||
* 1. 调用 deleteFriendApplication 主动删除好友申请
|
||||
* 2. 调用 refuseFriendApplication 拒绝好友申请
|
||||
* 3. 调用 acceptFriendApplication 同意好友申请
|
||||
* 4. 申请加别人好友被拒绝
|
||||
*/
|
||||
- (void)onFriendApplicationListDeleted:(NSArray *)userIDList;
|
||||
|
||||
/**
|
||||
* 好友申请已读通知,如果调用 setFriendApplicationRead 设置好友申请列表已读,会收到这个回调(主要用于多端同步)
|
||||
*/
|
||||
- (void)onFriendApplicationListRead;
|
||||
|
||||
/**
|
||||
* 好友新增通知
|
||||
*/
|
||||
- (void)onFriendListAdded:(NSArray<V2TIMFriendInfo *>*)infoList;
|
||||
|
||||
/**
|
||||
* 好友删除通知,两种情况会收到这个回调:
|
||||
* 1. 自己删除好友(单向和双向删除都会收到回调)
|
||||
* 2. 好友把自己删除(双向删除会收到)
|
||||
*/
|
||||
- (void)onFriendListDeleted:(NSArray*)userIDList;
|
||||
|
||||
/**
|
||||
* 黑名单新增通知
|
||||
*/
|
||||
- (void)onBlackListAdded:(NSArray<V2TIMFriendInfo *>*)infoList;
|
||||
|
||||
/**
|
||||
* 黑名单删除通知
|
||||
*/
|
||||
- (void)onBlackListDeleted:(NSArray*)userIDList;
|
||||
|
||||
/**
|
||||
* 好友资料变更通知
|
||||
*/
|
||||
- (void)onFriendProfileChanged:(NSArray<V2TIMFriendInfo *> *)infoList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友资料获取结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友资料获取结果
|
||||
@interface V2TIMFriendInfoResult : NSObject
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 返结果表述
|
||||
@property(nonatomic,strong) NSString *resultInfo;
|
||||
|
||||
/// 好友类型
|
||||
@property(nonatomic,assign) V2TIMFriendRelationType relation;
|
||||
|
||||
/// 好友个人资料,如果不是好友,除了 userID 字段,其他字段都为空
|
||||
@property(nonatomic,strong) V2TIMFriendInfo *friendInfo;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友资料
|
||||
@interface V2TIMFriendInfo : NSObject
|
||||
|
||||
/// 好友 ID
|
||||
@property(nonatomic,strong) NSString *userID;
|
||||
|
||||
/**
|
||||
* 好友备注
|
||||
*
|
||||
* @note
|
||||
* - 备注长度最长不得超过 96 个字节;
|
||||
* - 字段描述详见 [控制台](https://cloud.tencent.com/document/product/269/1501#.E6.A0.87.E9.85.8D.E5.A5.BD.E5.8F.8B.E5.AD.97.E6.AE.B5)。
|
||||
*/
|
||||
@property(nonatomic,strong) NSString *friendRemark;
|
||||
|
||||
/// 好友自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 好友自定义字段) 配置好友自定义字段,然后再调用该接口进行设置,key 值不需要加 Tag_SNS_Custom_ 前缀。
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *> *friendCustomInfo;
|
||||
|
||||
/**
|
||||
* 好友所在分组列表
|
||||
*
|
||||
* @note
|
||||
* - 最多支持 32 个分组;
|
||||
* - 不允许分组名为空;
|
||||
* - 分组名长度不得超过 30 个字节;
|
||||
* - 同一个好友可以有多个不同的分组。
|
||||
* - 字段描述详见 [控制台](https://cloud.tencent.com/document/product/269/1501#.E6.A0.87.E9.85.8D.E5.A5.BD.E5.8F.8B.E5.AD.97.E6.AE.B5)。
|
||||
*/
|
||||
@property(nonatomic,strong,readonly) NSArray *friendGroups;
|
||||
|
||||
/// 好友个人资料
|
||||
@property(nonatomic,strong,readonly) V2TIMUserFullInfo *userFullInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友申请相关对象
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 加好友
|
||||
@interface V2TIMFriendAddApplication : NSObject
|
||||
|
||||
/// 用户 userID(必填)
|
||||
@property (nonatomic,strong) NSString* userID;
|
||||
|
||||
/// 备注(备注最大96字节)
|
||||
@property (nonatomic,strong) NSString* friendRemark;
|
||||
|
||||
/// 预分组名(最大96字节)
|
||||
@property (nonatomic,strong) NSString* friendGroup;
|
||||
|
||||
/// 请求说明(最大120字节)
|
||||
@property (nonatomic,strong) NSString* addWording;
|
||||
|
||||
/// 添加来源
|
||||
@property (nonatomic,strong) NSString* addSource;
|
||||
|
||||
/// 加好友方式
|
||||
@property (nonatomic,assign) V2TIMFriendType addType;
|
||||
|
||||
@end
|
||||
|
||||
/// 好友申请列表
|
||||
@interface V2TIMFriendApplicationResult : NSObject
|
||||
|
||||
/// 好友申请未读数量
|
||||
@property(nonatomic,assign) uint64_t unreadCount;
|
||||
|
||||
/// 好友申请列表
|
||||
@property(nonatomic,strong) NSMutableArray<V2TIMFriendApplication *> * applicationList;
|
||||
|
||||
@end
|
||||
|
||||
/// 好友申请
|
||||
@interface V2TIMFriendApplication : NSObject
|
||||
|
||||
/// 用户标识
|
||||
@property(nonatomic,strong,readonly) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,readonly) NSString* nickName;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,readonly) NSString* faceUrl;
|
||||
|
||||
/// 添加时间
|
||||
@property(nonatomic,assign,readonly) uint64_t addTime;
|
||||
|
||||
/// 来源
|
||||
@property(nonatomic,strong,readonly) NSString* addSource;
|
||||
|
||||
/// 加好友附言
|
||||
@property(nonatomic,strong,readonly) NSString* addWording;
|
||||
|
||||
/// 好友申请类型
|
||||
@property(nonatomic,assign,readonly) V2TIMFriendApplicationType type;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友关系链检查结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友关系链检查结果
|
||||
@interface V2TIMFriendCheckResult : NSObject
|
||||
|
||||
/// 用户id
|
||||
@property(nonatomic,strong) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong) NSString *resultInfo;
|
||||
|
||||
/// 检查结果
|
||||
@property(nonatomic,assign) V2TIMFriendRelationType relationType;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友操作结果(添加、删除、加黑名单、添加分组等)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友操作结果(添加、删除、加黑名单、添加分组等)
|
||||
@interface V2TIMFriendOperationResult : NSObject
|
||||
|
||||
/// 用户Id
|
||||
@property(nonatomic,strong) NSString* userID;
|
||||
|
||||
/// 返回码
|
||||
@property(nonatomic,assign) NSInteger resultCode;
|
||||
|
||||
/// 返回信息
|
||||
@property(nonatomic,strong) NSString *resultInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友分组
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 好友分组
|
||||
@interface V2TIMFriendGroup : NSObject
|
||||
/// 好友分组名称
|
||||
@property(nonatomic,strong) NSString* groupName;
|
||||
|
||||
/// 分组成员数量
|
||||
@property(nonatomic,assign) uint64_t userCount;
|
||||
|
||||
/// 分组成员列表
|
||||
@property(nonatomic,strong) NSMutableArray* friendList;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 好友搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@interface V2TIMFriendSearchParam : NSObject
|
||||
|
||||
/// 搜索的关键字列表,关键字列表最多支持 5 个
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 设置是否搜索 userID
|
||||
@property(nonatomic, assign) BOOL isSearchUserID;
|
||||
|
||||
/// 是否设置搜索昵称
|
||||
@property(nonatomic, assign) BOOL isSearchNickName;
|
||||
|
||||
/// 是否设置搜索备注
|
||||
@property(nonatomic, assign) BOOL isSearchRemark;;
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,537 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager+Group
|
||||
//
|
||||
// 群组高级接口,里面包含了群组的高级功能,比如群成员邀请、非群成员申请进群等操作接口。
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
@class V2TIMGroupMemberOperationResult;
|
||||
@class V2TIMGroupApplicationResult;
|
||||
@class V2TIMCreateGroupMemberInfo;
|
||||
@class V2TIMGroupInfo;
|
||||
@class V2TIMGroupInfoResult;
|
||||
@class V2TIMGroupApplication;
|
||||
@class V2TIMGroupSearchParam;
|
||||
@class V2TIMGroupMemberSearchParam;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群相关的高级接口
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@interface V2TIMManager (Group)
|
||||
|
||||
/// 获取已加入群列表成功回调
|
||||
typedef void (^V2TIMGroupInfoListSucc)(NSArray<V2TIMGroupInfo *> *groupList);
|
||||
/// 获取指定群列表成功回调
|
||||
typedef void (^V2TIMGroupInfoResultListSucc)(NSArray<V2TIMGroupInfoResult *> *groupResultList);
|
||||
/// 获取群属性列表成功回调
|
||||
typedef void (^V2TIMGroupAttributeListSucc)(NSMutableDictionary<NSString *,NSString *> *groupAttributeList);
|
||||
/// 获取群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoListSucc)(NSArray<V2TIMGroupMemberFullInfo *> *memberList);
|
||||
/// 获取指定群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoResultSucc)(uint64_t nextSeq, NSArray<V2TIMGroupMemberFullInfo *> * memberList);
|
||||
/// 搜索群成员列表成功回调
|
||||
typedef void (^V2TIMGroupMemberInfoListSearchSucc)(NSDictionary<NSString *, NSArray<V2TIMGroupMemberFullInfo *> *> *memberList);
|
||||
/// 群成员操作成功回调
|
||||
typedef void (^V2TIMGroupMemberOperationResultListSucc)(NSArray<V2TIMGroupMemberOperationResult*> * resultList);
|
||||
/// 获取好友申请列表成功回调
|
||||
typedef void (^V2TIMGroupApplicationResultSucc)(V2TIMGroupApplicationResult *result);
|
||||
/// 获取群在线人数成功回调
|
||||
typedef void (^V2TIMGroupOnlineMemberCountSucc)(NSInteger count);
|
||||
|
||||
/// 加群选项
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupAddOpt) {
|
||||
V2TIM_GROUP_ADD_FORBID = 0, ///< 禁止加群
|
||||
V2TIM_GROUP_ADD_AUTH = 1, ///< 需要管理员审批
|
||||
V2TIM_GROUP_ADD_ANY = 2, ///< 任何人可以加入
|
||||
};
|
||||
|
||||
/// 群组操作结果
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberResult) {
|
||||
V2TIM_GROUP_MEMBER_RESULT_FAIL = 0, ///< 操作失败
|
||||
V2TIM_GROUP_MEMBER_RESULT_SUCC = 1, ///< 操作成功
|
||||
V2TIM_GROUP_MEMBER_RESULT_INVALID = 2, ///< 无效操作,加群时已经是群成员,移除群组时不在群内
|
||||
V2TIM_GROUP_MEMBER_RESULT_PENDING = 3, ///< 等待处理,邀请入群时等待对方处理
|
||||
V2TIM_GROUP_MEMBER_RESULT_OVERLIMIT = 4, ///< 操作失败,创建群指定初始群成员列表或邀请入群时,被邀请者加入的群总数超限
|
||||
};
|
||||
|
||||
/// 群成员角色过滤方式
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberFilter) {
|
||||
V2TIM_GROUP_MEMBER_FILTER_ALL = 0x00, ///< 全部成员
|
||||
V2TIM_GROUP_MEMBER_FILTER_OWNER = 0x01, ///< 群主
|
||||
V2TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02, ///< 管理员
|
||||
V2TIM_GROUP_MEMBER_FILTER_COMMON = 0x04, ///< 普通成员
|
||||
};
|
||||
|
||||
/// 群组未决请求类型
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationGetType) {
|
||||
V2TIM_GROUP_APPLICATION_GET_TYPE_JOIN = 0x0, ///< 申请入群
|
||||
V2TIM_GROUP_APPLICATION_GET_TYPE_INVITE = 0x1, ///< 邀请入群
|
||||
};
|
||||
|
||||
/// 群组已决标志
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationHandleStatus) {
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_UNHANDLED = 0, ///< 未处理
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_HANDLED_BY_OTHER = 1, ///< 被他人处理
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_STATUS_HANDLED_BY_SELF = 2, ///< 自己已处理
|
||||
};
|
||||
|
||||
/// 群组已决结果
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupApplicationHandleResult) {
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_RESULT_REFUSE = 0, ///< 拒绝申请
|
||||
V2TIM_GROUP_APPLICATION_HANDLE_RESULT_AGREE = 1, ///< 同意申请
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 创建自定义群组(高级版本:可以指定初始的群成员)
|
||||
*
|
||||
* @param info 自定义群组信息,可以设置 groupID | groupType | groupName | notification | introduction | faceURL 字段
|
||||
* @param memberList 指定初始的群成员(直播群 AVChatRoom 不支持指定初始群成员,memberList 请传 nil)
|
||||
*
|
||||
* @note 其他限制请参考 V2TIMManager.h -> createGroup 注释
|
||||
*/
|
||||
- (void)createGroup:(V2TIMGroupInfo*)info memberList:(NSArray<V2TIMCreateGroupMemberInfo *>*) memberList succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 1.2 获取当前用户已经加入的群列表
|
||||
*
|
||||
* @note
|
||||
* - 直播群(AVChatRoom)不支持该 API
|
||||
* - 该接口有频限检测,SDK 限制调用频率为 1 秒 10 次,超过限制后会报 ERR_SDK_COMM_API_CALL_FREQUENCY_LIMIT (7008)错误
|
||||
*/
|
||||
- (void)getJoinedGroupList:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群资料管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 拉取群资料
|
||||
*
|
||||
* @param groupIDList 群组 ID 列表
|
||||
*/
|
||||
- (void)getGroupsInfo:(NSArray<NSString *> *)groupIDList succ:(V2TIMGroupInfoResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.2 搜索群列表(5.4.666 及以上版本支持,需要您购买旗舰版套餐)
|
||||
*
|
||||
* SDK 会搜索群名称包含于关键字列表 keywordList 的所有群并返回群信息列表。关键字列表最多支持5个。
|
||||
*/
|
||||
- (void)searchGroups:(V2TIMGroupSearchParam *)searchParam succ:(V2TIMGroupInfoListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.3 修改群资料
|
||||
*/
|
||||
- (void)setGroupInfo:(V2TIMGroupInfo *)info succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.4 初始化群属性,会清空原有的群属性列表
|
||||
*
|
||||
* @note
|
||||
* attributes 的使用限制如下:
|
||||
* - 目前只支持 AVChatRoom;
|
||||
* - key 最多支持 16 个,长度限制为 32 字节;
|
||||
* - value 长度限制为 4k;
|
||||
* - 总的 attributes(包括 key 和 value)限制为 16k;
|
||||
* - initGroupAttributes、setGroupAttributes、deleteGroupAttributes 接口合并计算, SDK 限制为 5 秒 10 次,超过后回调 8511 错误码;后台限制 1 秒 5 次,超过后返回 10049 错误码;
|
||||
* - getGroupAttributes 接口 SDK 限制 5 秒 20 次;
|
||||
* - 从 5.6 版本开始,当每次APP启动后初次修改群属性时,请您先调用 getGroupAttributes 拉取到最新的群属性之后,再发起修改操作;
|
||||
* - 从 5.6 版本开始,当多个用户同时修改同一个群属性时,只有第一个用户可以执行成功,其它用户会收到 10056 错误码;收到这个错误码之后,请您调用 getGroupAttributes 把本地保存的群属性更新到最新之后,再发起修改操作。
|
||||
*/
|
||||
- (void)initGroupAttributes:(NSString*)groupID attributes:(NSDictionary<NSString *,NSString *> *)attributes succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.5 设置群属性,已有该群属性则更新其 value 值,没有该群属性则添加该群属性。
|
||||
* @note
|
||||
* - 目前只支持 AVChatRoom;
|
||||
*/
|
||||
- (void)setGroupAttributes:(NSString*)groupID attributes:(NSDictionary<NSString *,NSString *> *)attributes succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.6 删除群指定属性,keys 传 nil 则清空所有群属性。
|
||||
* @note
|
||||
* - 目前只支持 AVChatRoom;
|
||||
*/
|
||||
- (void)deleteGroupAttributes:(NSString*)groupID keys:(NSArray<NSString *> *)keys succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.7 获取群指定属性,keys 传 nil 则获取所有群属性。
|
||||
* @note
|
||||
* - 目前只支持 AVChatRoom;
|
||||
*/
|
||||
- (void)getGroupAttributes:(NSString*)groupID keys:(NSArray<NSString *> *)keys succ:(V2TIMGroupAttributeListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.8 获取指定群在线人数
|
||||
*
|
||||
* @param groupID 群id
|
||||
* @param succ 成功回调
|
||||
* @param fail 失败回调
|
||||
*
|
||||
* @note 请注意
|
||||
* - 目前只支持:直播群( AVChatRoom)。
|
||||
* - 该接口有频限检测,SDK 限制调用频率为60秒1次。
|
||||
*/
|
||||
- (void)getGroupOnlineMemberCount:(NSString*)groupID succ:(V2TIMGroupOnlineMemberCountSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群成员管理
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* 3.1 获取群成员列表
|
||||
*
|
||||
* @param filter 指定群成员类型(V2TIMGroupMemberFilter)。
|
||||
* @param nextSeq 分页拉取标志,第一次拉取填0,回调成功如果 nextSeq 不为零,需要分页,传入再次拉取,直至为 0。
|
||||
*
|
||||
* @note 直播群(AVChatRoom)的特殊限制:
|
||||
* - 不支持管理员角色的拉取,群成员个数最大只支持 31 个(新进来的成员会排前面),用户每次登录后,都需要重新加入群组,否则拉取群成员会报 10007 错误码。
|
||||
* - 群成员资料信息仅支持 userID | nickName | faceURL | role 字段。
|
||||
* - role 字段不支持管理员角色,如果您的业务逻辑依赖于管理员角色,可以使用群自定义字段 groupAttributes 管理该角色。
|
||||
*/
|
||||
- (void)getGroupMemberList:(NSString*)groupID filter:(uint32_t)filter nextSeq:(uint64_t)nextSeq succ:(V2TIMGroupMemberInfoResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.2 指定的群成员资料
|
||||
*/
|
||||
- (void)getGroupMembersInfo:(NSString*)groupID memberList:(NSArray<NSString*>*)memberList succ:(V2TIMGroupMemberInfoListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.3 搜索指定的群成员资料(5.4.666 及以上版本支持,需要您购买旗舰版套餐)
|
||||
*
|
||||
* SDK 会在本地搜索指定群 ID 列表中,群成员信息(名片、好友备注、昵称、userID)包含于关键字列表 keywordList 的所有群成员并返回群 ID 和群成员列表的 map,关键字列表最多支持5个。
|
||||
*
|
||||
* @param searchParam 搜索参数
|
||||
*/
|
||||
- (void)searchGroupMembers:(V2TIMGroupMemberSearchParam *)searchParam
|
||||
succ:(V2TIMGroupMemberInfoListSearchSucc)succ
|
||||
fail:(V2TIMFail)fail;
|
||||
/**
|
||||
* 3.4 修改指定的群成员资料
|
||||
*/
|
||||
- (void)setGroupMemberInfo:(NSString*)groupID info:(V2TIMGroupMemberFullInfo *)info succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.5 禁言(只有管理员或群主能够调用)
|
||||
*/
|
||||
- (void)muteGroupMember:(NSString*)groupID member:(NSString*)userID muteTime:(uint32_t)seconds succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.6 邀请他人入群
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 工作群(Work):群里的任何人都可以邀请其他人进群。
|
||||
* - 会议群(Meeting)和公开群(Public):只有通过rest api 使用 App 管理员身份才可以邀请其他人进群。
|
||||
* - 直播群(AVChatRoom):不支持此功能。
|
||||
*/
|
||||
- (void)inviteUserToGroup:(NSString*)groupID userList:(NSArray<NSString *>*)userList succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.7 踢人
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 工作群(Work):只有群主或 APP 管理员可以踢人。
|
||||
* - 公开群(Public)、会议群(Meeting):群主、管理员和 APP 管理员可以踢人
|
||||
* - 直播群(AVChatRoom):只支持禁言(muteGroupMember),不支持踢人。
|
||||
*/
|
||||
- (void)kickGroupMember:(NSString*)groupID memberList:(NSArray<NSString *>*)memberList reason:(NSString*)reason succ:(V2TIMGroupMemberOperationResultListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.8 切换群成员的角色
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 公开群(Public)和会议群(Meeting):只有群主才能对群成员进行普通成员和管理员之间的角色切换。
|
||||
* - 其他群不支持设置群成员角色。
|
||||
* - 转让群组请调用 @ref transferGroupOwner 接口。
|
||||
* - 会议群(Meeting)切换群成员角色之后,不会有 onGrantAdministrator 和 onRevokeAdministrator 通知回调
|
||||
* - 切换的角色支持普通群成员( V2TIM_GROUP_MEMBER_ROLE_MEMBER) 和管理员(V2TIM_GROUP_MEMBER_ROLE_ADMIN
|
||||
*/
|
||||
- (void)setGroupMemberRole:(NSString*)groupID member:(NSString *)userID newRole:(uint32_t)role succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.9 转让群主
|
||||
*
|
||||
* @note 请注意不同类型的群有如下限制:
|
||||
* - 普通类型的群(Work、Public、Meeting):只有群主才有权限进行群转让操作。
|
||||
* - 直播群(AVChatRoom):不支持转让群主。
|
||||
*/
|
||||
- (void)transferGroupOwner:(NSString*)groupID member:(NSString*)userID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 加群申请
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 获取加群申请列表
|
||||
*/
|
||||
- (void)getGroupApplicationList:(V2TIMGroupApplicationResultSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 4.2 同意某一条加群申请
|
||||
*/
|
||||
- (void)acceptGroupApplication:(V2TIMGroupApplication *)application reason:(NSString*)reason succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 4.3 拒绝某一条加群申请
|
||||
*/
|
||||
- (void)refuseGroupApplication:(V2TIMGroupApplication *)application reason:(NSString*)reason succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 4.4 标记申请列表为已读
|
||||
*/
|
||||
- (void)setGroupApplicationRead:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群基本资料(可以通过 getGroupInfo 获取,不支持由客户自行创建)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群资料
|
||||
@interface V2TIMGroupInfo : NSObject
|
||||
|
||||
/**
|
||||
* 群组 ID
|
||||
*
|
||||
* @note 自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长48个字节,且前缀不能为 @TGS#(避免与默认分配的群组 ID 混淆)
|
||||
*/
|
||||
@property(nonatomic,strong) NSString* groupID;
|
||||
|
||||
/// 群类型
|
||||
@property(nonatomic,strong) NSString* groupType;
|
||||
|
||||
/**
|
||||
* 群名称
|
||||
*
|
||||
* @note 群名称最长30字节
|
||||
*/
|
||||
@property(nonatomic,strong) NSString* groupName;
|
||||
|
||||
/**
|
||||
* 群公告
|
||||
*
|
||||
* @note 群公告最长300字节
|
||||
*/
|
||||
@property(nonatomic,strong) NSString* notification;
|
||||
|
||||
/**
|
||||
* 群简介
|
||||
*
|
||||
* @note 群简介最长240字节
|
||||
*/
|
||||
@property(nonatomic,strong) NSString* introduction;
|
||||
|
||||
/**
|
||||
* 群头像
|
||||
*
|
||||
* @note 群头像 URL 最长100字节
|
||||
*/
|
||||
@property(nonatomic,strong) NSString* faceURL;
|
||||
|
||||
/// 是否全员禁言
|
||||
@property(nonatomic,assign) BOOL allMuted;
|
||||
|
||||
///设置群自定义字段需要两个步骤:
|
||||
///1.在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群自定义字段) 配置群自定义字段的 key 值,Key 为 String 类型,长度不超过 16 字节。
|
||||
///2.调用 setGroupInfo 接口设置该字段,value 为 NSData 数据,长度不超过 512 字节。
|
||||
///@note 该字段主要用于 V1 和 V2 版本的兼容,如果您直接使用的是 V2 版本的 API ,建议使用 initGroupAttributes 接口设置群属性,其设置更灵活(无需控制台配置),支持的存储也更大(最大支持 16K)
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *>* customInfo;
|
||||
|
||||
/// 群创建人/管理员
|
||||
@property(nonatomic,strong,readonly) NSString *owner;
|
||||
|
||||
/// 群创建时间
|
||||
@property(nonatomic,assign,readonly) uint32_t createTime;
|
||||
|
||||
/// 加群是否需要管理员审批,工作群(Work)不能主动加入,不支持此设置项
|
||||
@property(nonatomic,assign) V2TIMGroupAddOpt groupAddOpt;
|
||||
|
||||
/// 群最近一次群资料修改时间
|
||||
@property(nonatomic,assign,readonly) uint32_t lastInfoTime;
|
||||
|
||||
/// 群最近一次发消息时间
|
||||
@property(nonatomic,assign,readonly) uint32_t lastMessageTime;
|
||||
|
||||
/// 已加入的群成员数量
|
||||
@property(nonatomic,assign,readonly) uint32_t memberCount;
|
||||
|
||||
/// 在线的群成员数量
|
||||
@property(nonatomic,assign,readonly) uint32_t onlineCount;
|
||||
|
||||
/// 最多允许加入的群成员数量
|
||||
/// @note 各类群成员人数限制详见: https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E9.99.90.E5.88.B6.E5.B7.AE.E5.BC.82
|
||||
@property(nonatomic,assign,readonly) uint32_t memberMaxCount;
|
||||
|
||||
/// 当前用户在此群组中的角色(V2TIMGroupMemberRole),切换角色请调用 setGroupMemberRole 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t role;
|
||||
|
||||
/// 当前用户在此群组中的消息接收选项,修改群消息接收选项请调用 setGroupReceiveMessageOpt 接口
|
||||
@property(nonatomic,assign,readonly) V2TIMReceiveMessageOpt recvOpt;
|
||||
|
||||
/// 当前用户在此群中的加入时间,不支持设置,系统自动生成
|
||||
@property(nonatomic,assign,readonly) uint32_t joinTime;
|
||||
@end
|
||||
|
||||
/// 获取群组资料结果
|
||||
@interface V2TIMGroupInfoResult : NSObject
|
||||
|
||||
/// 结果 0:成功;非0:失败
|
||||
@property(nonatomic,assign) int resultCode;
|
||||
|
||||
/// 如果获取失败,会返回错误信息
|
||||
@property(nonatomic,strong) NSString *resultMsg;
|
||||
|
||||
/// 如果获取成功,会返回对应的 info
|
||||
@property(nonatomic,strong) V2TIMGroupInfo *info;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群申请信息(可以通过 getGroupApplicationList 获取,不支持由客户自行创建)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群申请信息
|
||||
@interface V2TIMGroupApplication : NSObject
|
||||
|
||||
/// 群组 ID
|
||||
@property(nonatomic,strong,readonly) NSString* groupID;
|
||||
|
||||
/// 请求者 userID
|
||||
@property(nonatomic,strong,readonly) NSString* fromUser;
|
||||
|
||||
/// 请求者昵称
|
||||
@property(nonatomic,strong,readonly) NSString* fromUserNickName;
|
||||
|
||||
/// 请求者头像
|
||||
@property(nonatomic,strong,readonly) NSString* fromUserFaceUrl;
|
||||
|
||||
/// 判决者id,有人请求加群:0,邀请其他人加群:被邀请人用户 ID
|
||||
@property(nonatomic,strong,readonly) NSString* toUser;
|
||||
|
||||
/// 申请时间
|
||||
@property(nonatomic,assign,readonly) uint64_t addTime;
|
||||
|
||||
/// 申请或邀请附加信息
|
||||
@property(nonatomic,strong,readonly) NSString* requestMsg;
|
||||
|
||||
/// 审批信息:同意或拒绝信息
|
||||
@property(nonatomic,strong,readonly) NSString* handledMsg;
|
||||
|
||||
/// 请求类型
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationGetType getType;
|
||||
|
||||
/// 处理标志
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationHandleStatus handleStatus;
|
||||
|
||||
/// 处理结果
|
||||
@property(nonatomic,assign,readonly) V2TIMGroupApplicationHandleResult handleResult;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 邀请其他人入群的操作结果
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 邀请其他人入群的操作结果
|
||||
@interface V2TIMGroupMemberOperationResult : NSObject
|
||||
|
||||
/// 被操作成员
|
||||
@property(nonatomic,strong) NSString* userID;
|
||||
|
||||
/// 返回状态
|
||||
@property(nonatomic,assign) V2TIMGroupMemberResult result;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 创建群时指定群成员
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 创建群时指定群成员
|
||||
@interface V2TIMCreateGroupMemberInfo : NSObject
|
||||
|
||||
/// 被操作成员
|
||||
@property(nonatomic,strong) NSString* userID;
|
||||
|
||||
/** 群成员类型,需要注意一下事项:
|
||||
* 1. role 不设置或则设置为 V2TIM_GROUP_MEMBER_UNDEFINED,进群后默认为群成员。
|
||||
* 2. 工作群(Work)不支持设置 role 为管理员。
|
||||
* 3. 所有的群都不支持设置 role 为群主。
|
||||
*/
|
||||
@property(nonatomic,assign) uint32_t role;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 加群申请列表(包含已处理和待处理的)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 加群申请列表
|
||||
@interface V2TIMGroupApplicationResult : NSObject
|
||||
|
||||
/// 未读的申请数量
|
||||
@property(nonatomic,assign) uint64_t unreadCount;
|
||||
|
||||
/// 加群申请的列表
|
||||
@property(nonatomic,strong) NSMutableArray<V2TIMGroupApplication *> * applicationList;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群搜索
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
@interface V2TIMGroupSearchParam : NSObject
|
||||
|
||||
/// 搜索关键字列表,最多支持5个。
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 设置是否搜索群 ID。
|
||||
@property(nonatomic, assign) BOOL isSearchGroupID;
|
||||
|
||||
/// 设置是否搜索群名称
|
||||
@property(nonatomic, assign) BOOL isSearchGroupName;
|
||||
|
||||
@end
|
||||
|
||||
@interface V2TIMGroupMemberSearchParam : NSObject
|
||||
|
||||
/// 指定群 ID 列表,若为 null 则搜索全部群中的群成员
|
||||
@property(nonatomic, strong) NSArray<NSString *> *groupIDList;
|
||||
|
||||
/// 搜索关键字列表,最多支持5个
|
||||
@property(nonatomic, strong) NSArray<NSString *> *keywordList;
|
||||
|
||||
/// 设置是否搜索群成员 userID
|
||||
@property(nonatomic, assign) BOOL isSearchMemberUserID;
|
||||
|
||||
/// 设置是否搜索群成员昵称
|
||||
@property(nonatomic, assign) BOOL isSearchMemberNickName;
|
||||
|
||||
/// 设置是否搜索群成员备注
|
||||
@property(nonatomic, assign) BOOL isSearchMemberRemark;
|
||||
|
||||
/// 设置是否搜索群成员名片
|
||||
@property(nonatomic, assign) BOOL isSearchMemberNameCard;
|
||||
|
||||
@end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,155 @@
|
||||
|
||||
#import "V2TIMManager.h"
|
||||
#import "V2TIMManager+Message.h"
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 信令
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 信令信息
|
||||
@class V2TIMSignalingInfo;
|
||||
/// 信令监听
|
||||
@protocol V2TIMSignalingListener;
|
||||
|
||||
@interface V2TIMManager (Signaling)
|
||||
|
||||
/**
|
||||
* 获取信令信息成功回调
|
||||
*/
|
||||
typedef void (^V2TIMSignalingInfoSucc)(V2TIMSignalingInfo * signalInfo);
|
||||
|
||||
/**
|
||||
* 添加信令监听
|
||||
*/
|
||||
- (void)addSignalingListener:(id<V2TIMSignalingListener>)listener
|
||||
NS_SWIFT_NAME(addSignalingListener(listener:));
|
||||
|
||||
/**
|
||||
* 移除信令监听
|
||||
*/
|
||||
- (void)removeSignalingListener:(id<V2TIMSignalingListener>)listener
|
||||
NS_SWIFT_NAME(removeSignalingListener(listener:));
|
||||
|
||||
/**
|
||||
* 邀请某个人
|
||||
*
|
||||
* @param invitee 被邀请人用户 ID
|
||||
* @param data 自定义数据
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
|
||||
* @param onlineUserOnly 是否只有在线用户才能收到邀请,如果设置为 YES,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)。
|
||||
* @param offlinePushInfo 苹果 APNS 离线推送时携带的标题和声音,其中 desc 为必填字段,推送的时候会默认展示 desc 信息。
|
||||
* @return inviteID 邀请 ID,如果邀请失败,返回 nil
|
||||
*
|
||||
*/
|
||||
- (NSString*)invite:(NSString *)invitee
|
||||
data:(NSString *)data
|
||||
onlineUserOnly:(BOOL)onlineUserOnly
|
||||
offlinePushInfo:(V2TIMOfflinePushInfo *)offlinePushInfo
|
||||
timeout:(int)timeout
|
||||
succ:(V2TIMSucc)succ
|
||||
fail:(V2TIMFail)fail;
|
||||
/**
|
||||
* 邀请群内的某些人
|
||||
*
|
||||
* @param groupID 发起邀请所在群组
|
||||
* @param inviteeList 被邀请人列表,inviteeList 必须已经在 groupID 群里,否则邀请无效
|
||||
* @param timeout 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
|
||||
* @param onlineUserOnly 是否只有在线用户才能收到邀请,如果设置为 YES,只有在线用户才能收到,并且 invite 操作也不会产生历史消息(针对该次 invite 的后续 cancel、accept、reject、timeout 操作也同样不会产生历史消息)。
|
||||
* @return inviteID 邀请 ID,如果邀请失败,返回 nil
|
||||
*
|
||||
* @note 群邀请暂不支持离线推送,如果您需要离线推送,可以针对被邀请的用户单独发离线推送自定义消息。
|
||||
*/
|
||||
- (NSString*)inviteInGroup:(NSString *)groupID
|
||||
inviteeList:(NSArray *)inviteeList
|
||||
data:(NSString *)data
|
||||
onlineUserOnly:(BOOL)onlineUserOnly
|
||||
timeout:(int)timeout
|
||||
succ:(V2TIMSucc)succ
|
||||
fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 邀请方取消邀请
|
||||
*
|
||||
* @param inviteID 邀请 ID
|
||||
*
|
||||
* @note 如果所有被邀请人都已经处理了当前邀请(包含超时),不能再取消当前邀请。
|
||||
*/
|
||||
- (void)cancel:(NSString *)inviteID data:(NSString *)data succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 接收方接受邀请
|
||||
*
|
||||
* @note 不能接受不是针对自己的邀请,请在收到 onReceiveNewInvitation 回调的时候先判断 inviteeList 有没有自己,如果没有自己,不能 accept 邀请。
|
||||
*/
|
||||
- (void)accept:(NSString *)inviteID data:(NSString *)data succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 接收方拒绝邀请
|
||||
*
|
||||
* @note 不能拒绝不是针对自己的邀请,请在收到 onReceiveNewInvitation 回调的时候先判断 inviteeList 有没有自己,如果没有自己,不能 reject 邀请。
|
||||
*/
|
||||
- (void)reject:(NSString *)inviteID data:(NSString *)data succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 获取信令信息
|
||||
*
|
||||
* 如果 invite 设置 onlineUserOnly 为 NO,每次信令操作(包括 invite、cancel、accept、reject、timeout)都会产生一条自定义消息,该消息会通过 V2TIMAdvancedMsgListener -> onRecvNewMessage 抛给用户,用户也可以通过历史消息拉取,如果需要根据信令信息做自定义化文本展示,可以调用下面接口获取信令信息。
|
||||
*
|
||||
* @param msg 消息对象
|
||||
* @return V2TIMSignalingInfo 信令信息,如果为 nil,则 msg 不是一条信令消息。
|
||||
*/
|
||||
- (V2TIMSignalingInfo *)getSignallingInfo:(V2TIMMessage *)msg;
|
||||
|
||||
/**
|
||||
* 添加邀请信令
|
||||
*
|
||||
* 在离线推送的场景下:
|
||||
* 针对 1V1 信令邀请,被邀请者 APP 如果被 Kill,当 APP 收到信令离线推送再次启动后,SDK 可以自动同步到邀请信令,如果邀请还没超时,用户会收到 onReceiveNewInvitation 回调,如果邀请已经超时,用户还会收到 onInvitationTimeout 回调。
|
||||
*
|
||||
* 针对群信令邀请,被邀请者 APP 如果被 Kill,当 APP 收到离线推送再次启动后,SDK 无法自动同步到邀请信令(邀请信令本质上就是一条自定义消息,群离线消息在程序启动后无法自动同步),也就没法处理该邀请信令。如果被邀请者需要处理该邀请信令,可以让邀请者在发起信令的时候对针对每个被邀请者再单独发送一条 C2C 离线推送消息,消息里面携带 V2TIMSignalingInfo 信息,被邀请者收到离线推送的时候把 V2TIMSignalingInfo 信息再通过 addInvitedSignaling 接口告知 SDK。
|
||||
*
|
||||
* TUIKit 群组音视频通话离线推送就是基于该接口实现,详细实现方法请参考文档:[集成音视频通话](https://cloud.tencent.com/document/product/269/39167)
|
||||
*
|
||||
* @note 如果添加的信令信息已存在,fail callback 会抛 ERR_SDK_SIGNALING_ALREADY_EXISTS 错误码。
|
||||
*/
|
||||
- (void)addInvitedSignaling:(V2TIMSignalingInfo *)signallingInfo succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
@end
|
||||
|
||||
@protocol V2TIMSignalingListener <NSObject>
|
||||
@optional
|
||||
/// 收到邀请的回调
|
||||
-(void)onReceiveNewInvitation:(NSString *)inviteID inviter:(NSString *)inviter groupID:(NSString *)groupID inviteeList:(NSArray<NSString *> *)inviteeList data:(NSString * __nullable)data;
|
||||
|
||||
/// 被邀请者接受邀请
|
||||
-(void)onInviteeAccepted:(NSString *)inviteID invitee:(NSString *)invitee data:(NSString * __nullable)data;
|
||||
|
||||
/// 被邀请者拒绝邀请
|
||||
-(void)onInviteeRejected:(NSString *)inviteID invitee:(NSString *)invitee data:(NSString * __nullable)data;
|
||||
|
||||
/// 邀请被取消
|
||||
-(void)onInvitationCancelled:(NSString *)inviteID inviter:(NSString *)inviter data:(NSString * __nullable)data;
|
||||
|
||||
/// 邀请超时
|
||||
-(void)onInvitationTimeout:(NSString *)inviteID inviteeList:(NSArray<NSString *> *)inviteeList;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
// 操作类型
|
||||
typedef NS_ENUM(NSInteger,SignalingActionType) {
|
||||
SignalingActionType_Invite = 1, // 邀请方发起邀请
|
||||
SignalingActionType_Cancel_Invite = 2, // 邀请方取消邀请
|
||||
SignalingActionType_Accept_Invite = 3, // 被邀请方接受邀请
|
||||
SignalingActionType_Reject_Invite = 4, // 被邀请方拒绝邀请
|
||||
SignalingActionType_Invite_Timeout = 5, // 邀请超时
|
||||
};
|
||||
|
||||
@interface V2TIMSignalingInfo : NSObject
|
||||
@property(nonatomic,strong) NSString *inviteID;
|
||||
@property(nonatomic,strong) NSString *groupID;
|
||||
@property(nonatomic,strong) NSString *inviter;
|
||||
@property(nonatomic,strong) NSMutableArray *inviteeList;
|
||||
@property(nonatomic,strong) NSString * __nullable data;
|
||||
@property(nonatomic,assign) uint32_t timeout;
|
||||
@property(nonatomic,assign) SignalingActionType actionType;
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,587 @@
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 腾讯云通信服务 IMSDK
|
||||
//
|
||||
// 模块名称:V2TIMManager
|
||||
//
|
||||
// TIM SDK 2.0 版的接口,相比于 1.0 版本更加简洁易用,接入速度更快,高级特性接口详见:
|
||||
// - V2TIMManager+Message.h 消息相关的高级功能接口,比如图片消息,视频消息,消息撤回,消息已读等功能。
|
||||
// - V2TIMManager+APNS.h 推送相关的高级功能接口,主要用于开启消息推送功能。
|
||||
// - V2TIMManager+Conversation.h 会话相关的高级功能接口,一个会话对应一个聊天窗口。
|
||||
// - V2TIMManager+Group.h 群组相关的高级功能接口,比如邀请人进群,处理加群请求等功能。
|
||||
// - V2TIMManager+Friendship.h 关系链相关的高级功能接口,比如黑名单,好友列表等功能。
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef ImSDK_V2TIMManager_h
|
||||
#define ImSDK_V2TIMManager_h
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@class V2TIMSDKConfig;
|
||||
@class V2TIMUserInfo;
|
||||
@class V2TIMUserFullInfo;
|
||||
@class V2TIMGroupMemberInfo;
|
||||
@class V2TIMGroupMemberFullInfo;
|
||||
@class V2TIMGroupChangeInfo;
|
||||
@class V2TIMGroupMemberChangeInfo;
|
||||
@class V2TIMUserReceiveMessageOptInfo;
|
||||
|
||||
@protocol V2TIMSDKListener;
|
||||
@protocol V2TIMSimpleMsgListener;
|
||||
@protocol V2TIMGroupListener;
|
||||
|
||||
extern NSString *const GroupType_Work;
|
||||
extern NSString *const GroupType_Public;
|
||||
extern NSString *const GroupType_Meeting;
|
||||
extern NSString *const GroupType_AVChatRoom;
|
||||
extern NSString *const GroupType_Community;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// V2TIMManager
|
||||
//
|
||||
// IMSDK 主核心类,负责 IMSDK 的初始化、登录、消息收发,建群退群等功能
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@interface V2TIMManager : NSObject
|
||||
|
||||
/// 成功通用回调
|
||||
typedef void (^V2TIMSucc)(void);
|
||||
/// 失败通用回调
|
||||
typedef void (^V2TIMFail)(int code, NSString * desc);
|
||||
/// 创建群组成功回调
|
||||
typedef void (^V2TIMCreateGroupSucc)(NSString * groupID);
|
||||
/// 获取用户资料成功回调
|
||||
typedef void (^V2TIMUserFullInfoListSucc)(NSArray <V2TIMUserFullInfo *> * infoList);
|
||||
/// 实验性 API 接口成功回调
|
||||
typedef void (^V2TIMCallExperimentalAPISucc)(NSObject *result);
|
||||
|
||||
/// 登录状态
|
||||
typedef NS_ENUM(NSInteger, V2TIMLoginStatus) {
|
||||
V2TIM_STATUS_LOGINED = 1, ///< 已登录
|
||||
V2TIM_STATUS_LOGINING = 2, ///< 登录中
|
||||
V2TIM_STATUS_LOGOUT = 3, ///< 无登录
|
||||
};
|
||||
|
||||
/// 日志级别
|
||||
typedef NS_ENUM(NSInteger, V2TIMLogLevel) {
|
||||
V2TIM_LOG_NONE = 0, ///< 不输出任何 sdk log
|
||||
V2TIM_LOG_DEBUG = 3, ///< 输出 DEBUG,INFO,WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_INFO = 4, ///< 输出 INFO,WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_WARN = 5, ///< 输出 WARNING,ERROR 级别的 log
|
||||
V2TIM_LOG_ERROR = 6, ///< 输出 ERROR 级别的 log
|
||||
};
|
||||
|
||||
/// 消息优先级
|
||||
typedef NS_ENUM(NSInteger, V2TIMMessagePriority) {
|
||||
V2TIM_PRIORITY_DEFAULT = 0, ///< 默认
|
||||
V2TIM_PRIORITY_HIGH = 1, ///< 高优先级,一般用于礼物等重要消息
|
||||
V2TIM_PRIORITY_NORMAL = 2, ///< 常规优先级,一般用于普通消息
|
||||
V2TIM_PRIORITY_LOW = 3, ///< 低优先级,一般用于点赞消息
|
||||
};
|
||||
|
||||
/// 性别
|
||||
typedef NS_ENUM(NSInteger, V2TIMGender) {
|
||||
V2TIM_GENDER_UNKNOWN = 0, ///< 未知性别
|
||||
V2TIM_GENDER_MALE = 1, ///< 男性
|
||||
V2TIM_GENDER_FEMALE = 2, ///< 女性
|
||||
};
|
||||
|
||||
/// 好友验证方式
|
||||
typedef NS_ENUM(NSInteger, V2TIMFriendAllowType) {
|
||||
V2TIM_FRIEND_ALLOW_ANY = 0, ///< 同意任何用户加好友
|
||||
V2TIM_FRIEND_NEED_CONFIRM = 1, ///< 需要验证
|
||||
V2TIM_FRIEND_DENY_ANY = 2, ///< 拒绝任何人加好友
|
||||
};
|
||||
|
||||
/// 群成员角色
|
||||
typedef NS_ENUM(NSInteger, V2TIMGroupMemberRole) {
|
||||
V2TIM_GROUP_MEMBER_UNDEFINED = 0, ///< 未定义(没有获取该字段)
|
||||
V2TIM_GROUP_MEMBER_ROLE_MEMBER = 200, ///< 群成员
|
||||
V2TIM_GROUP_MEMBER_ROLE_ADMIN = 300, ///< 群管理员
|
||||
V2TIM_GROUP_MEMBER_ROLE_SUPER = 400, ///< 群主
|
||||
};
|
||||
|
||||
/// 日志回调
|
||||
typedef void (^V2TIMLogListener)(V2TIMLogLevel logLevel, NSString * logContent);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 初始化
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 1.1 获取 V2TIMManager 管理器实例
|
||||
*/
|
||||
+ (V2TIMManager*)sharedInstance;
|
||||
|
||||
/**
|
||||
* 1.2 初始化 SDK
|
||||
*
|
||||
* @param sdkAppID 应用 ID,必填项,可以在 [控制台](https://console.cloud.tencent.com/im) 中获取
|
||||
* @param config 配置信息
|
||||
* @return YES:成功;NO:失败
|
||||
*/
|
||||
- (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config;
|
||||
|
||||
/**
|
||||
* 1.3 添加 IM 监听
|
||||
*/
|
||||
- (void)addIMSDKListener:(id<V2TIMSDKListener>)listener;
|
||||
|
||||
/**
|
||||
* 1.4 移除 IM 监听
|
||||
*/
|
||||
- (void)removeIMSDKListener:(id<V2TIMSDKListener>)listener;
|
||||
|
||||
/**
|
||||
* 1.5 反初始化 SDK
|
||||
*/
|
||||
- (void)unInitSDK;
|
||||
|
||||
/**
|
||||
* 1.6 获取版本号
|
||||
*
|
||||
* @return 返回版本号,字符串表示,例如 5.0.10
|
||||
*/
|
||||
- (NSString*)getVersion;
|
||||
|
||||
/**
|
||||
* 1.7 获取服务器时间戳
|
||||
*
|
||||
* @return 服务器时间时间戳,单位 s
|
||||
*/
|
||||
- (uint64_t)getServerTime;
|
||||
|
||||
/**
|
||||
* 初始化 SDK(待废弃接口,请使用 initSDK 和 addIMSDKListener 接口)
|
||||
*/
|
||||
- (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config listener:(id<V2TIMSDKListener>)listener __attribute__((deprecated("use initSDK:config: and addIMSDKListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 登录登出
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 2.1 登录
|
||||
*
|
||||
* 登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参考 [UserSig 后台 API](https://cloud.tencent.com/document/product/269/32688)。
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 登陆时票据过期:login 函数的 V2TIMFail 会返回 ERR_USER_SIG_EXPIRED(6206)或者 ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001) 错误码,此时请您生成新的 userSig 重新登录。
|
||||
* - 在线时票据过期:用户在线期间也可能收到 V2TIMSDKListener -> onUserSigExpired 回调,此时也是需要您生成新的 userSig 并重新登录。
|
||||
* - 在线时被踢下线:用户在线情况下被踢,SDK 会通过 V2TIMSDKListener -> onKickedOffline 回调通知给您,此时可以 UI 提示用户,并再次调用 login() 重新登录。
|
||||
*/
|
||||
- (void)login:(NSString *)userID userSig:(NSString *)userSig succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.2 登出
|
||||
*
|
||||
* 退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
|
||||
*/
|
||||
- (void)logout:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 2.3 获取登录用户
|
||||
*/
|
||||
- (NSString *)getLoginUser;
|
||||
|
||||
/**
|
||||
* 2.4 获取登录状态
|
||||
*
|
||||
* 如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。
|
||||
*/
|
||||
- (V2TIMLoginStatus)getLoginStatus;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 消息收发
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 3.1 设置基本消息(文本消息和自定义消息)的事件监听器
|
||||
*
|
||||
* @note 图片消息、视频消息、语音消息等高级消息的监听,请参考 V2TIMManager+Message.h -> addAdvancedMsgListener 接口。
|
||||
*/
|
||||
- (void)addSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(addSimpleMsgListener(listener:));
|
||||
|
||||
/**
|
||||
* 3.2 移除基本消息(文本消息和自定义消息)的事件监听器
|
||||
*/
|
||||
- (void)removeSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(removeSimpleMsgListener(listener:));
|
||||
|
||||
/**
|
||||
* 3.3 发送单聊普通文本消息(最大支持 8KB)
|
||||
*
|
||||
* 文本消息支持云端的脏词过滤,如果用户发送的消息中有敏感词,V2TIMFail 回调将会返回 80001 错误码。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendC2CTextMessage:(NSString *)text to:(NSString *)userID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.4 发送单聊自定义(信令)消息(最大支持 8KB)
|
||||
*
|
||||
* 自定义消息本质就是一端二进制 buffer,您可以在其上自由组织自己的消息格式(常用于发送信令),但是自定义消息不支持云端敏感词过滤。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendC2CCustomMessage:(NSData *)customData to:(NSString *)userID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.5 发送群聊普通文本消息(最大支持 8KB)
|
||||
*
|
||||
* @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
|
||||
* - HIGH :云端会优先传输,适用于在群里发送重要消息,比如主播发送的文本消息等。
|
||||
* - NORMAL :云端按默认优先级传输,适用于在群里发送普通消息,比如观众发送的弹幕消息等。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendGroupTextMessage:(NSString *)text to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 3.6 发送群聊自定义(信令)消息(最大支持 8KB)
|
||||
*
|
||||
* @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
|
||||
* - HIGH :云端会优先传输,适用于在群里发送重要信令,比如连麦邀请,PK邀请、礼物赠送等关键性信令。
|
||||
* - NORMAL :云端按默认优先级传输,适用于在群里发送非重要信令,比如观众的点赞提醒等等。
|
||||
* @return 返回消息的唯一标识 ID
|
||||
*
|
||||
* @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
|
||||
*/
|
||||
- (NSString*)sendGroupCustomMessage:(NSData *)customData to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
// 3.7 更多功能,详见 V2TIMManager+Message.h
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群相关操作
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 4.1 设置群组监听器
|
||||
*/
|
||||
- (void)addGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(addGroupListener(listener:));
|
||||
|
||||
/**
|
||||
* 4.2 设置群组监听器
|
||||
*/
|
||||
- (void)removeGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(removeGroupListener(listener:));
|
||||
|
||||
/**
|
||||
* 4.3 创建群组
|
||||
*
|
||||
* @param groupType 群类型,我们为您预定义好了几种常用的群类型,您也可以在控制台定义自己需要的群类型:
|
||||
* - "Work" :工作群,成员上限 200 人,不支持由用户主动加入,需要他人邀请入群,适合用于类似微信中随意组建的工作群(对应老版本的 Private 群)。
|
||||
* - "Public" :公开群,成员上限 2000 人,任何人都可以申请加群,但加群需群主或管理员审批,适合用于类似 QQ 中由群主管理的兴趣群。
|
||||
* - "Meeting" :会议群,成员上限 6000 人,任何人都可以自由进出,且加群无需被审批,适合用于视频会议和在线培训等场景(对应老版本的 ChatRoom 群)。
|
||||
* - "Community" :社群,成员上限 100000 人,任何人都可以自由进出,且加群无需被审批,适合用于知识分享和游戏交流等超大社区群聊场景。5.8 版本开始支持,需要您购买旗舰版套餐。
|
||||
* - "AVChatRoom" :直播群,人数无上限,任何人都可以自由进出,消息吞吐量大,适合用作直播场景中的高并发弹幕聊天室。
|
||||
*
|
||||
* @param groupID 自定义群组 ID,可以传 nil。传 nil 时系统会自动分配 groupID,并通过 succ 回调返回。
|
||||
* "Community" 类型自定义群组 ID 必须以 "@TGS#_" 作为前缀。
|
||||
* @param groupName 群名称,不能为 nil,最长30字节
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 不支持在同一个 SDKAPPID 下创建两个相同 groupID 的群
|
||||
*/
|
||||
- (void)createGroup:(NSString *)groupType groupID:(NSString*)groupID groupName:(NSString *)groupName succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 4.4 加入群组
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 工作群(Work):不能主动入群,只能通过群成员调用 V2TIMManager+Group.h -> inviteUserToGroup 接口邀请入群。
|
||||
* - 公开群(Public):申请入群后,需要管理员审批,管理员在收到 V2TIMGroupListener -> onReceiveJoinApplication 回调后调用 V2TIMManager+Group.h -> getGroupApplicationList 接口处理加群请求。
|
||||
* - 其他群:可以直接入群。
|
||||
*/
|
||||
- (void)joinGroup:(NSString*)groupID msg:(NSString*)msg succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 4.5 退出群组
|
||||
*
|
||||
* @note 在公开群(Public)、会议(Meeting)和直播群(AVChatRoom)中,群主是不可以退群的,群主只能调用 dismissGroup 解散群组。
|
||||
*/
|
||||
- (void)quitGroup:(NSString*)groupID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 4.6 解散群组
|
||||
*
|
||||
* @note 请注意如下特殊逻辑:
|
||||
* - 好友工作群(Work)的解散最为严格,即使群主也不能随意解散,只能由您的业务服务器调用 [解散群组 REST API](https://cloud.tencent.com/document/product/269/1624) 解散。
|
||||
* - 其他类型群的群主可以解散群组。
|
||||
*/
|
||||
- (void)dismissGroup:(NSString*)groupID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
// 4.7 更多功能,详见 V2TIMManager+Group.h
|
||||
|
||||
/**
|
||||
* 设置群组监听器(待废弃接口,请使用 addGroupListener 和 removeGroupListener 接口)
|
||||
*/
|
||||
- (void)setGroupListener:(id<V2TIMGroupListener>)listener __attribute__((deprecated("use addGroupListener: instead")));
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 资料相关操作
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 5.1 获取用户资料
|
||||
* @note 请注意:
|
||||
* - 获取自己的资料,传入自己的 ID 即可。
|
||||
* - userIDList 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
|
||||
*/
|
||||
- (void)getUsersInfo:(NSArray<NSString *> *)userIDList succ:(V2TIMUserFullInfoListSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
/**
|
||||
* 5.2 修改个人资料
|
||||
*/
|
||||
- (void)setSelfInfo:(V2TIMUserFullInfo *)Info succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
|
||||
|
||||
// 5.5 更多功能,详见 V2TIMManager+Friendship.h
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 扩展接口
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 6.1 实验性 API 接口
|
||||
*
|
||||
* @param api 接口名称
|
||||
* @param param 接口参数
|
||||
*
|
||||
* @note 该接口提供一些实验性功能
|
||||
*/
|
||||
- (void)callExperimentalAPI:(NSString *)api
|
||||
param:(NSObject *)param
|
||||
succ:(V2TIMCallExperimentalAPISucc)succ
|
||||
fail:(V2TIMFail)fail;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 主核心回调,帮助您时刻关注 IMSDK 的在线状态
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 主核心回调
|
||||
@protocol V2TIMSDKListener <NSObject>
|
||||
@optional
|
||||
/// SDK 正在连接到服务器
|
||||
- (void)onConnecting;
|
||||
|
||||
/// SDK 已经成功连接到服务器
|
||||
- (void)onConnectSuccess;
|
||||
|
||||
/// SDK 连接服务器失败
|
||||
- (void)onConnectFailed:(int)code err:(NSString*)err;
|
||||
|
||||
/// 当前用户被踢下线,此时可以 UI 提示用户,并再次调用 V2TIMManager 的 login() 函数重新登录。
|
||||
- (void)onKickedOffline;
|
||||
|
||||
/// 在线时票据过期:此时您需要生成新的 userSig 并再次调用 V2TIMManager 的 login() 函数重新登录。
|
||||
- (void)onUserSigExpired;
|
||||
|
||||
/// 当前用户的资料发生了更新
|
||||
- (void)onSelfInfoUpdated:(V2TIMUserFullInfo *)Info;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 基本消息回调 (高级消息请参考 V2TIMManager+Message.h -> V2TIMAdvancedMsgListener)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 基本消息回调
|
||||
@protocol V2TIMSimpleMsgListener <NSObject>
|
||||
@optional
|
||||
|
||||
/// 收到 C2C 文本消息
|
||||
- (void)onRecvC2CTextMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info text:(NSString *)text;
|
||||
|
||||
/// 收到 C2C 自定义(信令)消息
|
||||
- (void)onRecvC2CCustomMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info customData:(NSData *)data;
|
||||
|
||||
/// 收到群文本消息
|
||||
- (void)onRecvGroupTextMessage:(NSString *)msgID groupID:(NSString *)groupID sender:(V2TIMGroupMemberInfo *)info text:(NSString *)text;
|
||||
|
||||
/// 收到群自定义(信令)消息
|
||||
- (void)onRecvGroupCustomMessage:(NSString *)msgID groupID:(NSString *)groupID sender:(V2TIMGroupMemberInfo *)info customData:(NSData *)data;
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// IMSDK 群组事件回调
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// IMSDK 群组事件回调
|
||||
@protocol V2TIMGroupListener <NSObject>
|
||||
@optional
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群成员相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新成员加入群(该群所有的成员都能收到,会议群(Meeting)默认无此回调,如需回调请提交工单配置)
|
||||
- (void)onMemberEnter:(NSString *)groupID memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList;
|
||||
|
||||
/// 有成员离开群(该群所有的成员都能收到,会议群(Meeting)默认无此回调,如需回调请提交工单配置)
|
||||
- (void)onMemberLeave:(NSString *)groupID member:(V2TIMGroupMemberInfo *)member;
|
||||
|
||||
/// 某成员被拉入某群(该群所有的成员都能收到)
|
||||
- (void)onMemberInvited:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList;
|
||||
|
||||
/// 有成员被踢出某群(该群所有的成员都能收到)
|
||||
- (void)onMemberKicked:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList;
|
||||
|
||||
/// 某成员信息发生变更(该群所有的成员都能收到)。会议群(Meeting)和直播群(AVChatRoom)默认无此回调,如需回调请提交工单配置
|
||||
- (void)onMemberInfoChanged:(NSString *)groupID changeInfoList:(NSArray <V2TIMGroupMemberChangeInfo *> *)changeInfoList;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 群生命周期相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新的群创建(创建者能收到,应用于多端消息同步的场景)
|
||||
- (void)onGroupCreated:(NSString *)groupID;
|
||||
|
||||
/// 某个已加入的群被解散了(该群所有的成员都能收到)
|
||||
- (void)onGroupDismissed:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser;
|
||||
|
||||
/// 某个已加入的群被回收了(该群所有的成员都能收到)
|
||||
- (void)onGroupRecycled:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser;
|
||||
|
||||
/// 某个已加入的群的信息被修改了(该群所有的成员都能收到)
|
||||
- (void)onGroupInfoChanged:(NSString *)groupID changeInfoList:(NSArray <V2TIMGroupChangeInfo *> *)changeInfoList;
|
||||
|
||||
/// 某个已加入的群的属性被修改了,会返回所在群组的所有属性(该群所有的成员都能收到)
|
||||
- (void)onGroupAttributeChanged:(NSString *)groupID attributes:(NSMutableDictionary<NSString *,NSString *> *)attributes;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 加群申请相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 有新的加群请求(只有群主和管理员会收到)
|
||||
- (void)onReceiveJoinApplication:(NSString *)groupID member:(V2TIMGroupMemberInfo *)member opReason:(NSString *)opReason;
|
||||
|
||||
/// 加群请求已经被群主或管理员处理了(只有申请人能够收到)
|
||||
- (void)onApplicationProcessed:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser opResult:(BOOL)isAgreeJoin opReason:(NSString *)opReason;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// 其他相关通知
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// 指定管理员身份
|
||||
- (void)onGrantAdministrator:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList;
|
||||
|
||||
/// 取消管理员身份
|
||||
- (void)onRevokeAdministrator:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList;
|
||||
|
||||
/// 自己主动退出群组(主要用于多端同步,直播群(AVChatRoom)不支持)
|
||||
- (void)onQuitFromGroup:(NSString *)groupID;
|
||||
|
||||
/// 收到 RESTAPI 下发的自定义系统消息
|
||||
- (void)onReceiveRESTCustomData:(NSString *)groupID data:(NSData *)data;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 用户资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 用户基本资料
|
||||
@interface V2TIMUserInfo : NSObject
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong,readonly) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong) NSString* nickName;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong) NSString* faceURL;
|
||||
@end
|
||||
|
||||
/// 用户详细资料
|
||||
@interface V2TIMUserFullInfo : V2TIMUserInfo
|
||||
|
||||
/// 用户签名
|
||||
@property(nonatomic,strong) NSString *selfSignature;
|
||||
|
||||
/// 用户性别
|
||||
@property(nonatomic,assign) V2TIMGender gender;
|
||||
|
||||
/// 用户角色
|
||||
@property(nonatomic,assign) uint32_t role;
|
||||
|
||||
/// 用户等级
|
||||
@property(nonatomic,assign) uint32_t level;
|
||||
|
||||
/// 出生日期
|
||||
@property(nonatomic,assign) uint32_t birthday;
|
||||
|
||||
/// 用户好友验证方式
|
||||
@property(nonatomic,assign) V2TIMFriendAllowType allowType;
|
||||
|
||||
/// 用户自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 用户自定义字段) 配置用户自定义字段,然后再调用该接口进行设置,key 值不需要加 Tag_Profile_Custom_ 前缀。
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *> * customInfo;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// 群成员资料
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
/// 群成员基本资料
|
||||
@interface V2TIMGroupMemberInfo : NSObject
|
||||
/// 用户 ID
|
||||
@property(nonatomic,strong) NSString* userID;
|
||||
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong,readonly) NSString* nickName;
|
||||
|
||||
/// 用户好友备注
|
||||
@property(nonatomic,strong,readonly) NSString* friendRemark;
|
||||
|
||||
/// 群成员名片
|
||||
@property(nonatomic,strong) NSString* nameCard;
|
||||
|
||||
/// 用户头像
|
||||
@property(nonatomic,strong,readonly) NSString* faceURL;
|
||||
|
||||
@end
|
||||
|
||||
/// 群成员详细资料
|
||||
@interface V2TIMGroupMemberFullInfo : V2TIMGroupMemberInfo
|
||||
/// 群成员自定义字段
|
||||
/// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群成员自定义字段) 配置用户自定义字段,然后再调用该接口进行设置。
|
||||
@property(nonatomic,strong) NSDictionary<NSString *,NSData *> * customInfo;
|
||||
|
||||
/// 群成员角色(V2TIMGroupMemberRole),修改群成员角色请调用 V2TIMManager+Group.h -> setGroupMemberRole 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t role;
|
||||
|
||||
/// 群成员禁言结束时间戳,禁言用户请调用 V2TIMManager+Group.h -> muteGroupMember 接口
|
||||
@property(nonatomic,assign,readonly) uint32_t muteUntil;
|
||||
|
||||
/// 群成员入群时间,自动生成,不可修改
|
||||
@property(nonatomic,assign,readonly) time_t joinTime;
|
||||
|
||||
@end
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// SDK 配置参数表
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@interface V2TIMSDKConfig : NSObject
|
||||
|
||||
/// 本地写 log 文件的等级,默认 DEBUG 等级, IMSDK 的日志默认存储于 /Library/Caches/ 目录下
|
||||
@property(nonatomic,assign) V2TIMLogLevel logLevel;
|
||||
|
||||
/// log 监听回调(回调在主线程,日志回调可能比较频繁,请注意不要在回调里面同步处理太多耗时任务,可能会堵塞主线程)
|
||||
@property(nonatomic,copy) V2TIMLogListener logListener;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
framework module ImSDK_Plus {
|
||||
umbrella header "ImSDK_Plus.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
||||
Reference in New Issue
Block a user