V2TIMManager.h 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843
  1. /////////////////////////////////////////////////////////////////////
  2. //
  3. // 腾讯云通信服务 IMSDK
  4. //
  5. // 模块名称:V2TIMManager
  6. //
  7. // TIM SDK 2.0 版的接口,相比于 1.0 版本更加简洁易用,接入速度更快,高级特性接口详见:
  8. // - V2TIMManager+Message.h 消息相关的高级功能接口,比如图片消息,视频消息,消息撤回,消息已读等功能。
  9. // - V2TIMManager+APNS.h 推送相关的高级功能接口,主要用于开启消息推送功能。
  10. // - V2TIMManager+Conversation.h 会话相关的高级功能接口,一个会话对应一个聊天窗口。
  11. // - V2TIMManager+Group.h 群组相关的高级功能接口,比如邀请人进群,处理加群请求等功能。
  12. // - V2TIMManager+Friendship.h 关系链相关的高级功能接口,比如黑名单,好友列表等功能。
  13. // - V2TIMManager+Community.h 社群相关的高级功能接口,比如创建话题,话题列表等功能。
  14. //
  15. /////////////////////////////////////////////////////////////////////
  16. #ifndef ImSDK_V2TIMManager_h
  17. #define ImSDK_V2TIMManager_h
  18. #if defined(BUILD_V2TIM_SDK)
  19. #define V2TIM_EXPORT __attribute__((visibility("default")))
  20. #else
  21. #define V2TIM_EXPORT
  22. #endif
  23. #if defined(__cplusplus)
  24. #define V2TIM_EXTERN extern "C" V2TIM_EXPORT
  25. #else
  26. #define V2TIM_EXTERN extern V2TIM_EXPORT
  27. #endif
  28. #import <Foundation/Foundation.h>
  29. @class V2TIMSDKConfig;
  30. @class V2TIMUserInfo;
  31. @class V2TIMUserFullInfo;
  32. @class V2TIMUserSearchParam;
  33. @class V2TIMUserSearchResult;
  34. @class V2TIMGroupMemberInfo;
  35. @class V2TIMGroupMemberFullInfo;
  36. @class V2TIMGroupChangeInfo;
  37. @class V2TIMGroupMemberChangeInfo;
  38. @class V2TIMUserReceiveMessageOptInfo;
  39. @class V2TIMTopicInfo;
  40. @class V2TIMUserStatus;
  41. @class V2TIMReceiveMessageOptInfo;
  42. V2TIM_EXPORT @protocol V2TIMSDKListener;
  43. V2TIM_EXPORT @protocol V2TIMSimpleMsgListener;
  44. V2TIM_EXPORT @protocol V2TIMGroupListener;
  45. V2TIM_EXTERN NSString *const GroupType_Work;
  46. V2TIM_EXTERN NSString *const GroupType_Public;
  47. V2TIM_EXTERN NSString *const GroupType_Meeting;
  48. V2TIM_EXTERN NSString *const GroupType_AVChatRoom;
  49. V2TIM_EXTERN NSString *const GroupType_Community;
  50. /////////////////////////////////////////////////////////////////////////////////
  51. //
  52. // V2TIMManager
  53. //
  54. // IMSDK 主核心类,负责 IMSDK 的初始化、登录、消息收发,建群退群等功能
  55. //
  56. /////////////////////////////////////////////////////////////////////////////////
  57. V2TIM_EXPORT @interface V2TIMManager : NSObject
  58. /// 成功通用回调
  59. typedef void (^V2TIMSucc)(void);
  60. /// 失败通用回调
  61. typedef void (^V2TIMFail)(int code, NSString * desc);
  62. /// 创建群组成功回调
  63. typedef void (^V2TIMCreateGroupSucc)(NSString * groupID);
  64. /// 获取用户资料成功回调
  65. typedef void (^V2TIMUserFullInfoListSucc)(NSArray <V2TIMUserFullInfo *> * infoList);
  66. /// 搜索云端用户的结果回调
  67. typedef void (^V2TIMUserSearchResultSucc)(V2TIMUserSearchResult *searchResult);
  68. /// 实验性 API 接口成功回调
  69. typedef void (^V2TIMCallExperimentalAPISucc)(NSObject *result);
  70. /// 获取用户状态列表成功回调
  71. typedef void (^V2TIMUserStatusListSucc)(NSArray<V2TIMUserStatus *> *result);
  72. /// 登录状态
  73. typedef NS_ENUM(NSInteger, V2TIMLoginStatus) {
  74. V2TIM_STATUS_LOGINED = 1, ///< 已登录
  75. V2TIM_STATUS_LOGINING = 2, ///< 登录中
  76. V2TIM_STATUS_LOGOUT = 3, ///< 无登录
  77. };
  78. /// 日志级别
  79. typedef NS_ENUM(NSInteger, V2TIMLogLevel) {
  80. V2TIM_LOG_NONE = 0, ///< 不输出任何 sdk log
  81. V2TIM_LOG_DEBUG = 3, ///< 输出 DEBUG,INFO,WARNING,ERROR 级别的 log
  82. V2TIM_LOG_INFO = 4, ///< 输出 INFO,WARNING,ERROR 级别的 log
  83. V2TIM_LOG_WARN = 5, ///< 输出 WARNING,ERROR 级别的 log
  84. V2TIM_LOG_ERROR = 6, ///< 输出 ERROR 级别的 log
  85. };
  86. /// 消息优先级
  87. typedef NS_ENUM(NSInteger, V2TIMMessagePriority) {
  88. V2TIM_PRIORITY_DEFAULT = 0, ///< 默认
  89. V2TIM_PRIORITY_HIGH = 1, ///< 高优先级,一般用于礼物等重要消息
  90. V2TIM_PRIORITY_NORMAL = 2, ///< 常规优先级,一般用于普通消息
  91. V2TIM_PRIORITY_LOW = 3, ///< 低优先级,一般用于点赞消息
  92. };
  93. /// 性别
  94. typedef NS_ENUM(NSInteger, V2TIMGender) {
  95. V2TIM_GENDER_UNKNOWN = 0, ///< 未知性别
  96. V2TIM_GENDER_MALE = 1, ///< 男性
  97. V2TIM_GENDER_FEMALE = 2, ///< 女性
  98. };
  99. /// 好友验证方式
  100. typedef NS_ENUM(NSInteger, V2TIMFriendAllowType) {
  101. V2TIM_FRIEND_ALLOW_ANY = 0, ///< 同意任何用户加好友
  102. V2TIM_FRIEND_NEED_CONFIRM = 1, ///< 需要验证
  103. V2TIM_FRIEND_DENY_ANY = 2, ///< 拒绝任何人加好友
  104. };
  105. /// 群成员角色
  106. typedef NS_ENUM(NSInteger, V2TIMGroupMemberRole) {
  107. V2TIM_GROUP_MEMBER_UNDEFINED = 0, ///< 未定义(没有获取该字段)
  108. V2TIM_GROUP_MEMBER_ROLE_MEMBER = 200, ///< 群成员
  109. V2TIM_GROUP_MEMBER_ROLE_ADMIN = 300, ///< 群管理员
  110. V2TIM_GROUP_MEMBER_ROLE_SUPER = 400, ///< 群主
  111. };
  112. /// 用户状态类型
  113. typedef NS_ENUM(NSInteger, V2TIMUserStatusType) {
  114. V2TIM_USER_STATUS_UNKNOWN = 0, ///< 未知状态
  115. V2TIM_USER_STATUS_ONLINE = 1, ///< 在线状态
  116. V2TIM_USER_STATUS_OFFLINE = 2, ///< 离线状态
  117. V2TIM_USER_STATUS_UNLOGINED = 3, ///< 未登录(如主动调用 logout 接口,或者账号注册后还未登录)
  118. };
  119. /// 搜索关键字匹配类型
  120. typedef NS_ENUM(NSInteger, V2TIMKeywordListMatchType) {
  121. V2TIM_KEYWORD_LIST_MATCH_TYPE_OR = 0,
  122. V2TIM_KEYWORD_LIST_MATCH_TYPE_AND = 1
  123. };
  124. /// 日志回调
  125. typedef void (^V2TIMLogListener)(V2TIMLogLevel logLevel, NSString * logContent);
  126. /////////////////////////////////////////////////////////////////////////////////
  127. // 初始化
  128. /////////////////////////////////////////////////////////////////////////////////
  129. /**
  130. * 1.1 获取 V2TIMManager 管理器实例
  131. */
  132. + (V2TIMManager*)sharedInstance;
  133. /**
  134. * 1.2 初始化 SDK
  135. *
  136. * @param sdkAppID 应用 ID,必填项,可以在 [控制台](https://console.cloud.tencent.com/im) 中获取
  137. * @param config 配置信息
  138. * @return YES:成功;NO:失败
  139. */
  140. - (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config;
  141. /**
  142. * 1.3 添加 IM 监听
  143. */
  144. - (void)addIMSDKListener:(id<V2TIMSDKListener>)listener;
  145. /**
  146. * 1.4 移除 IM 监听
  147. */
  148. - (void)removeIMSDKListener:(id<V2TIMSDKListener>)listener;
  149. /**
  150. * 1.5 反初始化 SDK
  151. */
  152. - (void)unInitSDK;
  153. /**
  154. * 1.6 获取版本号
  155. *
  156. * @return 返回版本号,字符串表示,例如 5.0.10
  157. */
  158. - (NSString*)getVersion;
  159. /**
  160. * 1.7 获取服务器时间戳
  161. *
  162. * @return UTC 时间戳,单位 s
  163. */
  164. - (uint64_t)getServerTime;
  165. /**
  166. * 初始化 SDK(待废弃接口,请使用 initSDK 和 addIMSDKListener 接口)
  167. */
  168. - (BOOL)initSDK:(int)sdkAppID config:(V2TIMSDKConfig*)config listener:(id<V2TIMSDKListener>)listener __attribute__((deprecated("use initSDK:config: and addIMSDKListener: instead")));
  169. /////////////////////////////////////////////////////////////////////////////////
  170. // 登录登出
  171. /////////////////////////////////////////////////////////////////////////////////
  172. /**
  173. * 2.1 登录
  174. *
  175. * 登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参考 [UserSig 后台 API](https://cloud.tencent.com/document/product/269/32688)。
  176. *
  177. * @note 请注意如下特殊逻辑:
  178. * - 登陆时票据过期:login 函数的 V2TIMFail 会返回 ERR_USER_SIG_EXPIRED(6206)或者 ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001) 错误码,此时请您生成新的 userSig 重新登录。
  179. * - 在线时票据过期:用户在线期间也可能收到 V2TIMSDKListener -> onUserSigExpired 回调,此时也是需要您生成新的 userSig 并重新登录。
  180. * - 在线时被踢下线:用户在线情况下被踢,SDK 会通过 V2TIMSDKListener -> onKickedOffline 回调通知给您,此时可以 UI 提示用户,并再次调用 login() 重新登录。
  181. * - 同平台多设备在线:该功能为IM旗舰版功能,购买[旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17487)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17224#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
  182. */
  183. - (void)login:(NSString *)userID userSig:(NSString *)userSig succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  184. /**
  185. * 2.2 登出
  186. *
  187. * 退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
  188. */
  189. - (void)logout:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  190. /**
  191. * 2.3 获取登录用户
  192. */
  193. - (NSString *)getLoginUser;
  194. /**
  195. * 2.4 获取登录状态
  196. *
  197. * 如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。
  198. */
  199. - (V2TIMLoginStatus)getLoginStatus;
  200. /////////////////////////////////////////////////////////////////////////////////
  201. // 消息收发
  202. /////////////////////////////////////////////////////////////////////////////////
  203. /**
  204. * 3.1 设置基本消息(文本消息和自定义消息)的事件监听器
  205. *
  206. * @note 图片消息、视频消息、语音消息等高级消息的监听,请参考 V2TIMManager+Message.h -> addAdvancedMsgListener 接口。
  207. */
  208. - (void)addSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(addSimpleMsgListener(listener:));
  209. /**
  210. * 3.2 移除基本消息(文本消息和自定义消息)的事件监听器
  211. */
  212. - (void)removeSimpleMsgListener:(id<V2TIMSimpleMsgListener>)listener NS_SWIFT_NAME(removeSimpleMsgListener(listener:));
  213. /**
  214. * 3.3 发送单聊普通文本消息(最大支持 12KB)
  215. *
  216. * 文本消息支持云端的脏词过滤,如果用户发送的消息中有敏感词,V2TIMFail 回调将会返回 80001 错误码。
  217. * @return 返回消息的唯一标识 ID
  218. *
  219. * @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
  220. */
  221. - (NSString*)sendC2CTextMessage:(NSString *)text to:(NSString *)userID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  222. /**
  223. * 3.4 发送单聊自定义(信令)消息(最大支持 12KB)
  224. *
  225. * 自定义消息本质就是一端二进制 buffer,您可以在其上自由组织自己的消息格式(常用于发送信令),但是自定义消息不支持云端敏感词过滤。
  226. * @return 返回消息的唯一标识 ID
  227. *
  228. * @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
  229. */
  230. - (NSString*)sendC2CCustomMessage:(NSData *)customData to:(NSString *)userID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  231. /**
  232. * 3.5 发送群聊普通文本消息(最大支持 12KB)
  233. *
  234. * @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
  235. * - HIGH :云端会优先传输,适用于在群里发送重要消息,比如主播发送的文本消息等。
  236. * - NORMAL :云端按默认优先级传输,适用于在群里发送普通消息,比如观众发送的弹幕消息等。
  237. * @return 返回消息的唯一标识 ID
  238. *
  239. * @note 该接口发送的消息默认会推送(前提是在 V2TIMManager+APNS.h 开启了推送),如果需要自定义推送(自定义推送声音,推送 Title 等),请调用 V2TIMManager+Message.h -> sendMessage 接口。
  240. */
  241. - (NSString*)sendGroupTextMessage:(NSString *)text to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  242. /**
  243. * 3.6 发送群聊自定义(信令)消息(最大支持 12KB)
  244. *
  245. * @param priority 设置消息的优先级,我们没有办法所有消息都能 100% 送达每一个用户,但高优先级的消息会有更高的送达成功率。
  246. * - HIGH :云端会优先传输,适用于在群里发送重要信令,比如连麦邀请,PK邀请、礼物赠送等关键性信令。
  247. * - NORMAL :云端按默认优先级传输,适用于在群里发送非重要信令,比如观众的点赞提醒等等。
  248. * @return 返回消息的唯一标识 ID
  249. *
  250. * @note 该接口发送的消息默认不会推送,如果需要推送,请调用 V2TIMManager+Message.h -> sendMessage 接口。
  251. */
  252. - (NSString*)sendGroupCustomMessage:(NSData *)customData to:(NSString *)groupID priority:(V2TIMMessagePriority)priority succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  253. // 3.7 更多功能,详见 V2TIMManager+Message.h
  254. /////////////////////////////////////////////////////////////////////////////////
  255. // 群相关操作
  256. /////////////////////////////////////////////////////////////////////////////////
  257. /**
  258. * 4.1 设置群组监听器
  259. */
  260. - (void)addGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(addGroupListener(listener:));
  261. /**
  262. * 4.2 设置群组监听器
  263. */
  264. - (void)removeGroupListener:(id<V2TIMGroupListener>)listener NS_SWIFT_NAME(removeGroupListener(listener:));
  265. /**
  266. * 4.3 创建群组
  267. *
  268. * @param groupType 群类型,我们为您预定义好了几种常用的群类型,您也可以在控制台定义自己需要的群类型:
  269. * - "Work" :工作群,成员上限 200 人,不支持由用户主动加入,需要他人邀请入群,适合用于类似微信中随意组建的工作群(对应老版本的 Private 群)。
  270. * - "Public" :公开群,成员上限 2000 人,任何人都可以申请加群,但加群需群主或管理员审批,适合用于类似 QQ 中由群主管理的兴趣群。
  271. * - "Meeting" :会议群,成员上限 6000 人,任何人都可以自由进出,且加群无需被审批,适合用于视频会议和在线培训等场景(对应老版本的 ChatRoom 群)。
  272. * - "Community" :社群,成员上限 100000 人,任何人都可以自由进出,且加群无需被审批,适合用于知识分享和游戏交流等超大社区群聊场景。5.8 版本开始支持,需要您购买旗舰版套餐。
  273. * - "AVChatRoom" :直播群,人数无上限,任何人都可以自由进出,消息吞吐量大,适合用作直播场景中的高并发弹幕聊天室。
  274. *
  275. * @param groupID 自定义群组 ID,可以传 nil。传 nil 时系统会自动分配 groupID,并通过 succ 回调返回。
  276. * "Community" 类型自定义群组 ID 必须以 "@TGS#_" 作为前缀。
  277. * @param groupName 群名称,不能为 nil,最长 100 字节,使用 UTF-8 编码,1 个汉字占 3 个字节。
  278. *
  279. * @note 请注意如下特殊逻辑:
  280. * - 不支持在同一个 SDKAPPID 下创建两个相同 groupID 的群。
  281. * - 社群(Community)功能仅 5.8.1668 增强版及以上版本支持,需[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17213)并[申请开通](https://cloud.tencent.com/document/product/269/3916?from=17215)后方可使用。
  282. * - 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。
  283. */
  284. - (void)createGroup:(NSString *)groupType groupID:(NSString*)groupID groupName:(NSString *)groupName succ:(V2TIMCreateGroupSucc)succ fail:(V2TIMFail)fail;
  285. /**
  286. * 4.4 加入群组
  287. *
  288. * @note 请注意如下特殊逻辑:
  289. * - 工作群(Work):不能主动入群,只能通过群成员调用 V2TIMManager+Group.h -> inviteUserToGroup 接口邀请入群。
  290. * - 公开群(Public):申请入群后,需要管理员审批,管理员在收到 V2TIMGroupListener -> onReceiveJoinApplication 回调后调用 V2TIMManager+Group.h -> getGroupApplicationList 接口处理加群请求。
  291. * - 其他群:可以直接入群。
  292. * - 直播群(AVChatRoom):在进程重启或重新登录之后,如果想继续接收直播群的消息,请您调用 joinGroup 重新加入直播群。
  293. * - 直播群(AVChatRoom):直播群新成员可以查看入群前消息,该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17484)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17179#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
  294. */
  295. - (void)joinGroup:(NSString*)groupID msg:(NSString*)msg succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  296. /**
  297. * 4.5 退出群组
  298. *
  299. * @note 在公开群(Public)、会议(Meeting)和直播群(AVChatRoom)中,群主是不可以退群的,群主只能调用 dismissGroup 解散群组。
  300. */
  301. - (void)quitGroup:(NSString*)groupID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  302. /**
  303. * 4.6 解散群组
  304. *
  305. * @note 请注意如下特殊逻辑:
  306. * - 好友工作群(Work)的解散最为严格,即使群主也不能随意解散,只能由您的业务服务器调用 [解散群组 REST API](https://cloud.tencent.com/document/product/269/1624) 解散。
  307. * - 其他类型群的群主可以解散群组。
  308. */
  309. - (void)dismissGroup:(NSString*)groupID succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  310. // 4.7 更多功能,详见 V2TIMManager+Group.h
  311. /**
  312. * 设置群组监听器(待废弃接口,请使用 addGroupListener 和 removeGroupListener 接口)
  313. */
  314. - (void)setGroupListener:(id<V2TIMGroupListener>)listener __attribute__((deprecated("use addGroupListener: instead")));
  315. /////////////////////////////////////////////////////////////////////////////////
  316. // 资料相关操作
  317. /////////////////////////////////////////////////////////////////////////////////
  318. /**
  319. * 5.1 获取用户资料
  320. * @note
  321. * - 获取自己的资料,传入自己的 ID 即可。
  322. * - userIDList 建议一次最大 100 个,因为数量过多可能会导致数据包太大被后台拒绝,后台限制数据包最大为 1M。
  323. */
  324. - (void)getUsersInfo:(NSArray<NSString *> *)userIDList succ:(V2TIMUserFullInfoListSucc)succ fail:(V2TIMFail)fail;
  325. /**
  326. * 5.2 修改个人资料
  327. */
  328. - (void)setSelfInfo:(V2TIMUserFullInfo *)Info succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  329. /**
  330. * 5.3 订阅用户资料,从 7.4 版本开始支持
  331. *
  332. * @param userIDList 待订阅的用户 ID
  333. *
  334. * @note
  335. * - 该接口用于订阅陌生人的资料变更事件,订阅成功后,当订阅用户资料发生变更,您可以通过监听 onUserInfoChanged 回调来感知
  336. * - 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
  337. * - 自己的资料变更通知不需要订阅,默认会通过 onSelfInfoUpdated 回调通知给您
  338. * - 好友的资料变更通知不需要订阅,默认会通过 onFriendInfoChange 回调通知给您
  339. * - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
  340. */
  341. - (void)subscribeUserInfo:(NSArray *)userIDList succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  342. /**
  343. * 5.4 取消订阅用户资料,从 7.4 版本开始支持
  344. *
  345. * @param userIDList 需要取消订阅的用户 ID
  346. *
  347. * @note
  348. * - 当 userIDList 为空时,取消当前所有的订阅
  349. * - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
  350. */
  351. - (void)unsubscribeUserInfo:(NSArray *)userIDList succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  352. /**
  353. * 5.5 搜索云端用户资料(8.4 及以上版本支持)
  354. * @param searchParam 用户搜索参数,详见 V2TIMUserSearchParam 的定义
  355. * @note
  356. * - 该功能为 IM 增值功能,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17176#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)
  357. * - 如果您没有开通该服务,调用接口会返回 60020 错误码
  358. * - 该接口返回的是云端存储的用户资料,包括好友和非好友资料,您可以调用 checkFriend 接口来判断是否为好友。
  359. */
  360. - (void)searchUsers:(V2TIMUserSearchParam *)searchParam succ:(V2TIMUserSearchResultSucc)succ fail:(V2TIMFail)fail;
  361. /**
  362. * 5.6 查询用户状态,从 6.3 版本开始支持
  363. *
  364. * @param userIDList 需要获取的用户 ID
  365. *
  366. * @note
  367. * - 如果您想查询自己的自定义状态,您只需要传入自己的 userID 即可
  368. * - 当您批量查询时,接口只会返回查询成功的用户状态信息;当所有用户均查询失败时,接口会报错
  369. * - 查询其他用户状态为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
  370. */
  371. - (void)getUserStatus:(NSArray *)userIDList succ:(V2TIMUserStatusListSucc)succ fail:(V2TIMFail)fail;
  372. /**
  373. * 5.7 设置自己的状态,从 6.3 版本开始支持
  374. *
  375. * @param status 待设置的自定义状态
  376. *
  377. * @note 该接口只支持设置自己的自定义状态,即 V2TIMUserStatus.customStatus
  378. */
  379. - (void)setSelfStatus:(V2TIMUserStatus *)status succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  380. /**
  381. * 5.8 订阅用户状态,从 6.3 版本开始支持
  382. *
  383. * @param userIDList 待订阅的用户 ID
  384. *
  385. * @note
  386. * - 当成功订阅用户状态后,当对方的状态(包含在线状态、自定义状态)发生变更后,您可以监听 @onUserStatusChanged 回调来感知
  387. * - 如果您需要订阅好友列表的状态,您只需要在控制台上打开开关即可,无需调用该接口
  388. * - 该接口不支持订阅自己,您可以通过监听 @onUserStatusChanged 回调来感知自身的自定义状态的变更
  389. * - 订阅列表最多允许订阅 200 个,超过限制后,会自动淘汰最先订阅的用户
  390. * - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
  391. */
  392. - (void)subscribeUserStatus:(NSArray *)userIDList succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  393. /**
  394. * 5.9 取消订阅用户状态,从 6.3 版本开始支持
  395. *
  396. * @note
  397. * - 当 userIDList 为空或者 nil 时,取消当前所有的订阅
  398. * - 该功能为 IM 旗舰版功能,[购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17491)后可使用,详见[价格说明](https://cloud.tencent.com/document/product/269/11673?from=17472#.E5.9F.BA.E7.A1.80.E6.9C.8D.E5.8A.A1.E8.AF.A6.E6.83.85)。
  399. */
  400. - (void)unsubscribeUserStatus:(NSArray *)userIDList succ:(V2TIMSucc)succ fail:(V2TIMFail)fail;
  401. // 5.10 更多功能,详见 V2TIMManager+Friendship.h
  402. /////////////////////////////////////////////////////////////////////////////////
  403. // 扩展接口
  404. /////////////////////////////////////////////////////////////////////////////////
  405. /**
  406. * 6.1 实验性 API 接口
  407. *
  408. * @param api 接口名称
  409. * @param param 接口参数
  410. *
  411. * @note 该接口提供一些实验性功能
  412. */
  413. - (void)callExperimentalAPI:(NSString *)api
  414. param:(NSObject *)param
  415. succ:(V2TIMCallExperimentalAPISucc)succ
  416. fail:(V2TIMFail)fail;
  417. @end
  418. /////////////////////////////////////////////////////////////////////////////////
  419. //
  420. // IMSDK 主核心回调,帮助您时刻关注 IMSDK 的在线状态
  421. //
  422. /////////////////////////////////////////////////////////////////////////////////
  423. /// IMSDK 主核心回调
  424. V2TIM_EXPORT @protocol V2TIMSDKListener <NSObject>
  425. @optional
  426. /// SDK 正在连接到服务器
  427. - (void)onConnecting;
  428. /// SDK 已经成功连接到服务器
  429. - (void)onConnectSuccess;
  430. /// SDK 连接服务器失败
  431. - (void)onConnectFailed:(int)code err:(NSString*)err;
  432. /// 当前用户被踢下线,此时可以 UI 提示用户,并再次调用 V2TIMManager 的 login() 函数重新登录。
  433. - (void)onKickedOffline;
  434. /// 在线时票据过期:此时您需要生成新的 userSig 并再次调用 V2TIMManager 的 login() 函数重新登录。
  435. - (void)onUserSigExpired;
  436. /// 当前用户的资料发生了更新
  437. - (void)onSelfInfoUpdated:(V2TIMUserFullInfo *)Info;
  438. /**
  439. * 用户状态变更通知
  440. *
  441. * @note 收到通知的情况:
  442. * 1. 订阅过的用户发生了状态变更(包括在线状态和自定义状态),会触发该回调
  443. * 2. 在 IM 控制台打开了好友状态通知开关,即使未主动订阅,当好友状态发生变更时,也会触发该回调
  444. * 3. 同一个账号多设备登录,当其中一台设备修改了自定义状态,所有设备都会收到该回调
  445. */
  446. - (void)onUserStatusChanged:(NSArray<V2TIMUserStatus *> *)userStatusList;
  447. /**
  448. * 用户资料变更通知
  449. *
  450. * @note
  451. * 仅当通过 subscribeUserInfo 成功订阅的用户(仅限非好友用户)的资料发生变更时,才会激活此回调函数
  452. */
  453. - (void)onUserInfoChanged:(NSArray<V2TIMUserFullInfo *> *)userInfoList;
  454. /**
  455. * 全局消息接收选项变更通知
  456. */
  457. - (void)onAllReceiveMessageOptChanged:(V2TIMReceiveMessageOptInfo *)receiveMessageOptInfo;
  458. /**
  459. * 实验性事件通知
  460. */
  461. - (void)onExperimentalNotify:(NSString *)key param:(NSObject *)param;
  462. @end
  463. /////////////////////////////////////////////////////////////////////////////////
  464. //
  465. // IMSDK 基本消息回调 (高级消息请参考 V2TIMManager+Message.h -> V2TIMAdvancedMsgListener)
  466. //
  467. /////////////////////////////////////////////////////////////////////////////////
  468. /// IMSDK 基本消息回调
  469. V2TIM_EXPORT @protocol V2TIMSimpleMsgListener <NSObject>
  470. @optional
  471. /// 收到 C2C 文本消息
  472. - (void)onRecvC2CTextMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info text:(NSString *)text;
  473. /// 收到 C2C 自定义(信令)消息
  474. - (void)onRecvC2CCustomMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info customData:(NSData *)data;
  475. /// 收到群文本消息
  476. - (void)onRecvGroupTextMessage:(NSString *)msgID groupID:(NSString *)groupID sender:(V2TIMGroupMemberInfo *)info text:(NSString *)text;
  477. /// 收到群自定义(信令)消息
  478. - (void)onRecvGroupCustomMessage:(NSString *)msgID groupID:(NSString *)groupID sender:(V2TIMGroupMemberInfo *)info customData:(NSData *)data;
  479. @end
  480. /////////////////////////////////////////////////////////////////////////////////
  481. //
  482. // IMSDK 群组事件回调
  483. //
  484. /////////////////////////////////////////////////////////////////////////////////
  485. /// IMSDK 群组事件回调
  486. V2TIM_EXPORT @protocol V2TIMGroupListener <NSObject>
  487. @optional
  488. /////////////////////////////////////////////////////////////////////////////////
  489. // 群成员相关通知
  490. /////////////////////////////////////////////////////////////////////////////////
  491. /// 有新成员加入群(该群所有的成员都能收到)
  492. /// 会议群(Meeting)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员变更通知) 主动配置。
  493. - (void)onMemberEnter:(NSString *)groupID memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList;
  494. /// 有成员离开群(该群所有的成员都能收到)
  495. /// 会议群(Meeting)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员变更通知) 主动配置。
  496. - (void)onMemberLeave:(NSString *)groupID member:(V2TIMGroupMemberInfo *)member;
  497. /// 某成员被拉入某群(该群所有的成员都能收到)
  498. - (void)onMemberInvited:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList;
  499. /// 有成员被踢出某群(该群所有的成员都能收到)
  500. - (void)onMemberKicked:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray<V2TIMGroupMemberInfo *>*)memberList;
  501. /// 某成员信息发生变更(该群所有的成员都能收到)
  502. /// 会议群(Meeting)和直播群(AVChatRoom)默认无此回调,如需回调,请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群成员资料变更通知) 主动配置。
  503. - (void)onMemberInfoChanged:(NSString *)groupID changeInfoList:(NSArray <V2TIMGroupMemberChangeInfo *> *)changeInfoList;
  504. /// 群组全体成员被禁言/解除禁言了(该群所有的成员都能收到)
  505. /// 需要提前在 [控制台](https://console.cloud.tencent.com/im) 开启通知开关。开关路径:功能配置 -> 群组配置 -> 群系统通知配置 -> 群资料变更通知 -> 群禁言变更通知。
  506. /// 7.5 及以上版本支持。
  507. - (void)onAllGroupMembersMuted:(NSString *)groupID isMute:(BOOL)isMute;
  508. /// 有成员被标记(该群所有的成员都能收到)
  509. /// 仅社群(Community)支持该回调。
  510. /// 7.5 及以上版本支持,需要您购买旗舰版套餐。
  511. - (void)onMemberMarkChanged:(NSString *)groupID memberIDList:(NSArray<NSString *> *)memberIDList markType:(int)markType enableMark:(BOOL)enableMark;
  512. /////////////////////////////////////////////////////////////////////////////////
  513. // 群生命周期相关通知
  514. /////////////////////////////////////////////////////////////////////////////////
  515. /// 有新的群创建(创建者能收到,应用于多端消息同步的场景)
  516. - (void)onGroupCreated:(NSString *)groupID;
  517. /// 某个已加入的群被解散了(该群所有的成员都能收到)
  518. - (void)onGroupDismissed:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser;
  519. /// 某个已加入的群被回收了(该群所有的成员都能收到)
  520. - (void)onGroupRecycled:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser;
  521. /// 某个已加入的群的信息被修改了(该群所有的成员都能收到)
  522. /// 以下字段的修改可能会引发该通知 groupName & introduction & notification & faceUrl & owner & allMute & custom
  523. /// 控制指定字段 下发通知/存漫游 请前往 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群组配置 -> 群系统通知配置 -> 群资料变更通知) 主动配置。
  524. - (void)onGroupInfoChanged:(NSString *)groupID changeInfoList:(NSArray <V2TIMGroupChangeInfo *> *)changeInfoList;
  525. /// 某个已加入的群的属性被修改了,会返回所在群组的所有属性(该群所有的成员都能收到)
  526. - (void)onGroupAttributeChanged:(NSString *)groupID attributes:(NSMutableDictionary<NSString *,NSString *> *)attributes;
  527. /// 某个已加入的群的计数器被修改了,会返回当前变更的群计数器(该群所有的成员都能收到)
  528. - (void)onGroupCounterChanged:(NSString *)groupID key:(NSString *)key newValue:(NSInteger)newValue;
  529. /////////////////////////////////////////////////////////////////////////////////
  530. // 加群申请相关通知
  531. /////////////////////////////////////////////////////////////////////////////////
  532. /// 有新的加群请求(只有群主和管理员会收到)
  533. - (void)onReceiveJoinApplication:(NSString *)groupID member:(V2TIMGroupMemberInfo *)member opReason:(NSString *)opReason;
  534. /// 加群或者邀请加群请求已经被群主或管理员处理了(只有申请人能够收到)
  535. - (void)onApplicationProcessed:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser opResult:(BOOL)isAgreeJoin opReason:(NSString *)opReason;
  536. /////////////////////////////////////////////////////////////////////////////////
  537. // 其他相关通知
  538. /////////////////////////////////////////////////////////////////////////////////
  539. /// 指定管理员身份
  540. - (void)onGrantAdministrator:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList;
  541. /// 取消管理员身份
  542. - (void)onRevokeAdministrator:(NSString *)groupID opUser:(V2TIMGroupMemberInfo *)opUser memberList:(NSArray <V2TIMGroupMemberInfo *> *)memberList;
  543. /// 自己主动退出群组(主要用于多端同步)
  544. - (void)onQuitFromGroup:(NSString *)groupID;
  545. /// 收到 RESTAPI 下发的自定义系统消息
  546. - (void)onReceiveRESTCustomData:(NSString *)groupID data:(NSData *)data;
  547. /////////////////////////////////////////////////////////////////////////////////
  548. // 话题事件监听回调
  549. /////////////////////////////////////////////////////////////////////////////////
  550. /// 话题创建回调
  551. - (void)onTopicCreated:(NSString *)groupID topicID:(NSString *)topicID;
  552. /// 话题被删除回调
  553. - (void)onTopicDeleted:(NSString *)groupID topicIDList:(NSArray<NSString *> *)topicIDList;
  554. /// 话题更新回调
  555. - (void)onTopicChanged:(NSString *)groupID topicInfo:(V2TIMTopicInfo *)topicInfo;
  556. @end
  557. /////////////////////////////////////////////////////////////////////////////////
  558. //
  559. // 用户资料
  560. //
  561. /////////////////////////////////////////////////////////////////////////////////
  562. /// 用户基本资料
  563. V2TIM_EXPORT @interface V2TIMUserInfo : NSObject
  564. /// 用户 ID
  565. @property(nonatomic,strong,readonly) NSString* userID;
  566. /// 用户昵称
  567. @property(nonatomic,strong) NSString* nickName;
  568. /// 用户头像
  569. @property(nonatomic,strong) NSString* faceURL;
  570. @end
  571. /// 用户详细资料
  572. V2TIM_EXPORT @interface V2TIMUserFullInfo : V2TIMUserInfo
  573. /// 用户签名
  574. @property(nonatomic,strong) NSString *selfSignature;
  575. /// 用户性别
  576. @property(nonatomic,assign) V2TIMGender gender;
  577. /// 用户角色
  578. @property(nonatomic,assign) uint32_t role;
  579. /// 用户等级
  580. @property(nonatomic,assign) uint32_t level;
  581. /// 出生日期
  582. @property(nonatomic,assign) uint32_t birthday;
  583. /// 用户好友验证方式
  584. @property(nonatomic,assign) V2TIMFriendAllowType allowType;
  585. /// 用户自定义字段
  586. /// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 用户自定义字段) 配置用户自定义字段,然后再调用该接口进行设置,key 值不需要加 Tag_Profile_Custom_ 前缀。
  587. @property(nonatomic,strong) NSDictionary<NSString *,NSData *> * customInfo;
  588. @end
  589. /////////////////////////////////////////////////////////////////////////////////
  590. //
  591. // 用户搜索
  592. //
  593. /////////////////////////////////////////////////////////////////////////////////
  594. V2TIM_EXPORT @interface V2TIMUserSearchParam : NSObject
  595. /// 搜索的关键字列表,关键字列表最多支持 5 个,keyword 会自动匹配用户 ID、昵称。
  596. @property(nonatomic, strong) NSArray<NSString *> *keywordList;
  597. /// 指定关键字列表匹配类型,可设置为“或”关系搜索或者“与”关系搜索。
  598. /// 取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND,默认为“或”关系搜索。
  599. @property(nonatomic,assign) V2TIMKeywordListMatchType keywordListMatchType;
  600. /// 用户性别(如果不设置,默认男性和女性都会返回)
  601. @property(nonatomic,assign) V2TIMGender gender;
  602. /// 用户最小生日(如果不设置,默认值为 0)
  603. @property(nonatomic,assign) uint32_t minBirthday;
  604. /// 用户最大生日(如果不设置,默认 birthday >= minBirthday 的用户都会返回)
  605. @property(nonatomic,assign) uint32_t maxBirthday;
  606. /// 每次云端搜索返回结果的条数(必须大于 0,最大支持 100,默认 20)
  607. @property(nonatomic,assign) NSUInteger searchCount;
  608. /// 每次云端搜索的起始位置。第一次填空字符串,续拉时填写 V2TIMUserSearchResult 中的返回值。
  609. @property(nonatomic,strong) NSString *searchCursor;
  610. @end
  611. V2TIM_EXPORT @interface V2TIMUserSearchResult : NSObject
  612. /// 是否已经返回全部满足搜索条件的用户列表
  613. @property(nonatomic,assign) BOOL isFinished;
  614. /// 满足搜索条件的用户总数量
  615. @property(nonatomic,assign) NSUInteger totalCount;
  616. /// 下一次云端搜索的起始位置
  617. @property(nonatomic,strong) NSString *nextCursor;
  618. /// 当前一次云端搜索返回的用户列表
  619. @property(nonatomic,strong) NSArray<V2TIMUserFullInfo *> *userList;
  620. @end
  621. /////////////////////////////////////////////////////////////////////////////////
  622. //
  623. // 用户状态
  624. //
  625. /////////////////////////////////////////////////////////////////////////////////
  626. V2TIM_EXPORT @interface V2TIMUserStatus : NSObject
  627. /// 用户的 ID
  628. @property (nonatomic, copy, readonly) NSString *userID;
  629. /// 用户的状态
  630. @property (nonatomic, assign, readonly) V2TIMUserStatusType statusType;
  631. /// 用户的自定义状态, 最大 100 字节
  632. @property (nonatomic, copy) NSString *customStatus;
  633. /// 用户在线设备列表
  634. @property (nonatomic, strong, readonly) NSMutableArray<NSString *> *onlineDevices;
  635. @end
  636. /////////////////////////////////////////////////////////////////////////////////
  637. //
  638. // 群成员资料
  639. //
  640. /////////////////////////////////////////////////////////////////////////////////
  641. /// 群成员基本资料
  642. V2TIM_EXPORT @interface V2TIMGroupMemberInfo : NSObject
  643. /// 用户 ID
  644. @property(nonatomic,strong) NSString* userID;
  645. /// 用户昵称
  646. @property(nonatomic,strong,readonly) NSString* nickName;
  647. /// 用户好友备注
  648. @property(nonatomic,strong,readonly) NSString* friendRemark;
  649. /// 群成员名片
  650. @property(nonatomic,strong) NSString* nameCard;
  651. /// 用户头像
  652. @property(nonatomic,strong,readonly) NSString* faceURL;
  653. /// 群成员在线终端列表
  654. @property(nonatomic, strong, readonly) NSMutableArray<NSString*>* onlineDevices;
  655. @end
  656. /// 群成员详细资料
  657. V2TIM_EXPORT @interface V2TIMGroupMemberFullInfo : V2TIMGroupMemberInfo
  658. /// 群成员自定义字段
  659. /// 首先要在 [控制台](https://console.cloud.tencent.com/im) (功能配置 -> 群成员自定义字段) 配置用户自定义字段,然后再调用该接口进行设置。
  660. @property(nonatomic,strong) NSDictionary<NSString *,NSData *> * customInfo;
  661. /// 群成员角色(V2TIMGroupMemberRole),修改群成员角色请调用 V2TIMManager+Group.h -> setGroupMemberRole 接口
  662. @property(nonatomic,assign,readonly) uint32_t role;
  663. /// 群成员禁言结束时间戳,禁言用户请调用 V2TIMManager+Group.h -> muteGroupMember 接口
  664. @property(nonatomic,assign,readonly) uint32_t muteUntil;
  665. /// 群成员入群时间,自动生成,不可修改
  666. @property(nonatomic,assign,readonly) time_t joinTime;
  667. /// 群成员是否在线
  668. /// @note
  669. /// - 不支持直播群 AVChatRoom;
  670. /// - 该字段仅在调用 - getGroupMemberList:filter:nextSeq:succ:fail: 接口时有效;
  671. /// - 7.3 及其以上版本支持,需要您购买旗舰版套餐。
  672. @property(nonatomic,assign,readonly) BOOL isOnline;
  673. @end
  674. /////////////////////////////////////////////////////////////////////////////////
  675. //
  676. // SDK 配置参数表
  677. //
  678. /////////////////////////////////////////////////////////////////////////////////
  679. V2TIM_EXPORT @interface V2TIMSDKConfig : NSObject
  680. /// 本地写 log 文件的等级,默认 DEBUG 等级, IMSDK 的日志默认存储于 /Library/Caches/ 目录下
  681. @property(nonatomic,assign) V2TIMLogLevel logLevel;
  682. /// log 监听回调(回调在主线程,日志回调可能比较频繁,请注意不要在回调里面同步处理太多耗时任务,可能会堵塞主线程)
  683. @property(nonatomic,copy) V2TIMLogListener logListener;
  684. @end
  685. #endif