shmily

sdk upgrade

Too many changes to show.

To preserve performance only 19 of 19+ files are displayed.

No preview for this file type
1 Pod::Spec.new do |s| 1 Pod::Spec.new do |s|
2 s.name = "HHVDoctorSDK" 2 s.name = "HHVDoctorSDK"
3 - s.version = "2.0.6.0712.1151" 3 +<<<<<<< HEAD
  4 + s.version = "2.5.6.0312.1627"
  5 +=======
  6 + s.version = "2.5.6.0312.1627"
  7 +>>>>>>> 82728596c8f4a99ff9be7d076879ec2cc6333f33
4 s.summary = "和缓视频医生 SDK" 8 s.summary = "和缓视频医生 SDK"
5 9
6 s.description = <<-DESC 10 s.description = <<-DESC
@@ -16,6 +20,8 @@ Pod::Spec.new do |s| @@ -16,6 +20,8 @@ Pod::Spec.new do |s|
16 s.source = { :git => "http://code.hh-medic.com/hh_public/hhvDoctorSDK.ios.git", :tag => s.version } 20 s.source = { :git => "http://code.hh-medic.com/hh_public/hhvDoctorSDK.ios.git", :tag => s.version }
17 s.default_subspec = 'Base' 21 s.default_subspec = 'Base'
18 22
  23 +
  24 + s.dependency 'TXIMSDK_iOS'
19 25
20 s.subspec 'Base' do |base| 26 s.subspec 'Base' do |base|
21 base.vendored_frameworks = 'HHVDoctorSDK/*.framework' 27 base.vendored_frameworks = 'HHVDoctorSDK/*.framework'
No preview for this file type
1 -//  
2 -// IMGroupExt.h  
3 -// IMGroupExt  
4 -//  
5 -// Created by tomzhu on 2017/1/23.  
6 -//  
7 -//  
8 -  
9 -#ifndef IMGroupExt_h  
10 -#define IMGroupExt_h  
11 -  
12 -#import "TIMComm+Group.h"  
13 -#import "TIMGroupManager+Ext.h"  
14 -  
15 -#endif /* IMGroupExt_h */  
1 -//  
2 -// IMMessageExt.h  
3 -// IMMessageExt  
4 -//  
5 -// Created by tomzhu on 2016/12/27.  
6 -//  
7 -//  
8 -  
9 -#ifndef ImSDK_h  
10 -#define ImSDK_h  
11 -  
12 -#import "TIMConversation+MsgExt.h"  
13 -#import "TIMMessage+MsgExt.h"  
14 -#import "TIMComm+MsgExt.h"  
15 -#import "TIMManager+MsgExt.h"  
16 -  
17 -#endif /* ImSDK_h */  
1 -//  
2 -// IMSdkComm.h  
3 -// ImSDK  
4 -//  
5 -// Created by bodeng on 10/12/14.  
6 -// Copyright (c) 2014 tencent. All rights reserved.  
7 -//  
8 -  
9 -#ifndef ImSDK_IMSdkComm_h  
10 -#define ImSDK_IMSdkComm_h  
11 -  
12 -@interface OMErrResp : NSObject  
13 -{  
14 - NSString* cmd; // 返回的命令字  
15 - int seq; // 请求包的seq  
16 - NSString* uin; // uin  
17 - int errCode; // 错误码  
18 - NSString* errTips; // error tips  
19 -}  
20 -  
21 -@property(nonatomic,strong) NSString* cmd;  
22 -@property(nonatomic,strong) NSString* uin;  
23 -@property(nonatomic,assign) int seq;  
24 -@property(nonatomic,assign) int errCode;  
25 -@property(nonatomic,strong) NSString* errTips;  
26 -  
27 -@end  
28 -  
29 -  
30 -/// 业务相关回调  
31 -  
32 -/**  
33 - * userid和tinyid 转换回包  
34 - * userList 存储IMUserId结构  
35 - */  
36 -@interface OMUserIdResp : NSObject{  
37 - NSArray* userList; // 用户的登录的open id  
38 -}  
39 -  
40 -  
41 -@property(nonatomic,strong) NSArray* userList;  
42 -  
43 -@end  
44 -  
45 -/**  
46 - * userid转换tinyid回调  
47 - *  
48 - * @param resp 回包结构  
49 - *  
50 - * @return 0 处理成功  
51 - */  
52 -typedef int (^OMUserIdSucc)(OMUserIdResp *resp);  
53 -  
54 -//请求回调  
55 -typedef int (^OMErr)(OMErrResp *resp);  
56 -  
57 -  
58 -/**  
59 - * 音视频回调  
60 - */  
61 -@interface OMCommandResp : NSObject{  
62 - NSData* rspbody;  
63 -}  
64 -  
65 -  
66 -@property(nonatomic,strong) NSData* rspbody;  
67 -  
68 -@end  
69 -  
70 -// relay 回调  
71 -typedef int (^OMCommandSucc)(OMCommandResp *resp);  
72 -  
73 -// request 回调  
74 -typedef void (^OMRequestSucc)(NSData * data);  
75 -typedef void (^OMRequsetFail)(int code, NSString* msg);  
76 -  
77 -/**  
78 - * UserId 结构,表示一个用户的账号信息  
79 - */  
80 -@interface IMUserId : NSObject{  
81 - NSString* uidtype; // uid 类型  
82 - unsigned int userappid;  
83 - NSString* userid; // 用户id  
84 - unsigned long long tinyid;  
85 - unsigned long long uin;  
86 -}  
87 -  
88 -@property(nonatomic,strong) NSString* uidtype;  
89 -@property(nonatomic,assign) unsigned int userappid;  
90 -@property(nonatomic,strong) NSString* userid;  
91 -@property(nonatomic,assign) unsigned long long tinyid;  
92 -@property(nonatomic,assign) unsigned long long uin;  
93 -  
94 -@end  
95 -  
96 -/**  
97 - * 一般多人音视频操作成功回调  
98 - */  
99 -typedef void (^OMMultiSucc)();  
100 -  
101 -/**  
102 - * 一般多人音视频操作失败回调  
103 - *  
104 - * @param code 错误码  
105 - * @param err 错误描述  
106 - */  
107 -typedef void (^OMMultiFail)(int code, NSString * err);  
108 -  
109 -#endif  
@@ -16,9 +16,7 @@ @@ -16,9 +16,7 @@
16 #import "TIMGroupManager.h" 16 #import "TIMGroupManager.h"
17 #import "TIMCallback.h" 17 #import "TIMCallback.h"
18 #import "TIMFriendshipManager.h" 18 #import "TIMFriendshipManager.h"
19 -#import "IMSdkComm.h"  
20 #import "TIMErrorCode.h" 19 #import "TIMErrorCode.h"
21 -#import "IMGroupExt.h"  
22 -#import "IMMessageExt.h"  
23 - 20 +#import "TIMConversation+MsgExt.h"
  21 +#import "TIMManager+MsgExt.h"
24 #endif 22 #endif
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 - (void)onConnFailed:(int)code err:(NSString*)err; 37 - (void)onConnFailed:(int)code err:(NSString*)err;
38 38
39 /** 39 /**
40 - * 网络连接断开(断线只是通知用户,不需要重新登,重连以后会自动上线) 40 + * 网络连接断开(断线只是通知用户,不需要重新登,重连以后会自动上线)
41 * 41 *
42 * @param code 错误码 42 * @param code 错误码
43 * @param err 错误描述 43 * @param err 错误描述
@@ -85,11 +85,11 @@ @@ -85,11 +85,11 @@
85 - (void)onRefresh; 85 - (void)onRefresh;
86 86
87 /** 87 /**
88 - * 刷新部分会话(包括多终端已读上报同步) 88 + * 刷新部分会话
89 * 89 *
90 * @param conversations 会话(TIMConversation*)列表 90 * @param conversations 会话(TIMConversation*)列表
91 */ 91 */
92 -- (void)onRefreshConversations:(NSArray*)conversations; 92 +- (void)onRefreshConversations:(NSArray<TIMConversation *>*)conversations;
93 @end 93 @end
94 94
95 /** 95 /**
@@ -141,7 +141,7 @@ @@ -141,7 +141,7 @@
141 @end 141 @end
142 142
143 /** 143 /**
144 - * 图片上传进度回调 144 + * 上传进度回调
145 */ 145 */
146 @protocol TIMUploadProgressListener <NSObject> 146 @protocol TIMUploadProgressListener <NSObject>
147 @optional 147 @optional
1 -//  
2 -// TIMComm+Group.h  
3 -// IMGroupExt  
4 -//  
5 -// Created by tomzhu on 2017/2/9.  
6 -//  
7 -//  
8 -  
9 -#ifndef TIMComm_Group_h  
10 -#define TIMComm_Group_h  
11 -  
12 -#import "TIMComm.h"  
13 -  
14 -@class TIMGroupPendencyMeta;  
15 -  
16 -#pragma mark - 枚举类型  
17 -  
18 -/**  
19 - * 群基本获取资料标志  
20 - */  
21 -typedef NS_ENUM(NSInteger, TIMGetGroupBaseInfoFlag) {  
22 - /**  
23 - * 不获取群组资料  
24 - */  
25 - TIM_GET_GROUP_BASE_INFO_FLAG_NONE = 0x00,  
26 - /**  
27 - * 获取群组名  
28 - */  
29 - TIM_GET_GROUP_BASE_INFO_FLAG_NAME = 0x01,  
30 - /**  
31 - * 获取创建时间  
32 - */  
33 - TIM_GET_GROUP_BASE_INFO_FLAG_CREATE_TIME = 0x01 << 1,  
34 - /**  
35 - * 获取群主id  
36 - */  
37 - TIM_GET_GROUP_BASE_INFO_FLAG_OWNER_UIN = 0x01 << 2,  
38 - /**  
39 - * (不可用)  
40 - */  
41 - TIM_GET_GROUP_BASE_INFO_FLAG_SEQ = 0x01 << 3,  
42 - /**  
43 - * 获取最近一次修改群信息时间  
44 - */  
45 - TIM_GET_GROUP_BASE_INFO_FLAG_TIME = 0x01 << 4,  
46 - /**  
47 - * (不可用)  
48 - */  
49 - TIM_GET_GROUP_BASE_INFO_FLAG_NEXT_MSG_SEQ = 0x01 << 5,  
50 - /**  
51 - * 获取最近一次发消息时间  
52 - */  
53 - TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG_TIME = 0x01 << 6,  
54 - /**  
55 - * (不可用)  
56 - */  
57 - TIM_GET_GROUP_BASE_INFO_FLAG_APP_ID = 0x01 << 7,  
58 - /**  
59 - * 获取群成员数量  
60 - */  
61 - TIM_GET_GROUP_BASE_INFO_FLAG_MEMBER_NUM = 0x01 << 8,  
62 - /**  
63 - * 获取最大群成员数量  
64 - */  
65 - TIM_GET_GROUP_BASE_INFO_FLAG_MAX_MEMBER_NUM = 0x01 << 9,  
66 - /**  
67 - * 获取群公告  
68 - */  
69 - TIM_GET_GROUP_BASE_INFO_FLAG_NOTIFICATION = 0x01 << 10,  
70 - /**  
71 - * 获取群简介  
72 - */  
73 - TIM_GET_GROUP_BASE_INFO_FLAG_INTRODUCTION = 0x01 << 11,  
74 - /**  
75 - * 获取群头像  
76 - */  
77 - TIM_GET_GROUP_BASE_INFO_FLAG_FACE_URL = 0x01 << 12,  
78 - /**  
79 - * 获取入群类型  
80 - */  
81 - TIM_GET_GROUP_BASE_INFO_FLAG_ADD_OPTION = 0x01 << 13,  
82 - /**  
83 - * 获取群组类型  
84 - */  
85 - TIM_GET_GROUP_BASE_INFO_FLAG_GROUP_TYPE = 0x01 << 14,  
86 - /**  
87 - * 获取最后一条群消息  
88 - */  
89 - TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG = 0x01 << 15,  
90 - /**  
91 - * 获取在线人数  
92 - */  
93 - TIM_GET_GROUP_BASE_INFO_FLAG_ONLINE_NUM = 0x01 << 16,  
94 - /**  
95 - * 获取群成员是否可见标志  
96 - */  
97 - TIM_GET_GROUP_BASE_INFO_VISIBLE = 0x01 << 17,  
98 - /**  
99 - * 获取群是否能被搜到标志  
100 - */  
101 - TIM_GET_GROUP_BASE_INFO_SEARCHABLE = 0x01 << 18,  
102 - /**  
103 - * 获取群全员禁言时间  
104 - */  
105 - TIM_GET_GROUP_BASE_INFO_ALL_SHUTUP = 0x01 << 19  
106 -};  
107 -  
108 -/**  
109 - * 群成员角色过滤方式  
110 - */  
111 -typedef NS_ENUM(NSInteger, TIMGroupMemberFilter) {  
112 - /**  
113 - * 全部成员  
114 - */  
115 - TIM_GROUP_MEMBER_FILTER_ALL = 0x00,  
116 - /**  
117 - * 群主  
118 - */  
119 - TIM_GROUP_MEMBER_FILTER_SUPER = 0x01,  
120 - /**  
121 - * 管理员  
122 - */  
123 - TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02,  
124 - /**  
125 - * 普通成员  
126 - */  
127 - TIM_GROUP_MEMBER_FILTER_COMMON = 0x04,  
128 -};  
129 -  
130 -/**  
131 - * 群成员获取资料标志  
132 - */  
133 -typedef NS_ENUM(NSInteger, TIMGetGroupMemInfoFlag) {  
134 -  
135 - /**  
136 - * 入群时间  
137 - */  
138 - TIM_GET_GROUP_MEM_INFO_FLAG_JOIN_TIME = 0x01,  
139 - /**  
140 - * 消息标志  
141 - */  
142 - TIM_GET_GROUP_MEM_INFO_FLAG_MSG_FLAG = 0x01 << 1,  
143 - /**  
144 - * 角色  
145 - */  
146 - TIM_GET_GROUP_MEM_INFO_FLAG_ROLE_INFO = 0x01 << 3,  
147 - /**  
148 - * 禁言时间  
149 - */  
150 - TIM_GET_GROUP_MEM_INFO_FLAG_SHUTUP_TIME = 0x01 << 4,  
151 - /**  
152 - * 群名片  
153 - */  
154 - TIM_GET_GROUP_MEM_INFO_FLAG_NAME_CARD = 0x01 << 5,  
155 -};  
156 -  
157 -/**  
158 - * 群组操作结果  
159 - */  
160 -typedef NS_ENUM(NSInteger, TIMGroupMemberStatus) {  
161 - /**  
162 - * 操作失败  
163 - */  
164 - TIM_GROUP_MEMBER_STATUS_FAIL = 0,  
165 -  
166 - /**  
167 - * 操作成功  
168 - */  
169 - TIM_GROUP_MEMBER_STATUS_SUCC = 1,  
170 -  
171 - /**  
172 - * 无效操作,加群时已经是群成员,移除群组时不在群内  
173 - */  
174 - TIM_GROUP_MEMBER_STATUS_INVALID = 2,  
175 -  
176 - /**  
177 - * 等待处理,邀请入群时等待对方处理  
178 - */  
179 - TIM_GROUP_MEMBER_STATUS_PENDING = 3,  
180 -};  
181 -  
182 -typedef NS_ENUM(NSInteger, TIMGroupPendencyGetType) {  
183 - /**  
184 - * 申请入群  
185 - */  
186 - TIM_GROUP_PENDENCY_GET_TYPE_JOIN = 0x0,  
187 - /**  
188 - * 邀请入群  
189 - */  
190 - TIM_GROUP_PENDENCY_GET_TYPE_INVITE = 0x1,  
191 -};  
192 -  
193 -typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleStatus) {  
194 - /**  
195 - * 未处理  
196 - */  
197 - TIM_GROUP_PENDENCY_HANDLE_STATUS_UNHANDLED = 0,  
198 - /**  
199 - * 被他人处理  
200 - */  
201 - TIM_GROUP_PENDENCY_HANDLE_STATUS_OTHER_HANDLED = 1,  
202 - /**  
203 - * 被用户处理  
204 - */  
205 - TIM_GROUP_PENDENCY_HANDLE_STATUS_OPERATOR_HANDLED = 2,  
206 -};  
207 -  
208 -typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleResult) {  
209 - /**  
210 - * 拒绝申请  
211 - */  
212 - TIM_GROUP_PENDENCY_HANDLE_RESULT_REFUSE = 0,  
213 - /**  
214 - * 同意申请  
215 - */  
216 - TIM_GROUP_PENDENCY_HANDLE_RESULT_AGREE = 1,  
217 -};  
218 -  
219 -#pragma mark - block回调  
220 -  
221 -/**  
222 - * 群成员列表回调  
223 - *  
224 - * @param members 群成员列表,成员类型 TIMGroupMemberInfo  
225 - */  
226 -typedef void (^TIMGroupMemberSucc)(NSArray * members);  
227 -  
228 -/**  
229 - * 群列表回调  
230 - *  
231 - * @param arr 群列表,成员类型 TIMGroupInfo  
232 - */  
233 -typedef void (^TIMGroupListSucc)(NSArray * arr);  
234 -  
235 -/**  
236 - * 本人群组内成员信息回调  
237 - *  
238 - * @param selfInfo 本人成员信息  
239 - */  
240 -typedef void (^TIMGroupSelfSucc)(TIMGroupMemberInfo * selfInfo);  
241 -  
242 -/**  
243 - * 群接受消息选项回调  
244 - *  
245 - * @param opt 群接受消息选项  
246 - */  
247 -typedef void (^TIMGroupReciveMessageOptSucc)(TIMGroupReceiveMessageOpt opt);  
248 -  
249 -/**  
250 - * 群成员列表回调(分页使用)  
251 - *  
252 - * @param members 群成员(TIMGroupMemberInfo*)列表  
253 - */  
254 -typedef void (^TIMGroupMemberSuccV2)(uint64_t nextSeq, NSArray * members);  
255 -  
256 -/**  
257 - * 群搜索回调  
258 - *  
259 - * @param totalNum 搜索结果的总数  
260 - * @param groups 请求的群列表片段  
261 - */  
262 -typedef void (^TIMGroupSearchSucc)(uint64_t totalNum, NSArray * groups);  
263 -  
264 -/**  
265 - * 获取群组未决请求列表成功  
266 - *  
267 - * @param meta 未决请求元信息  
268 - * @param pendencies 未决请求列表(TIMGroupPendencyItem)数组  
269 - */  
270 -typedef void (^TIMGetGroupPendencyListSucc)(TIMGroupPendencyMeta * meta, NSArray * pendencies);  
271 -  
272 -#pragma mark - 基本类型  
273 -  
274 -/**  
275 - * 创建群参数  
276 - */  
277 -@interface TIMCreateGroupInfo : TIMCodingModel  
278 -  
279 -/**  
280 - * 群组Id,nil则使用系统默认Id  
281 - */  
282 -@property(nonatomic,strong) NSString* group;  
283 -  
284 -/**  
285 - * 群名  
286 - */  
287 -@property(nonatomic,strong) NSString* groupName;  
288 -  
289 -/**  
290 - * 群类型:Private,Public,ChatRoom,AVChatRoom,BChatRoom  
291 - */  
292 -@property(nonatomic,strong) NSString* groupType;  
293 -  
294 -/**  
295 - * 是否设置入群选项,Private类型群组请设置为false  
296 - */  
297 -@property(nonatomic,assign) BOOL setAddOpt;  
298 -  
299 -/**  
300 - * 入群选项  
301 - */  
302 -@property(nonatomic,assign) TIMGroupAddOpt addOpt;  
303 -  
304 -/**  
305 - * 最大成员数,填0则系统使用默认值  
306 - */  
307 -@property(nonatomic,assign) uint32_t maxMemberNum;  
308 -  
309 -/**  
310 - * 群公告  
311 - */  
312 -@property(nonatomic,strong) NSString* notification;  
313 -  
314 -/**  
315 - * 群简介  
316 - */  
317 -@property(nonatomic,strong) NSString* introduction;  
318 -  
319 -/**  
320 - * 群头像  
321 - */  
322 -@property(nonatomic,strong) NSString* faceURL;  
323 -  
324 -/**  
325 - * 自定义字段集合,key是NSString*类型,value是NSData*类型  
326 - */  
327 -@property(nonatomic,strong) NSDictionary* customInfo;  
328 -  
329 -/**  
330 - * 创建成员(TIMCreateGroupMemberInfo*)列表  
331 - */  
332 -@property(nonatomic,strong) NSArray* membersInfo;  
333 -  
334 -@end  
335 -  
336 -/**  
337 - * 未决请求选项  
338 - */  
339 -@interface TIMGroupPendencyOption : TIMCodingModel  
340 -  
341 -/**  
342 - * 拉取的起始时间 0:拉取最新的  
343 - */  
344 -@property(nonatomic,assign) uint64_t timestamp;  
345 -  
346 -/**  
347 - * 每页的数量  
348 - */  
349 -@property(nonatomic,assign) uint32_t numPerPage;  
350 -@end  
351 -  
352 -/**  
353 - * 未决请求元信息  
354 - */  
355 -@interface TIMGroupPendencyMeta : TIMCodingModel  
356 -  
357 -/**  
358 - * 下一次拉取的起始时间戳  
359 - */  
360 -@property(nonatomic,assign) uint64_t nextStartTime;  
361 -  
362 -/**  
363 - * 已读时间戳大小  
364 - */  
365 -@property(nonatomic,assign) uint64_t readTimeSeq;  
366 -  
367 -/**  
368 - * 未决未读数  
369 - */  
370 -@property(nonatomic,assign) uint32_t unReadCnt;  
371 -  
372 -@end  
373 -  
374 -/**  
375 - * 创建群组时的成员信息  
376 - */  
377 -@interface TIMCreateGroupMemberInfo : TIMCodingModel  
378 -  
379 -/**  
380 - * 被操作成员  
381 - */  
382 -@property(nonatomic,strong) NSString* member;  
383 -  
384 -/**  
385 - * 成员类型  
386 - */  
387 -@property(nonatomic,assign) TIMGroupMemberRole role;  
388 -  
389 -/**  
390 - * 自定义字段集合,key是NSString*类型,value是NSData*类型  
391 - */  
392 -@property(nonatomic,strong) NSDictionary* customInfo;  
393 -  
394 -@end  
395 -  
396 -/**  
397 - * 成员操作返回值  
398 - */  
399 -@interface TIMGroupMemberResult : NSObject  
400 -  
401 -/**  
402 - * 被操作成员  
403 - */  
404 -@property(nonatomic,strong) NSString* member;  
405 -/**  
406 - * 返回状态  
407 - */  
408 -@property(nonatomic,assign) TIMGroupMemberStatus status;  
409 -  
410 -@end  
411 -  
412 -/**  
413 - * 未决申请  
414 - */  
415 -@interface TIMGroupPendencyItem : TIMCodingModel  
416 -  
417 -/**  
418 - * 相关群组id  
419 - */  
420 -@property(nonatomic,strong) NSString* groupId;  
421 -  
422 -/**  
423 - * 请求者id,请求加群:请求者,邀请加群:邀请人  
424 - */  
425 -@property(nonatomic,strong) NSString* fromUser;  
426 -  
427 -/**  
428 - * 判决者id,请求加群:0,邀请加群:被邀请人  
429 - */  
430 -@property(nonatomic,strong) NSString* toUser;  
431 -  
432 -/**  
433 - * 未决添加时间  
434 - */  
435 -@property(nonatomic,assign) uint64_t addTime;  
436 -  
437 -/**  
438 - * 未决请求类型  
439 - */  
440 -@property(nonatomic,assign) TIMGroupPendencyGetType getType;  
441 -  
442 -/**  
443 - * 已决标志  
444 - */  
445 -@property(nonatomic,assign) TIMGroupPendencyHandleStatus handleStatus;  
446 -  
447 -/**  
448 - * 已决结果  
449 - */  
450 -@property(nonatomic,assign) TIMGroupPendencyHandleResult handleResult;  
451 -  
452 -/**  
453 - * 申请或邀请附加信息  
454 - */  
455 -@property(nonatomic,strong) NSString* requestMsg;  
456 -  
457 -/**  
458 - * 审批信息:同意或拒绝信息  
459 - */  
460 -@property(nonatomic,strong) NSString* handledMsg;  
461 -  
462 -  
463 -/**  
464 - * 同意申请  
465 - *  
466 - * @param msg 同意理由,选填  
467 - * @param succ 成功回调  
468 - * @param fail 失败回调,返回错误码和错误描述  
469 - */  
470 --(void) accept:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;  
471 -  
472 -/**  
473 - * 拒绝申请  
474 - *  
475 - * @param msg 拒绝理由,选填  
476 - * @param succ 成功回调  
477 - * @param fail 失败回调,返回错误码和错误描述  
478 - */  
479 --(void) refuse:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;  
480 -  
481 -  
482 -/**  
483 - * 用户自己的id  
484 - */  
485 -@property(nonatomic,strong) NSString* selfIdentifier;  
486 -  
487 -@end  
488 -  
489 -#endif /* TIMComm_Group_h */  
1 -//  
2 -// TIMComm+MsgExt.h  
3 -// IMMessageExt  
4 -//  
5 -// Created by tomzhu on 2017/1/11.  
6 -//  
7 -//  
8 -  
9 -#ifndef TIMComm_MsgExt_h  
10 -#define TIMComm_MsgExt_h  
11 -  
12 -#import <Foundation/Foundation.h>  
13 -#import "TIMComm.h"  
14 -  
15 -@class TIMSendToUsersDetailInfo;  
16 -  
17 -#pragma mark - 枚举类型  
18 -  
19 -typedef NS_ENUM(NSInteger, TIM_SNS_SYSTEM_TYPE){  
20 - /**  
21 - * 增加好友消息  
22 - */  
23 - TIM_SNS_SYSTEM_ADD_FRIEND = 0x01,  
24 - /**  
25 - * 删除好友消息  
26 - */  
27 - TIM_SNS_SYSTEM_DEL_FRIEND = 0x02,  
28 - /**  
29 - * 增加好友申请  
30 - */  
31 - TIM_SNS_SYSTEM_ADD_FRIEND_REQ = 0x03,  
32 - /**  
33 - * 删除未决申请  
34 - */  
35 - TIM_SNS_SYSTEM_DEL_FRIEND_REQ = 0x04,  
36 - /**  
37 - * 黑名单添加  
38 - */  
39 - TIM_SNS_SYSTEM_ADD_BLACKLIST = 0x05,  
40 - /**  
41 - * 黑名单删除  
42 - */  
43 - TIM_SNS_SYSTEM_DEL_BLACKLIST = 0x06,  
44 - /**  
45 - * 未决已读上报  
46 - */  
47 - TIM_SNS_SYSTEM_PENDENCY_REPORT = 0x07,  
48 - /**  
49 - * 关系链资料变更  
50 - */  
51 - TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE = 0x08,  
52 - /**  
53 - * 推荐数据增加  
54 - */  
55 - TIM_SNS_SYSTEM_ADD_RECOMMEND = 0x09,  
56 - /**  
57 - * 推荐数据删除  
58 - */  
59 - TIM_SNS_SYSTEM_DEL_RECOMMEND = 0x0a,  
60 - /**  
61 - * 已决增加  
62 - */  
63 - TIM_SNS_SYSTEM_ADD_DECIDE = 0x0b,  
64 - /**  
65 - * 已决删除  
66 - */  
67 - TIM_SNS_SYSTEM_DEL_DECIDE = 0x0c,  
68 - /**  
69 - * 推荐已读上报  
70 - */  
71 - TIM_SNS_SYSTEM_RECOMMEND_REPORT = 0x0d,  
72 - /**  
73 - * 已决已读上报  
74 - */  
75 - TIM_SNS_SYSTEM_DECIDE_REPORT = 0x0e,  
76 -  
77 -  
78 -};  
79 -  
80 -/**  
81 - * 资料变更  
82 - */  
83 -typedef NS_ENUM(NSInteger, TIM_PROFILE_SYSTEM_TYPE){  
84 - /**  
85 - 好友资料变更  
86 - */  
87 - TIM_PROFILE_SYSTEM_FRIEND_PROFILE_CHANGE = 0x01,  
88 -};  
89 -  
90 -#pragma mark - block回调  
91 -  
92 -typedef void (^TIMSendToUsersFail)(int code, NSString *err, TIMSendToUsersDetailInfo *detailInfo);  
93 -  
94 -#pragma mark - 基本类型  
95 -  
96 -/**  
97 - * 发送消息给多用户的失败回调信息  
98 - */  
99 -@interface TIMSendToUsersDetailInfo : NSObject  
100 -/**  
101 - * 发送消息成功的目标用户数  
102 - */  
103 -@property(nonatomic,assign) uint32_t succCnt;  
104 -/**  
105 - * 发送消息失败的目标用户数  
106 - */  
107 -@property(nonatomic,assign) uint32_t failCnt;  
108 -/**  
109 - * 失败信息(TIMSendToUsersErrInfo*)列表  
110 - */  
111 -@property(nonatomic,strong) NSArray *errInofs;  
112 -@end  
113 -  
114 -/**  
115 - * 发送消息给多用户的失败信息  
116 - */  
117 -@interface TIMSendToUsersErrInfo : NSObject  
118 -/**  
119 - * 发送消息失败的目标用户id  
120 - */  
121 -@property(nonatomic,strong) NSString *identifier;  
122 -/**  
123 - * 错误码  
124 - */  
125 -@property(nonatomic,assign) int code;  
126 -/**  
127 - * 错误描述  
128 - */  
129 -@property(nonatomic,strong) NSString *err;  
130 -@end  
131 -  
132 -/**  
133 - * 关系链变更详细信息  
134 - */  
135 -@interface TIMSNSChangeInfo : NSObject  
136 -  
137 -/**  
138 - * 用户 identifier  
139 - */  
140 -@property(nonatomic,strong) NSString * identifier;  
141 -  
142 -/**  
143 - * 用户昵称  
144 - */  
145 -@property(nonatomic,strong) NSString * nickname;  
146 -  
147 -/**  
148 - * 申请添加时有效,添加理由  
149 - */  
150 -@property(nonatomic,strong) NSString * wording;  
151 -  
152 -/**  
153 - * 申请时填写,添加来源  
154 - */  
155 -@property(nonatomic,strong) NSString * source;  
156 -  
157 -  
158 -/**  
159 - * 备注 type=TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE 有效  
160 - */  
161 -@property(nonatomic,strong) NSString * remark;  
162 -  
163 -@end  
164 -  
165 -#endif /* TIMComm_MsgExt_h */  
@@ -33,6 +33,14 @@ @@ -33,6 +33,14 @@
33 @class TIMGroupMemberInfoOption; 33 @class TIMGroupMemberInfoOption;
34 @class TIMFriendProfileOption; 34 @class TIMFriendProfileOption;
35 @class TIMFriendResult; 35 @class TIMFriendResult;
  36 +@class TIMCheckFriendResult;
  37 +@class TIMGroupPendencyMeta;
  38 +@class TIMCreateGroupMemberInfo;
  39 +@class TIMSendToUsersDetailInfo;
  40 +@class TIMGroupInfo;
  41 +@class TIMGroupInfoResult;
  42 +@class TIMGroupMemberInfo;
  43 +@class TIMGroupPendencyItem;
36 44
37 #pragma mark - 枚举类型 45 #pragma mark - 枚举类型
38 46
@@ -87,12 +95,12 @@ typedef NS_ENUM(NSInteger, TIMConversationType) { @@ -87,12 +95,12 @@ typedef NS_ENUM(NSInteger, TIMConversationType) {
87 * C2C 类型 95 * C2C 类型
88 */ 96 */
89 TIM_C2C = 1, 97 TIM_C2C = 1,
90 - 98 +
91 /** 99 /**
92 * 群聊 类型 100 * 群聊 类型
93 */ 101 */
94 TIM_GROUP = 2, 102 TIM_GROUP = 2,
95 - 103 +
96 /** 104 /**
97 * 系统消息 105 * 系统消息
98 */ 106 */
@@ -218,22 +226,50 @@ typedef NS_ENUM(NSInteger, TIM_IMAGE_FORMAT){ @@ -218,22 +226,50 @@ typedef NS_ENUM(NSInteger, TIM_IMAGE_FORMAT){
218 */ 226 */
219 typedef NS_ENUM(NSInteger, TIMLoginStatus) { 227 typedef NS_ENUM(NSInteger, TIMLoginStatus) {
220 /** 228 /**
221 - * 已登 229 + * 已登
222 */ 230 */
223 TIM_STATUS_LOGINED = 1, 231 TIM_STATUS_LOGINED = 1,
224 - 232 +
225 /** 233 /**
226 - * 登 234 + * 登
227 */ 235 */
228 TIM_STATUS_LOGINING = 2, 236 TIM_STATUS_LOGINING = 2,
229 - 237 +
230 /** 238 /**
231 - * 无登 239 + * 无登
232 */ 240 */
233 TIM_STATUS_LOGOUT = 3, 241 TIM_STATUS_LOGOUT = 3,
234 }; 242 };
235 243
236 /** 244 /**
  245 + * 推送规则
  246 + */
  247 +typedef NS_ENUM(NSInteger, TIMOfflinePushFlag) {
  248 + /**
  249 + * 按照默认规则进行推送
  250 + */
  251 + TIM_OFFLINE_PUSH_DEFAULT = 0,
  252 + /**
  253 + * 不进行推送
  254 + */
  255 + TIM_OFFLINE_PUSH_NO_PUSH = 1,
  256 +};
  257 +
  258 +/**
  259 + * 安卓离线推送模式
  260 + */
  261 +typedef NS_ENUM(NSInteger, TIMAndroidOfflinePushNotifyMode) {
  262 + /**
  263 + * 通知栏消息
  264 + */
  265 + TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_NOTIFICATION = 0x00,
  266 + /**
  267 + * 不弹窗,由应用自行处理
  268 + */
  269 + TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_CUSTOM = 0x01,
  270 +};
  271 +
  272 +/**
237 * 群组成员是否可见 273 * 群组成员是否可见
238 */ 274 */
239 typedef NS_ENUM(NSInteger, TIMGroupMemberVisibleType) { 275 typedef NS_ENUM(NSInteger, TIMGroupMemberVisibleType) {
@@ -277,12 +313,12 @@ typedef NS_ENUM(NSInteger, TIMGroupAddOpt) { @@ -277,12 +313,12 @@ typedef NS_ENUM(NSInteger, TIMGroupAddOpt) {
277 * 禁止加群 313 * 禁止加群
278 */ 314 */
279 TIM_GROUP_ADD_FORBID = 0, 315 TIM_GROUP_ADD_FORBID = 0,
280 - 316 +
281 /** 317 /**
282 * 需要管理员审批 318 * 需要管理员审批
283 */ 319 */
284 TIM_GROUP_ADD_AUTH = 1, 320 TIM_GROUP_ADD_AUTH = 1,
285 - 321 +
286 /** 322 /**
287 * 任何人可以加入 323 * 任何人可以加入
288 */ 324 */
@@ -391,6 +427,10 @@ typedef NS_ENUM(NSInteger, TIM_GROUP_INFO_CHANGE_TYPE){ @@ -391,6 +427,10 @@ typedef NS_ENUM(NSInteger, TIM_GROUP_INFO_CHANGE_TYPE){
391 * 群主变更 427 * 群主变更
392 */ 428 */
393 TIM_GROUP_INFO_CHANGE_GROUP_OWNER = 0x05, 429 TIM_GROUP_INFO_CHANGE_GROUP_OWNER = 0x05,
  430 + /**
  431 + * 群自定义字段变更
  432 + */
  433 + TIM_GROUP_INFO_CHANGE_GROUP_CUSTOM = 0x06,
394 }; 434 };
395 435
396 /** 436 /**
@@ -460,56 +500,238 @@ typedef NS_ENUM(NSInteger, TIM_GROUP_SYSTEM_TYPE){ @@ -460,56 +500,238 @@ typedef NS_ENUM(NSInteger, TIM_GROUP_SYSTEM_TYPE){
460 }; 500 };
461 501
462 /** 502 /**
463 - * 推送规则 503 + * 群成员角色
464 */ 504 */
465 -typedef NS_ENUM(NSInteger, TIMOfflinePushFlag) { 505 +typedef NS_ENUM(NSInteger, TIMGroupMemberRole) {
466 /** 506 /**
467 - * 按照默认规则进行推送 507 + * 未定义(没有获取该字段)
468 */ 508 */
469 - TIM_OFFLINE_PUSH_DEFAULT = 0, 509 + TIM_GROUP_MEMBER_UNDEFINED = 0,
  510 +
470 /** 511 /**
471 - * 不进行推送 512 + * 群成员
472 */ 513 */
473 - TIM_OFFLINE_PUSH_NO_PUSH = 1, 514 + TIM_GROUP_MEMBER_ROLE_MEMBER = 200,
  515 +
  516 + /**
  517 + * 群管理员
  518 + */
  519 + TIM_GROUP_MEMBER_ROLE_ADMIN = 300,
  520 +
  521 + /**
  522 + * 群主
  523 + */
  524 + TIM_GROUP_MEMBER_ROLE_SUPER = 400,
474 }; 525 };
475 526
476 /** 527 /**
477 - * 安卓离线推送模式 528 + * 群基本获取资料标志
478 */ 529 */
479 -typedef NS_ENUM(NSInteger, TIMAndroidOfflinePushNotifyMode) { 530 +typedef NS_ENUM(NSInteger, TIMGetGroupBaseInfoFlag) {
480 /** 531 /**
481 - * 通知栏消息 532 + * 不获取群组资料
482 */ 533 */
483 - TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_NOTIFICATION = 0x00, 534 + TIM_GET_GROUP_BASE_INFO_FLAG_NONE = 0x00,
484 /** 535 /**
485 - * 不弹窗,由应用自行处理 536 + * 获取群组名
486 */ 537 */
487 - TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_CUSTOM = 0x01, 538 + TIM_GET_GROUP_BASE_INFO_FLAG_NAME = 0x01,
  539 + /**
  540 + * 获取创建时间
  541 + */
  542 + TIM_GET_GROUP_BASE_INFO_FLAG_CREATE_TIME = 0x01 << 1,
  543 + /**
  544 + * 获取群主id
  545 + */
  546 + TIM_GET_GROUP_BASE_INFO_FLAG_OWNER_UIN = 0x01 << 2,
  547 + /**
  548 + * (不可用)
  549 + */
  550 + TIM_GET_GROUP_BASE_INFO_FLAG_SEQ = 0x01 << 3,
  551 + /**
  552 + * 获取最近一次修改群信息时间
  553 + */
  554 + TIM_GET_GROUP_BASE_INFO_FLAG_TIME = 0x01 << 4,
  555 + /**
  556 + * (不可用)
  557 + */
  558 + TIM_GET_GROUP_BASE_INFO_FLAG_NEXT_MSG_SEQ = 0x01 << 5,
  559 + /**
  560 + * 获取最近一次发消息时间
  561 + */
  562 + TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG_TIME = 0x01 << 6,
  563 + /**
  564 + * (不可用)
  565 + */
  566 + TIM_GET_GROUP_BASE_INFO_FLAG_APP_ID = 0x01 << 7,
  567 + /**
  568 + * 获取群成员数量
  569 + */
  570 + TIM_GET_GROUP_BASE_INFO_FLAG_MEMBER_NUM = 0x01 << 8,
  571 + /**
  572 + * 获取最大群成员数量
  573 + */
  574 + TIM_GET_GROUP_BASE_INFO_FLAG_MAX_MEMBER_NUM = 0x01 << 9,
  575 + /**
  576 + * 获取群公告
  577 + */
  578 + TIM_GET_GROUP_BASE_INFO_FLAG_NOTIFICATION = 0x01 << 10,
  579 + /**
  580 + * 获取群简介
  581 + */
  582 + TIM_GET_GROUP_BASE_INFO_FLAG_INTRODUCTION = 0x01 << 11,
  583 + /**
  584 + * 获取群头像
  585 + */
  586 + TIM_GET_GROUP_BASE_INFO_FLAG_FACE_URL = 0x01 << 12,
  587 + /**
  588 + * 获取入群类型
  589 + */
  590 + TIM_GET_GROUP_BASE_INFO_FLAG_ADD_OPTION = 0x01 << 13,
  591 + /**
  592 + * 获取群组类型
  593 + */
  594 + TIM_GET_GROUP_BASE_INFO_FLAG_GROUP_TYPE = 0x01 << 14,
  595 + /**
  596 + * 获取最后一条群消息
  597 + */
  598 + TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG = 0x01 << 15,
  599 + /**
  600 + * 获取在线人数
  601 + */
  602 + TIM_GET_GROUP_BASE_INFO_FLAG_ONLINE_NUM = 0x01 << 16,
  603 + /**
  604 + * 获取群成员是否可见标志
  605 + */
  606 + TIM_GET_GROUP_BASE_INFO_VISIBLE = 0x01 << 17,
  607 + /**
  608 + * 获取群是否能被搜到标志
  609 + */
  610 + TIM_GET_GROUP_BASE_INFO_SEARCHABLE = 0x01 << 18,
  611 + /**
  612 + * 获取群全员禁言时间
  613 + */
  614 + TIM_GET_GROUP_BASE_INFO_ALL_SHUTUP = 0x01 << 19
488 }; 615 };
489 616
490 /** 617 /**
491 - * 群成员角色 618 + * 群成员角色过滤方式
492 */ 619 */
493 -typedef NS_ENUM(NSInteger, TIMGroupMemberRole) { 620 +typedef NS_ENUM(NSInteger, TIMGroupMemberFilter) {
494 /** 621 /**
495 - * 未定义(没有获取该字段) 622 + * 全部成员
496 */ 623 */
497 - TIM_GROUP_MEMBER_UNDEFINED = 0,  
498 - 624 + TIM_GROUP_MEMBER_FILTER_ALL = 0x00,
499 /** 625 /**
500 - * 群成员 626 + * 群
501 */ 627 */
502 - TIM_GROUP_MEMBER_ROLE_MEMBER = 200,  
503 - 628 + TIM_GROUP_MEMBER_FILTER_SUPER = 0x01,
504 /** 629 /**
505 - * 管理员 630 + * 管理员
506 */ 631 */
507 - TIM_GROUP_MEMBER_ROLE_ADMIN = 300,  
508 - 632 + TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02,
509 /** 633 /**
510 - * 群主 634 + * 普通成员
511 */ 635 */
512 - TIM_GROUP_MEMBER_ROLE_SUPER = 400, 636 + TIM_GROUP_MEMBER_FILTER_COMMON = 0x04,
  637 +};
  638 +
  639 +/**
  640 + * 群成员获取资料标志
  641 + */
  642 +typedef NS_ENUM(NSInteger, TIMGetGroupMemInfoFlag) {
  643 +
  644 + /**
  645 + * 入群时间
  646 + */
  647 + TIM_GET_GROUP_MEM_INFO_FLAG_JOIN_TIME = 0x01,
  648 + /**
  649 + * 消息标志
  650 + */
  651 + TIM_GET_GROUP_MEM_INFO_FLAG_MSG_FLAG = 0x01 << 1,
  652 + /**
  653 + * 角色
  654 + */
  655 + TIM_GET_GROUP_MEM_INFO_FLAG_ROLE_INFO = 0x01 << 3,
  656 + /**
  657 + * 禁言时间
  658 + */
  659 + TIM_GET_GROUP_MEM_INFO_FLAG_SHUTUP_TIME = 0x01 << 4,
  660 + /**
  661 + * 群名片
  662 + */
  663 + TIM_GET_GROUP_MEM_INFO_FLAG_NAME_CARD = 0x01 << 5,
  664 +};
  665 +
  666 +/**
  667 + * 群组操作结果
  668 + */
  669 +typedef NS_ENUM(NSInteger, TIMGroupMemberStatus) {
  670 + /**
  671 + * 操作失败
  672 + */
  673 + TIM_GROUP_MEMBER_STATUS_FAIL = 0,
  674 +
  675 + /**
  676 + * 操作成功
  677 + */
  678 + TIM_GROUP_MEMBER_STATUS_SUCC = 1,
  679 +
  680 + /**
  681 + * 无效操作,加群时已经是群成员,移除群组时不在群内
  682 + */
  683 + TIM_GROUP_MEMBER_STATUS_INVALID = 2,
  684 +
  685 + /**
  686 + * 等待处理,邀请入群时等待对方处理
  687 + */
  688 + TIM_GROUP_MEMBER_STATUS_PENDING = 3,
  689 +};
  690 +
  691 +/**
  692 + * 群组未决请求类型
  693 + */
  694 +typedef NS_ENUM(NSInteger, TIMGroupPendencyGetType) {
  695 + /**
  696 + * 申请入群
  697 + */
  698 + TIM_GROUP_PENDENCY_GET_TYPE_JOIN = 0x0,
  699 + /**
  700 + * 邀请入群
  701 + */
  702 + TIM_GROUP_PENDENCY_GET_TYPE_INVITE = 0x1,
  703 +};
  704 +
  705 +/**
  706 + * 群组已决标志
  707 + */
  708 +typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleStatus) {
  709 + /**
  710 + * 未处理
  711 + */
  712 + TIM_GROUP_PENDENCY_HANDLE_STATUS_UNHANDLED = 0,
  713 + /**
  714 + * 被他人处理
  715 + */
  716 + TIM_GROUP_PENDENCY_HANDLE_STATUS_OTHER_HANDLED = 1,
  717 + /**
  718 + * 被用户处理
  719 + */
  720 + TIM_GROUP_PENDENCY_HANDLE_STATUS_OPERATOR_HANDLED = 2,
  721 +};
  722 +
  723 +/**
  724 + * 群组已决结果
  725 + */
  726 +typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleResult) {
  727 + /**
  728 + * 拒绝申请
  729 + */
  730 + TIM_GROUP_PENDENCY_HANDLE_RESULT_REFUSE = 0,
  731 + /**
  732 + * 同意申请
  733 + */
  734 + TIM_GROUP_PENDENCY_HANDLE_RESULT_AGREE = 1,
513 }; 735 };
514 736
515 /** 737 /**
@@ -520,12 +742,12 @@ typedef NS_ENUM(NSInteger, TIMFriendAllowType) { @@ -520,12 +742,12 @@ typedef NS_ENUM(NSInteger, TIMFriendAllowType) {
520 * 同意任何用户加好友 742 * 同意任何用户加好友
521 */ 743 */
522 TIM_FRIEND_ALLOW_ANY = 0, 744 TIM_FRIEND_ALLOW_ANY = 0,
523 - 745 +
524 /** 746 /**
525 * 需要验证 747 * 需要验证
526 */ 748 */
527 TIM_FRIEND_NEED_CONFIRM = 1, 749 TIM_FRIEND_NEED_CONFIRM = 1,
528 - 750 +
529 /** 751 /**
530 * 拒绝任何人加好友 752 * 拒绝任何人加好友
531 */ 753 */
@@ -548,9 +770,56 @@ typedef NS_ENUM(NSInteger, TIMGender) { @@ -548,9 +770,56 @@ typedef NS_ENUM(NSInteger, TIMGender) {
548 * 女性 770 * 女性
549 */ 771 */
550 TIM_GENDER_FEMALE = 2, 772 TIM_GENDER_FEMALE = 2,
551 - 773 +
552 }; 774 };
553 775
  776 +/**
  777 + * 操作类型
  778 + */
  779 +typedef NS_ENUM(NSInteger, TIM_SNS_SYSTEM_TYPE){
  780 + /**
  781 + * 增加好友消息
  782 + */
  783 + TIM_SNS_SYSTEM_ADD_FRIEND = 0x01,
  784 + /**
  785 + * 删除好友消息
  786 + */
  787 + TIM_SNS_SYSTEM_DEL_FRIEND = 0x02,
  788 + /**
  789 + * 增加好友申请
  790 + */
  791 + TIM_SNS_SYSTEM_ADD_FRIEND_REQ = 0x03,
  792 + /**
  793 + * 删除未决申请
  794 + */
  795 + TIM_SNS_SYSTEM_DEL_FRIEND_REQ = 0x04,
  796 + /**
  797 + * 黑名单添加
  798 + */
  799 + TIM_SNS_SYSTEM_ADD_BLACKLIST = 0x05,
  800 + /**
  801 + * 黑名单删除
  802 + */
  803 + TIM_SNS_SYSTEM_DEL_BLACKLIST = 0x06,
  804 + /**
  805 + * 未决已读上报
  806 + */
  807 + TIM_SNS_SYSTEM_PENDENCY_REPORT = 0x07,
  808 + /**
  809 + * 关系链资料变更
  810 + */
  811 + TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE = 0x08,
  812 +};
  813 +
  814 +/**
  815 + * 资料变更
  816 + */
  817 +typedef NS_ENUM(NSInteger, TIM_PROFILE_SYSTEM_TYPE){
  818 + /**
  819 + 好友资料变更
  820 + */
  821 + TIM_PROFILE_SYSTEM_FRIEND_PROFILE_CHANGE = 0x01,
  822 +};
554 823
555 #pragma mark - block 回调 824 #pragma mark - block 回调
556 825
@@ -583,7 +852,7 @@ typedef void (^TIMFail)(int code, NSString * msg); @@ -583,7 +852,7 @@ typedef void (^TIMFail)(int code, NSString * msg);
583 typedef void (^TIMProgress)(NSInteger curSize, NSInteger totalSize); 852 typedef void (^TIMProgress)(NSInteger curSize, NSInteger totalSize);
584 853
585 /** 854 /**
586 - * 登成功回调 855 + * 登成功回调
587 */ 856 */
588 typedef void (^TIMLoginSucc)(void); 857 typedef void (^TIMLoginSucc)(void);
589 858
@@ -658,6 +927,74 @@ typedef void (^TIMFriendResultSucc)(TIMFriendResult *result); @@ -658,6 +927,74 @@ typedef void (^TIMFriendResultSucc)(TIMFriendResult *result);
658 */ 927 */
659 typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); 928 typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
660 929
  930 +/**
  931 + * 检查好友操作回调
  932 + *
  933 + * @param results 检查结果
  934 + */
  935 +typedef void (^TIMCheckFriendResultArraySucc)(NSArray<TIMCheckFriendResult *> *results);
  936 +
  937 +
  938 +/**
  939 + * 群成员列表回调
  940 + *
  941 + * @param members 群成员列表
  942 + */
  943 +typedef void (^TIMGroupMemberSucc)(NSArray * members);
  944 +
  945 +/**
  946 + * 群列表结果回调
  947 + *
  948 + * @param groupList 群列表结果
  949 + */
  950 +typedef void (^TIMGroupListSucc)(NSArray* groupList);
  951 +
  952 +/**
  953 + * 本人群组内成员信息回调
  954 + *
  955 + * @param selfInfo 本人成员信息
  956 + */
  957 +typedef void (^TIMGroupSelfSucc)(TIMGroupMemberInfo * selfInfo);
  958 +
  959 +/**
  960 + * 群接受消息选项回调
  961 + *
  962 + * @param opt 群接受消息选项
  963 + */
  964 +typedef void (^TIMGroupReciveMessageOptSucc)(TIMGroupReceiveMessageOpt opt);
  965 +
  966 +/**
  967 + * 群成员列表回调(分页使用)
  968 + *
  969 + * @param members 群成员(TIMGroupMemberInfo*)列表
  970 + */
  971 +typedef void (^TIMGroupMemberSuccV2)(uint64_t nextSeq, NSArray * members);
  972 +
  973 +/**
  974 + * 群搜索回调
  975 + *
  976 + * @param totalNum 搜索结果的总数
  977 + * @param groups 请求的群列表片段
  978 + */
  979 +typedef void (^TIMGroupSearchSucc)(uint64_t totalNum, NSArray * groups);
  980 +
  981 +/**
  982 + * 获取群组未决请求列表成功
  983 + *
  984 + * @param meta 未决请求元信息
  985 + * @param pendencies 未决请求列表(TIMGroupPendencyItem)数组
  986 + */
  987 +typedef void (^TIMGetGroupPendencyListSucc)(TIMGroupPendencyMeta * meta, NSArray<TIMGroupPendencyItem *> * pendencies);
  988 +
  989 +/**
  990 + * 发送消息给多个用户失败
  991 + *
  992 + * @param code 错误码
  993 + * @param err 错误信息
  994 + * @param detailInfo 错误详情
  995 + */
  996 +typedef void (^TIMSendToUsersFail)(int code, NSString *err, TIMSendToUsersDetailInfo *detailInfo);
  997 +
661 #pragma mark - 基本类型 998 #pragma mark - 基本类型
662 999
663 /// 实现 NSCoding 协议 1000 /// 实现 NSCoding 协议
@@ -677,11 +1014,8 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -677,11 +1014,8 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
677 ///用户标识接入 SDK 的应用 ID,必填 1014 ///用户标识接入 SDK 的应用 ID,必填
678 @property(nonatomic,assign) int sdkAppId; 1015 @property(nonatomic,assign) int sdkAppId;
679 1016
680 -///用户的账号类型,必填  
681 -@property(nonatomic,strong) NSString * accountType;  
682 -  
683 -///禁用 crash 上报,默认上报 (方法已废弃,客户需要自己集成 Crash 上报逻辑)  
684 -@property(nonatomic,assign) BOOL disableCrashReport DEPRECATED_ATTRIBUTE; 1017 +///用户的账号类型,新版本不需要再填写
  1018 +//@property(nonatomic,strong) NSString * accountType;
685 1019
686 ///禁止在控制台打印 log 1020 ///禁止在控制台打印 log
687 @property(nonatomic,assign) BOOL disableLogPrint; 1021 @property(nonatomic,assign) BOOL disableLogPrint;
@@ -689,10 +1023,10 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -689,10 +1023,10 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
689 ///本地写 log 文件的等级,默认 DEBUG 等级 1023 ///本地写 log 文件的等级,默认 DEBUG 等级
690 @property(nonatomic,assign) TIMLogLevel logLevel; 1024 @property(nonatomic,assign) TIMLogLevel logLevel;
691 1025
692 -///log 文件路径,不设置时为默认路径 1026 +///log 文件路径,不设置时为默认路径,可以通过 TIMManager -> getLogPath 获取 log 路径
693 @property(nonatomic,strong) NSString * logPath; 1027 @property(nonatomic,strong) NSString * logPath;
694 1028
695 -///回调给 log 函数的 log 等级,默认 DEBUG 等级 1029 +///回调给 logFunc 函数的 log 等级,默认 DEBUG 等级
696 @property(nonatomic,assign) TIMLogLevel logFuncLevel; 1030 @property(nonatomic,assign) TIMLogLevel logFuncLevel;
697 1031
698 ///log 监听函数 1032 ///log 监听函数
@@ -701,65 +1035,59 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -701,65 +1035,59 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
701 ///消息数据库路径,不设置时为默认路径 1035 ///消息数据库路径,不设置时为默认路径
702 @property(nonatomic,strong) NSString * dbPath; 1036 @property(nonatomic,strong) NSString * dbPath;
703 1037
704 -///网络监听器  
705 -@property(nonatomic,strong) id<TIMConnListener> connListener; 1038 +///网络监听器,监听网络连接成功失败的状态
  1039 +@property(nonatomic,weak) id<TIMConnListener> connListener;
706 1040
707 @end 1041 @end
708 1042
709 /// 设置用户配置信息 1043 /// 设置用户配置信息
710 @interface TIMUserConfig : NSObject 1044 @interface TIMUserConfig : NSObject
711 1045
712 -///禁用本地存储(暂未实现)  
713 -//@property(nonatomic,assign) BOOL disableStorage; 1046 +///禁用本地存储(AVChatRoom,BChatRoom 消息数量很大,出于程序性能的考虑,默认不存本地)
  1047 +@property(nonatomic,assign) BOOL disableStorage;
714 1048
715 -///禁止消息已读自动上报,一旦禁用自动上报,需要开发者显式调用 setReadMessage ,详情请参考官网文档 [未读消息计数](https://cloud.tencent.com/document/product/269/9151) 1049 +///默认情况下,出于性能考虑,当用户在终端 A 收到未读消息后,Server 默认会删除未读消息,但如果用户切换到终端 B 后,IM SDK 无法再同步到未读消息,未读计数也不会增加,如果需要在终端 B 下也有未读,请设置 disableAutoReport 为 YES,这个时候 Server 不会再主动删除未读消息。注意一旦这这样设置,开发者需要主动调用 TIMConversation.h -> setReadMessage ,否则未读消息会一直存在 Server,IM SDK 每次登录或则断网重连都会再次同步到未读消息,详情请参考官方文档 [自动已读上报](https://cloud.tencent.com/document/product/269/9151)。
716 @property(nonatomic,assign) BOOL disableAutoReport; 1050 @property(nonatomic,assign) BOOL disableAutoReport;
717 1051
718 -///开启 C2C 已读回执,只针对 C2C 消息生效,用户开启已读回执功能后,对方调用 setReadMessage 时会同步已读信息到本客户端,您可以在 TIMMessageReceiptListener 监听消息已读回执 1052 +///已读回执是自己发出去的消息,对方设置为已读后,自己能收到已读的回调,只针对单聊(C2C)会话生效,默认是关闭的,如果需要开启,请设置 enableReadReceipt 为 YES,收到消息的用户需要显式调用 TIMConversation.h -> setReadMessage,发消息的用户才能通过 TIMMessageReceiptListener 监听到消息的已读回执。
719 @property(nonatomic,assign) BOOL enableReadReceipt; 1053 @property(nonatomic,assign) BOOL enableReadReceipt;
720 1054
721 -///不开启最近联系人(暂未实现)  
722 -//@property(nonatomic,assign) BOOL disableRecnetContact;  
723 -  
724 -///不通过 onNewMessage: 抛出最近联系人的最后一条消息(暂未实现)  
725 -//@property(nonatomic,assign) BOOL disableRecentContactNotify;  
726 -  
727 -///设置默认拉取的群组资料 1055 +///设置默认拉取的群组资料,如果想要拉取自定义字段,要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段配置对应的 "自定义字段" 和用户操作权限,控制台配置之后 5 分钟后才会生效。
728 @property(nonatomic,strong) TIMGroupInfoOption * groupInfoOpt; 1056 @property(nonatomic,strong) TIMGroupInfoOption * groupInfoOpt;
729 1057
730 -///设置默认拉取的群成员资料 1058 +///设置默认拉取的群成员资料,如果想要拉取自定义字段,要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群成员维度自定义字段配置对应的 "自定义字段" 和用户操作权限,控制台配置之后 5 分钟后才会生效。
731 @property(nonatomic,strong) TIMGroupMemberInfoOption * groupMemberInfoOpt; 1059 @property(nonatomic,strong) TIMGroupMemberInfoOption * groupMemberInfoOpt;
732 1060
733 ///关系链参数 1061 ///关系链参数
734 @property(nonatomic,strong) TIMFriendProfileOption * friendProfileOpt; 1062 @property(nonatomic,strong) TIMFriendProfileOption * friendProfileOpt;
735 1063
736 -///用户登录状态监听器  
737 -@property(nonatomic,strong) id<TIMUserStatusListener> userStatusListener; 1064 +///用户登录状态监听器,用于监听用户被踢,断网重连失败,userSig 过期的通知
  1065 +@property(nonatomic,weak) id<TIMUserStatusListener> userStatusListener;
738 1066
739 -///会话刷新监听器(未读计数、已读同步)  
740 -@property(nonatomic,strong) id<TIMRefreshListener> refreshListener; 1067 +///会话刷新监听器,用于监听会话的刷新
  1068 +@property(nonatomic,weak) id<TIMRefreshListener> refreshListener;
741 1069
742 -///消息已读回执监听器  
743 -@property(nonatomic,strong) id<TIMMessageReceiptListener> messageReceiptListener; 1070 +///消息已读回执监听器,用于监听消息已读回执,enableReadReceipt 字段需要设置为 YES
  1071 +@property(nonatomic,weak) id<TIMMessageReceiptListener> messageReceiptListener;
744 1072
745 -///消息 svr 重写监听器  
746 -@property(nonatomic,strong) id<TIMMessageUpdateListener> messageUpdateListener; 1073 +///消息修改监听器,用于监听消息状态的变化
  1074 +@property(nonatomic,weak) id<TIMMessageUpdateListener> messageUpdateListener;
747 1075
748 -///消息撤回监听器  
749 -@property(nonatomic,strong) id<TIMMessageRevokeListener> messageRevokeListener; 1076 +///消息撤回监听器,用于监听会话中的消息撤回通知
  1077 +@property(nonatomic,weak) id<TIMMessageRevokeListener> messageRevokeListener;
750 1078
751 -///文件上传进度监听器  
752 -@property(nonatomic,strong) id<TIMUploadProgressListener> uploadProgressListener; 1079 +///文件上传进度监听器,发送语音,图片,视频,文件消息的时候需要先上传对应文件到服务器,这里可以监听上传进度
  1080 +@property(nonatomic,weak) id<TIMUploadProgressListener> uploadProgressListener;
753 1081
754 ///群组事件通知监听器 1082 ///群组事件通知监听器
755 -@property(nonatomic,strong) id<TIMGroupEventListener> groupEventListener; 1083 +@property(nonatomic,weak) id<TIMGroupEventListener> groupEventListener;
756 1084
757 ///关系链数据本地缓存监听器 1085 ///关系链数据本地缓存监听器
758 -@property(nonatomic,strong) id<TIMFriendshipListener> friendshipListener; 1086 +@property(nonatomic,weak) id<TIMFriendshipListener> friendshipListener;
759 1087
760 @end 1088 @end
761 1089
762 -/// 登参数 1090 +/// 登参数
763 @interface TIMLoginParam : NSObject 1091 @interface TIMLoginParam : NSObject
764 1092
765 ///用户名 1093 ///用户名
@@ -786,7 +1114,7 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -786,7 +1114,7 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
786 ///Group 消息声音,不设置传入 nil 1114 ///Group 消息声音,不设置传入 nil
787 @property(nonatomic,strong) NSString * groupSound; 1115 @property(nonatomic,strong) NSString * groupSound;
788 1116
789 -///Video 音视频邀请声音,不设置传入 nil 1117 +///Video 音视频邀请声音,不设置传入 nil (暂不支持)
790 @property(nonatomic,strong) NSString * videoSound; 1118 @property(nonatomic,strong) NSString * videoSound;
791 1119
792 @end 1120 @end
@@ -794,7 +1122,7 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -794,7 +1122,7 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
794 /// SetToken 参数 1122 /// SetToken 参数
795 @interface TIMTokenParam : NSObject 1123 @interface TIMTokenParam : NSObject
796 1124
797 -///获取的客户端 Token 信息 1125 +///token 是苹果后台对客户端的唯一标识,需要主动调用系统 API 向苹果请求获取
798 @property(nonatomic,strong) NSData* token; 1126 @property(nonatomic,strong) NSData* token;
799 1127
800 ///业务 ID,传递证书时分配 1128 ///业务 ID,传递证书时分配
@@ -858,6 +1186,9 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -858,6 +1186,9 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
858 ///Android 离线 Push 时声音字段信息 1186 ///Android 离线 Push 时声音字段信息
859 @property(nonatomic,strong) NSString * sound; 1187 @property(nonatomic,strong) NSString * sound;
860 1188
  1189 +///为了保证在 Android 8.0 系统以上的 OPPO 手机上能收到离线推送消息,需要 app 在该手机上创建 channelID,并且设置该参数。
  1190 +@property(nonatomic,strong) NSString * OPPOChannelID;
  1191 +
861 ///离线推送时通知形式 1192 ///离线推送时通知形式
862 @property(nonatomic,assign) TIMAndroidOfflinePushNotifyMode notifyMode; 1193 @property(nonatomic,assign) TIMAndroidOfflinePushNotifyMode notifyMode;
863 1194
@@ -869,11 +1200,33 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -869,11 +1200,33 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
869 ///离线 Push 时声音字段信息 1200 ///离线 Push 时声音字段信息
870 @property(nonatomic,strong) NSString * sound; 1201 @property(nonatomic,strong) NSString * sound;
871 1202
872 -///忽略 badge 计数 1203 +///忽略 badge 计数,如果设置为 YES,在 iOS 接收端,这条消息不会使 APP 的应用图标未读计数增加
873 @property(nonatomic,assign) BOOL ignoreBadge; 1204 @property(nonatomic,assign) BOOL ignoreBadge;
874 1205
875 @end 1206 @end
876 1207
  1208 +/// 填入 sound 字段表示接收时不会播放声音
  1209 +extern NSString * const kIOSOfflinePushNoSound;
  1210 +
  1211 +/// 自定义消息 push
  1212 +@interface TIMOfflinePushInfo : NSObject
  1213 +
  1214 +///自定义消息描述信息,做离线Push时文本展示
  1215 +@property(nonatomic,strong) NSString * desc;
  1216 +
  1217 +///离线 Push 时扩展字段信息
  1218 +@property(nonatomic,strong) NSString * ext;
  1219 +
  1220 +///推送规则标志
  1221 +@property(nonatomic,assign) TIMOfflinePushFlag pushFlag;
  1222 +
  1223 +///iOS离线推送配置
  1224 +@property(nonatomic,strong) TIMIOSOfflinePushConfig * iosConfig;
  1225 +
  1226 +///Android离线推送配置
  1227 +@property(nonatomic,strong) TIMAndroidOfflinePushConfig * androidConfig;
  1228 +@end
  1229 +
877 /// 群组内的本人信息 1230 /// 群组内的本人信息
878 @interface TIMGroupSelfInfo : NSObject 1231 @interface TIMGroupSelfInfo : NSObject
879 1232
@@ -952,10 +1305,20 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -952,10 +1305,20 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
952 @property(nonatomic,strong) TIMGroupSelfInfo* selfInfo; 1305 @property(nonatomic,strong) TIMGroupSelfInfo* selfInfo;
953 1306
954 ///自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型 1307 ///自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型
955 -@property(nonatomic,strong) NSDictionary* customInfo; 1308 +@property(nonatomic,strong) NSDictionary<NSString *,NSData *>* customInfo;
956 1309
957 @end 1310 @end
958 1311
  1312 +/// 获取群组信息结果
  1313 +@interface TIMGroupInfoResult : TIMGroupInfo
  1314 +
  1315 +/// 结果 0:成功;非0:失败
  1316 +@property(nonatomic,assign) int resultCode;
  1317 +
  1318 +/// 结果信息
  1319 +@property(nonatomic,strong) NSString *resultInfo;
  1320 +@end
  1321 +
959 /// 事件上报信息 1322 /// 事件上报信息
960 @interface TIMEventReportItem : NSObject 1323 @interface TIMEventReportItem : NSObject
961 1324
@@ -979,8 +1342,8 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -979,8 +1342,8 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
979 ///需要获取的群组信息标志(TIMGetGroupBaseInfoFlag),默认为0xffffff 1342 ///需要获取的群组信息标志(TIMGetGroupBaseInfoFlag),默认为0xffffff
980 @property(nonatomic,assign) uint64_t groupFlags; 1343 @property(nonatomic,assign) uint64_t groupFlags;
981 1344
982 -///需要获取群组资料的自定义信息(NSString*)列表  
983 -@property(nonatomic,strong) NSArray * groupCustom; 1345 +///需要获取群组资料的自定义信息(NSString*)列表 (接口已废弃,控制台配置群组自定义字段后,SDK 会根据权限自动拉取)
  1346 +@property(nonatomic,strong) NSArray * groupCustom DEPRECATED_ATTRIBUTE;
984 1347
985 @end 1348 @end
986 1349
@@ -988,10 +1351,10 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -988,10 +1351,10 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
988 @interface TIMGroupMemberInfoOption : NSObject 1351 @interface TIMGroupMemberInfoOption : NSObject
989 1352
990 ///需要获取的群成员标志(TIMGetGroupMemInfoFlag),默认为0xffffff 1353 ///需要获取的群成员标志(TIMGetGroupMemInfoFlag),默认为0xffffff
991 -@property(nonatomic,assign) uint64_t memberFlags; 1354 +@property(nonatomic,assign) uint64_t memberFlags ;
992 1355
993 -///需要获取群成员资料的自定义信息(NSString*)列表  
994 -@property(nonatomic,strong) NSArray * memberCustom; 1356 +///需要获取群成员资料的自定义信息(NSString*)列表 (接口已废弃,控制台配置群成员自定义字段后,SDK 会根据权限自动拉取)
  1357 +@property(nonatomic,strong) NSArray * memberCustom DEPRECATED_ATTRIBUTE;
995 1358
996 @end 1359 @end
997 1360
@@ -1016,6 +1379,9 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -1016,6 +1379,9 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
1016 ///自定义字段集合,key 是 NSString*类型,value 是 NSData*类型 1379 ///自定义字段集合,key 是 NSString*类型,value 是 NSData*类型
1017 @property(nonatomic,strong) NSDictionary* customInfo; 1380 @property(nonatomic,strong) NSDictionary* customInfo;
1018 1381
  1382 +///如果是自己,可以获取自己的群接收选项
  1383 +@property(nonatomic,assign) TIMGroupReceiveMessageOpt receiveMessageOpt;
  1384 +
1019 @end 1385 @end
1020 1386
1021 ///资料与关系链 1387 ///资料与关系链
@@ -1029,44 +1395,71 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -1029,44 +1395,71 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
1029 ///用户资料 1395 ///用户资料
1030 @interface TIMUserProfile : TIMCodingModel 1396 @interface TIMUserProfile : TIMCodingModel
1031 1397
1032 -///用户 identifier 1398 +/**
  1399 + * 用户 identifier
  1400 + */
1033 @property(nonatomic,strong) NSString* identifier; 1401 @property(nonatomic,strong) NSString* identifier;
1034 1402
1035 -///用户昵称 1403 +/**
  1404 + * 用户昵称
  1405 + */
1036 @property(nonatomic,strong) NSString* nickname; 1406 @property(nonatomic,strong) NSString* nickname;
1037 1407
1038 -///好友验证方式 1408 +/**
  1409 + * 好友验证方式
  1410 + */
1039 @property(nonatomic,assign) TIMFriendAllowType allowType; 1411 @property(nonatomic,assign) TIMFriendAllowType allowType;
1040 1412
1041 -///用户头像 1413 +/**
  1414 + * 用户头像
  1415 + */
1042 @property(nonatomic,strong) NSString* faceURL; 1416 @property(nonatomic,strong) NSString* faceURL;
1043 1417
1044 -///用户签名 1418 +/**
  1419 + * 用户签名
  1420 + */
1045 @property(nonatomic,strong) NSData* selfSignature; 1421 @property(nonatomic,strong) NSData* selfSignature;
1046 1422
1047 -///用户性别 1423 +/**
  1424 + * 用户性别
  1425 + */
1048 @property(nonatomic,assign) TIMGender gender; 1426 @property(nonatomic,assign) TIMGender gender;
1049 1427
1050 -///用户生日 1428 +/**
  1429 + * 用户生日
  1430 + */
1051 @property(nonatomic,assign) uint32_t birthday; 1431 @property(nonatomic,assign) uint32_t birthday;
1052 1432
1053 -///用户区域 1433 +/**
  1434 + * 用户区域
  1435 + */
1054 @property(nonatomic,strong) NSData* location; 1436 @property(nonatomic,strong) NSData* location;
1055 1437
1056 -///用户语言 1438 +/**
  1439 + * 用户语言
  1440 + */
1057 @property(nonatomic,assign) uint32_t language; 1441 @property(nonatomic,assign) uint32_t language;
1058 1442
1059 -///等级 1443 +/**
  1444 + * 等级
  1445 + */
1060 @property(nonatomic,assign) uint32_t level; 1446 @property(nonatomic,assign) uint32_t level;
1061 1447
1062 -///角色 1448 +/**
  1449 + * 角色
  1450 + */
1063 @property(nonatomic,assign) uint32_t role; 1451 @property(nonatomic,assign) uint32_t role;
1064 1452
1065 -///自定义字段集合,key 是 NSString 类型,value 是 NSData 类型或者 NSNumber 类型(key 值按照后台配置的字符串传入) 1453 +/**
  1454 + * 自定义字段集合,key是NSString类型,value是NSData类型或者NSNumber类型
  1455 + * key值按照后台配置的字符串传入,不包括 TIMProfileTypeKey_Custom_Prefix 前缀
  1456 + */
1066 @property(nonatomic,strong) NSDictionary* customInfo; 1457 @property(nonatomic,strong) NSDictionary* customInfo;
1067 1458
1068 @end 1459 @end
1069 1460
  1461 +typedef void(^ProfileCallBack) (TIMUserProfile * profile);
  1462 +
1070 /** 1463 /**
1071 * 好友 1464 * 好友
1072 */ 1465 */
@@ -1102,12 +1495,300 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results); @@ -1102,12 +1495,300 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
1102 */ 1495 */
1103 @property(nonatomic,assign) uint64_t addTime; 1496 @property(nonatomic,assign) uint64_t addTime;
1104 1497
1105 -///自定义字段集合,key 是 NSString 类型,value 是 NSData 类型或者 NSNumber 类型(key 值按照后台配置的字符串传入) 1498 +/**
  1499 + * 自定义字段集合,key是NSString类型,value是NSData类型或者NSNumber类型
  1500 + * key值按照后台配置的字符串传入,不包括 TIMFriendTypeKey_Custom_Prefix 前缀
  1501 + */
1106 @property(nonatomic,strong) NSDictionary* customInfo; 1502 @property(nonatomic,strong) NSDictionary* customInfo;
1107 1503
1108 -///好友资料 1504 +/**
  1505 + * 好友资料
  1506 + */
1109 @property(nonatomic,strong) TIMUserProfile *profile; 1507 @property(nonatomic,strong) TIMUserProfile *profile;
1110 1508
1111 @end 1509 @end
1112 1510
  1511 +/**
  1512 + * 创建群参数
  1513 + */
  1514 +@interface TIMCreateGroupInfo : TIMCodingModel
  1515 +
  1516 +/**
  1517 + * 群组Id,nil则使用系统默认Id
  1518 + */
  1519 +@property(nonatomic,strong) NSString* group;
  1520 +
  1521 +/**
  1522 + * 群名
  1523 + */
  1524 +@property(nonatomic,strong) NSString* groupName;
  1525 +
  1526 +/**
  1527 + * 群类型:Private,Public,ChatRoom,AVChatRoom,BChatRoom
  1528 + */
  1529 +@property(nonatomic,strong) NSString* groupType;
  1530 +
  1531 +/**
  1532 + * 是否设置入群选项,Private类型群组请设置为false
  1533 + */
  1534 +@property(nonatomic,assign) BOOL setAddOpt;
  1535 +
  1536 +/**
  1537 + * 入群选项
  1538 + */
  1539 +@property(nonatomic,assign) TIMGroupAddOpt addOpt;
  1540 +
  1541 +/**
  1542 + * 最大成员数,填0则系统使用默认值
  1543 + */
  1544 +@property(nonatomic,assign) uint32_t maxMemberNum;
  1545 +
  1546 +/**
  1547 + * 群公告
  1548 + */
  1549 +@property(nonatomic,strong) NSString* notification;
  1550 +
  1551 +/**
  1552 + * 群简介
  1553 + */
  1554 +@property(nonatomic,strong) NSString* introduction;
  1555 +
  1556 +/**
  1557 + * 群头像
  1558 + */
  1559 +@property(nonatomic,strong) NSString* faceURL;
  1560 +
  1561 +/**
  1562 + * 自定义字段集合,key是NSString*类型,value是NSData*类型
  1563 + */
  1564 +@property(nonatomic,strong) NSDictionary* customInfo;
  1565 +
  1566 +/**
  1567 + * 创建成员(TIMCreateGroupMemberInfo*)列表
  1568 + */
  1569 +@property(nonatomic,strong) NSArray <TIMCreateGroupMemberInfo *>* membersInfo;
  1570 +
  1571 +@end
  1572 +
  1573 +/**
  1574 + * 未决请求选项
  1575 + */
  1576 +@interface TIMGroupPendencyOption : TIMCodingModel
  1577 +
  1578 +/**
  1579 + * 拉取的起始时间 0:拉取最新的
  1580 + */
  1581 +@property(nonatomic,assign) uint64_t timestamp;
  1582 +
  1583 +/**
  1584 + * 每页的数量,最大值为 10,设置超过 10,也最多只能拉回 10 条未决
  1585 + */
  1586 +@property(nonatomic,assign) uint32_t numPerPage;
  1587 +@end
  1588 +
  1589 +/**
  1590 + * 未决请求元信息
  1591 + */
  1592 +@interface TIMGroupPendencyMeta : TIMCodingModel
  1593 +
  1594 +/**
  1595 + * 下一次拉取的起始时间戳
  1596 + */
  1597 +@property(nonatomic,assign) uint64_t nextStartTime;
  1598 +
  1599 +/**
  1600 + * 已读时间戳大小
  1601 + */
  1602 +@property(nonatomic,assign) uint64_t readTimeSeq;
  1603 +
  1604 +/**
  1605 + * 未决未读数
  1606 + */
  1607 +@property(nonatomic,assign) uint32_t unReadCnt;
  1608 +
  1609 +@end
  1610 +
  1611 +/**
  1612 + * 创建群组时的成员信息
  1613 + */
  1614 +@interface TIMCreateGroupMemberInfo : TIMCodingModel
  1615 +
  1616 +/**
  1617 + * 被操作成员
  1618 + */
  1619 +@property(nonatomic,strong) NSString* member;
  1620 +
  1621 +/**
  1622 + * 成员类型
  1623 + */
  1624 +@property(nonatomic,assign) TIMGroupMemberRole role;
  1625 +
  1626 +/**
  1627 + * 自定义字段集合,key是NSString*类型,value是NSData*类型
  1628 + */
  1629 +@property(nonatomic,strong) NSDictionary* customInfo;
  1630 +
  1631 +@end
  1632 +
  1633 +/**
  1634 + * 成员操作返回值
  1635 + */
  1636 +@interface TIMGroupMemberResult : NSObject
  1637 +
  1638 +/**
  1639 + * 被操作成员
  1640 + */
  1641 +@property(nonatomic,strong) NSString* member;
  1642 +/**
  1643 + * 返回状态
  1644 + */
  1645 +@property(nonatomic,assign) TIMGroupMemberStatus status;
  1646 +
  1647 +@end
  1648 +
  1649 +/**
  1650 + * 未决申请
  1651 + */
  1652 +@interface TIMGroupPendencyItem : TIMCodingModel
  1653 +
  1654 +/**
  1655 + * 相关群组id
  1656 + */
  1657 +@property(nonatomic,strong) NSString* groupId;
  1658 +
  1659 +/**
  1660 + * 请求者id,请求加群:请求者,邀请加群:邀请人
  1661 + */
  1662 +@property(nonatomic,strong) NSString* fromUser;
  1663 +
  1664 +/**
  1665 + * 判决者id,请求加群:0,邀请加群:被邀请人
  1666 + */
  1667 +@property(nonatomic,strong) NSString* toUser;
  1668 +
  1669 +/**
  1670 + * 未决添加时间
  1671 + */
  1672 +@property(nonatomic,assign) uint64_t addTime;
  1673 +
  1674 +/**
  1675 + * 未决请求类型
  1676 + */
  1677 +@property(nonatomic,assign) TIMGroupPendencyGetType getType;
  1678 +
  1679 +/**
  1680 + * 已决标志
  1681 + */
  1682 +@property(nonatomic,assign) TIMGroupPendencyHandleStatus handleStatus;
  1683 +
  1684 +/**
  1685 + * 已决结果
  1686 + */
  1687 +@property(nonatomic,assign) TIMGroupPendencyHandleResult handleResult;
  1688 +
  1689 +/**
  1690 + * 申请或邀请附加信息
  1691 + */
  1692 +@property(nonatomic,strong) NSString* requestMsg;
  1693 +
  1694 +/**
  1695 + * 审批信息:同意或拒绝信息
  1696 + */
  1697 +@property(nonatomic,strong) NSString* handledMsg;
  1698 +
  1699 +
  1700 +/**
  1701 + * 同意申请
  1702 + *
  1703 + * @param msg 同意理由,选填
  1704 + * @param succ 成功回调
  1705 + * @param fail 失败回调,返回错误码和错误描述
  1706 + */
  1707 +-(void) accept:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  1708 +
  1709 +/**
  1710 + * 拒绝申请
  1711 + *
  1712 + * @param msg 拒绝理由,选填
  1713 + * @param succ 成功回调
  1714 + * @param fail 失败回调,返回错误码和错误描述
  1715 + */
  1716 +-(void) refuse:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  1717 +
  1718 +
  1719 +/**
  1720 + * 用户自己的id
  1721 + */
  1722 +@property(nonatomic,strong) NSString* selfIdentifier;
  1723 +
  1724 +@end
  1725 +
  1726 +/**
  1727 + * 关系链变更详细信息
  1728 + */
  1729 +@interface TIMSNSChangeInfo : NSObject
  1730 +
  1731 +/**
  1732 + * 用户 identifier
  1733 + */
  1734 +@property(nonatomic,strong) NSString * identifier;
  1735 +
  1736 +/**
  1737 + * 用户昵称
  1738 + */
  1739 +@property(nonatomic,strong) NSString * nickname;
  1740 +
  1741 +/**
  1742 + * 申请添加时有效,添加理由
  1743 + */
  1744 +@property(nonatomic,strong) NSString * wording;
  1745 +
  1746 +/**
  1747 + * 申请时填写,添加来源
  1748 + */
  1749 +@property(nonatomic,strong) NSString * source;
  1750 +
  1751 +
  1752 +/**
  1753 + * 备注 type=TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE 有效
  1754 + */
  1755 +@property(nonatomic,strong) NSString * remark;
  1756 +
  1757 +@end
  1758 +
  1759 +/**
  1760 + * 发送消息给多用户的失败回调信息
  1761 + */
  1762 +@interface TIMSendToUsersDetailInfo : NSObject
  1763 +/**
  1764 + * 发送消息成功的目标用户数
  1765 + */
  1766 +@property(nonatomic,assign) uint32_t succCnt;
  1767 +/**
  1768 + * 发送消息失败的目标用户数
  1769 + */
  1770 +@property(nonatomic,assign) uint32_t failCnt;
  1771 +/**
  1772 + * 失败信息(TIMSendToUsersErrInfo*)列表
  1773 + */
  1774 +@property(nonatomic,strong) NSArray *errInofs;
  1775 +@end
  1776 +
  1777 +/**
  1778 + * 发送消息给多用户的失败信息
  1779 + */
  1780 +@interface TIMSendToUsersErrInfo : NSObject
  1781 +/**
  1782 + * 发送消息失败的目标用户id
  1783 + */
  1784 +@property(nonatomic,strong) NSString *identifier;
  1785 +/**
  1786 + * 错误码
  1787 + */
  1788 +@property(nonatomic,assign) int code;
  1789 +/**
  1790 + * 错误描述
  1791 + */
  1792 +@property(nonatomic,strong) NSString *err;
  1793 +@end
1113 #endif 1794 #endif
  1 +/////////////////////////////////////////////////////////////////////
1 // 2 //
2 -// TIMConversation+MsgExt.h  
3 -// IMMessageExt 3 +// 腾讯云通信服务 IMSDK
4 // 4 //
5 -// Created by tomzhu on 2016/12/27. 5 +// 模块名称:TIMConversation + MsgExt
6 // 6 //
  7 +// 模块功能:此处主要存放待废弃的 API 函数,建议您使用 TIMConversation.h 内部声明的接口函数
7 // 8 //
  9 +/////////////////////////////////////////////////////////////////////
8 10
9 #ifndef TIMConversation_h 11 #ifndef TIMConversation_h
10 #define TIMConversation_h 12 #define TIMConversation_h
11 -  
12 #import "TIMConversation.h" 13 #import "TIMConversation.h"
13 -#import "TIMMessage+MsgExt.h"  
14 14
15 -@interface TIMConversation (MsgExt)  
16 15
17 -/**  
18 - * 保存会话消息  
19 - *  
20 - * 保存消息到消息列表,这里只保存在本地。  
21 - *  
22 - * @param msg 消息体  
23 - * @param sender 发送方  
24 - * @param isReaded 是否已读,如果发送方是自己,默认已读  
25 - *  
26 - * @return 0:成功;1:失败  
27 - */  
28 -- (int)saveMessage:(TIMMessage*)msg sender:(NSString*)sender isReaded:(BOOL)isReaded;  
29 -  
30 -/**  
31 - * 获取会话漫游消息  
32 - *  
33 - * 1. 登录后可以获取漫游消息,单聊和群聊消息免费漫游7天,用户有额外消息漫游需求时,可前往 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 消息 ->消息漫游时长 购买,具体资费请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673)。  
34 - * 2. 如果本地消息全部都是连续的,则不会通过网络获取,如果本地消息不连续,会通过网络获取断层消息。  
35 - * 3. 对于图片、语音等资源类消息,消息体只会包含描述信息,需要通过额外的接口下载数据,详情请参考 [消息收发](https://cloud.tencent.com/document/product/269/9150)中的 "消息解析" 部分文档。  
36 - *  
37 - * @param count 获取数量  
38 - * @param last 上次最后一条消息,如果 last 为 nil,从最新的消息开始读取  
39 - * @param succ 成功时回调  
40 - * @param fail 失败时回调  
41 - *  
42 - * @return 0:本次操作成功;1:本次操作失败  
43 - */  
44 -- (int)getMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail; 16 +@interface TIMConversation (MsgExt)
45 17
46 /** 18 /**
47 * 向前获取会话漫游消息 19 * 向前获取会话漫游消息
@@ -58,21 +30,6 @@ @@ -58,21 +30,6 @@
58 - (int)getMessageForward:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail; 30 - (int)getMessageForward:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
59 31
60 /** 32 /**
61 - * 获取本地会话消息  
62 - *  
63 - * 1. 对于单聊,登录后可以获取本地缓存消息  
64 - * 2. 对于群组,开启最近联系人漫游(登录之后 SDK 默认开启,可以通过 TIMUserConfig 里面的 disableRecnetContact 关闭)的情况下,登录后只能获取最近一条消息,可通过 getMessage 获取漫游消息  
65 - *  
66 - * @param count 获取数量  
67 - * @param last 上次最后一条消息  
68 - * @param succ 成功时回调  
69 - * @param fail 失败时回调  
70 - *  
71 - * @return 0:本次操作成功;1:本次操作失败  
72 - */  
73 -- (int)getLocalMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;  
74 -  
75 -/**  
76 * 获取指定会话消息 33 * 获取指定会话消息
77 * 34 *
78 * @param locators 消息定位符(TIMMessageLocator)数组 35 * @param locators 消息定位符(TIMMessageLocator)数组
@@ -84,111 +41,11 @@ @@ -84,111 +41,11 @@
84 - (int)findMessages:(NSArray*)locators succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail; 41 - (int)findMessages:(NSArray*)locators succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
85 42
86 /** 43 /**
87 - * 撤回消息  
88 - *  
89 - * 1. 仅 C2C 和 GROUP 会话有效、onlineMessage 无效、AVChatRoom 和 BChatRoom 无效。  
90 - * 2. 可以在 TIMUserConfig 设置的 TIMMessageRevokeListener 监听 onRevokeMessage 消息撤回回调。  
91 - * 3. 遍历本地消息列表,如果消息的 respondsToLocator 函数返回 YES,则是对应的消息,您可以在 UI 上执行删除操作,具体可以参考 TMessageController.h 里面的 onRevokeMessage 回调的实现。  
92 - *  
93 - * @param msg 被撤回的消息  
94 - * @param succ 成功时回调  
95 - * @param fail 失败时回调  
96 - *  
97 - * @return 0:本次操作成功;1:本次操作失败  
98 - */  
99 -- (int)revokeMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;  
100 -  
101 -/**  
102 - * 同步群的消息撤回通知  
103 - *  
104 - * 针对群组,断线重连后,如果用户处于群组聊天界面,需要业务端主动同步该群组会话的消息撤回通知。其他场景不需要主动同步消息撤回通知。  
105 - *  
106 - * @param succ 成功时回调,同步的通知会通过 TIMMessageRevokeListener 抛出  
107 - * @param fail 失败时回调  
108 - *  
109 - * @return 0 本次操作成功  
110 - */  
111 -- (int)syncRevokeNotify:(TIMSucc)succ fail:(TIMFail)fail;  
112 -  
113 -/**  
114 - * 删除本地会话消息  
115 - *  
116 - * 可以在保留会话同时删除本地的会话消息。  
117 - *  
118 - * @param succ 成功时回调  
119 - * @param fail 失败时回调  
120 - *  
121 - * @return 0 本次操作成功  
122 - */  
123 -- (int)deleteLocalMessage:(TIMSucc)succ fail:(TIMFail)fail;  
124 -  
125 -/**  
126 - * 设置已读消息  
127 - *  
128 - * 1. 如果在 TIMUserConfig 关闭了自动已读上报(设置 disableAutoReport 为 YES),这里需要显示调用 setReadMessage ,消息的已读状态才会改变。  
129 - * 2. 如果在 TIMUserConfig 开启了消息回执(设置 enableReadReceipt 为 YES),收消息的用户需要显示调用 setReadMessage ,发消息的用户才能通过 TIMMessageReceiptListener 监听到消息的已读回执。  
130 - * 3. 如果您需要设置单条消息的已读状态,请使用 TIMMessage+MsgExt.h 中的 setCustomInt 自定义字段接口设置,通过 customInt 获取,需要注意的是,这个接口设置的字段只在本地保存,如果切换了终端,或则 APP 被卸载,这个值都会失效。  
131 - *  
132 - * @param readed 会话内最近一条已读的消息,nil 表示上报最新消息  
133 - *  
134 - * @param succ 成功时回调  
135 - * @param fail 失败时回调  
136 - *  
137 - * @return 0 表示成功  
138 - */  
139 -- (int)setReadMessage:(TIMMessage*)readed succ:(TIMSucc)succ fail:(TIMFail)fail;  
140 -  
141 -/**  
142 - * 获取会话的未读计数  
143 - *  
144 - * 1. 单终端,未卸载 APP 的情况下,您可以通过当前接口获取准确的未读计数。  
145 - * 2. 如果需要在多终端或则程序 APP 卸载重装后未读计数依然准确,请设置 TIMUserConfig 的 disableAutoReport 为 YES,然后显示调用 setReadMessage。详情请参考 [未读消息计数](https://cloud.tencent.com/document/product/269/9151)  
146 - *  
147 - * @return 返回未读计数  
148 - */  
149 -- (int)getUnReadMessageNum;  
150 -  
151 -/**  
152 - * 获取最后一条消息  
153 - *  
154 - * @return 最后一条消息  
155 - */  
156 -- (TIMMessage*)getLastMsg;  
157 -  
158 -/**  
159 - * 将消息导入本地数据库  
160 - *  
161 - * @param msgs 消息(TIMMessage*)列表  
162 - *  
163 - * @return 0:成功;1:失败  
164 - */  
165 -- (int)importMessages:(NSArray*)msgs;  
166 -  
167 -/**  
168 - * 设置会话草稿  
169 - *  
170 - * UI 展示最近联系人列表时,时常会展示用户的草稿内容,ImSDK 提供了设置和获取草稿的接口,用户可以通过此接口设置会话的草稿信息。草稿信息会存本地数据库,重新登录后依然可以获取。  
171 - *  
172 - * @param draft 草稿内容,详情请参考 TIMMessage+MsgExt.h 里面的 TIMMessageDraft 定义  
173 - *  
174 - * @return 0:成功;1:失败  
175 - */  
176 -- (int)setDraft:(TIMMessageDraft*)draft;  
177 -  
178 -/**  
179 - * 获取会话草稿  
180 - *  
181 - * @return 草稿内容,没有草稿返回 nil  
182 - */  
183 -- (TIMMessageDraft*)getDraft;  
184 -  
185 -/**  
186 - * 禁用本会话的存储(暂未实现) 44 + * 获取自己的 id
187 * 45 *
188 - * 1. 需要 initSdk 之后调用  
189 - * 2. 只对当前初始化有效,重启后需要重新设置 46 + * @return 用户 id
190 */ 47 */
191 -- (void)disableStorage; 48 +- (NSString*)getSelfIdentifier;
192 49
193 @end 50 @end
194 51
  1 +/////////////////////////////////////////////////////////////////////
1 // 2 //
2 -// TIMConversation.h  
3 -// ImSDK 3 +// 腾讯云通信服务 IMSDK
4 // 4 //
5 -// Created by bodeng on 28/1/15.  
6 -// Copyright (c) 2015 tencent. All rights reserved. 5 +// 模块名称:TIMConversation 会话模块
7 // 6 //
  7 +// 模块功能:一个会话对应一个聊天窗口,比如跟一个好友的 C2C 聊天叫做一个会话,一个聊天群也叫做一个会话。
  8 +//
  9 +// TIMConversation 提供的接口函数都是围绕消息的相关操作,包括:消息发送、获取历史消息、设置消息已读、撤回和删除等等。
  10 +//
  11 +/////////////////////////////////////////////////////////////////////
8 12
9 #ifndef ImSDK_TIMConversation_h 13 #ifndef ImSDK_TIMConversation_h
10 #define ImSDK_TIMConversation_h 14 #define ImSDK_TIMConversation_h
11 15
12 #import "TIMComm.h" 16 #import "TIMComm.h"
13 #import "TIMCallback.h" 17 #import "TIMCallback.h"
  18 +#import "TIMMessage.h"
14 19
15 @class TIMMessage; 20 @class TIMMessage;
16 21
17 -/**  
18 - * 会话  
19 - */  
20 @interface TIMConversation : NSObject 22 @interface TIMConversation : NSObject
21 23
  24 +#pragma mark 一,发消息
  25 +
  26 +/////////////////////////////////////////////////////////////////////////////////
  27 +//
  28 +// (一)发消息
  29 +//
  30 +/////////////////////////////////////////////////////////////////////////////////
  31 +/// @name 发消息相关接口
  32 +/// @{
22 /** 33 /**
23 - * 发送消息 34 + * 1.1 发送消息
24 * 35 *
25 - * TIMMessage 由多个 TIMElem 组成,每个 TIMElem 可以是文本和图片,也就是说每一条消息可包含多个文本和多张图片。详情请参考官网文档 [消息收发](https://cloud.tencent.com/document/product/269/9150) 36 + * TIMMessage 由多个 TIMElem 组成,一个 TIMElem 可以是一串文本,也可以是一张图片。
  37 + * 虽然说每一条消息都可以包含多个 TIMElem,但这个并不常用,通常您只需要在一个 TIMMessage 塞入一个 TIMElem 即可。
  38 + *
  39 + * 详情请参考官网文档 [消息收发](https://cloud.tencent.com/document/product/269/9150)
26 * 40 *
27 * @param msg 消息体 41 * @param msg 消息体
28 * @param succ 发送成功时回调 42 * @param succ 发送成功时回调
@@ -33,10 +47,15 @@ @@ -33,10 +47,15 @@
33 - (int)sendMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail; 47 - (int)sendMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
34 48
35 /** 49 /**
36 - * 发送在线消息(服务器不保存消息) 50 + * 1.2 发送在线消息(无痕消息)
  51 + *
  52 + * “在线消息”,也可以称为是“无痕消息”。跟普通消息的区别在于:在线消息不会被云服务存储,也不会存储于本地数据库中。
  53 + * 如果接收者在线,可以收到消息,但如果接收者离线,重新上线后也不能通过 getMessage() 接口从历史消息里查到它们。
  54 + *
  55 + * 该类型消息比较适合用作发送广播通知等不重要的提示消息。
37 * 56 *
38 - * 1. 对于某些场景,需要发送在线消息,即用户在线时收到消息,如果用户不在线,下次登录也不会看到消息,可用于通知类消息,这种消息不会进行存储,也不会计入未读计数。发送接口与 sendMessage 类似。  
39 - * 2. 暂不支持 AVChatRoom 和 BChatRoom 类型。 57 + * 1. 在线消息不会被计入未读计数
  58 + * 2. 暂不支持在 AVChatRoom 和 BChatRoom 中发送。
40 * 59 *
41 * @param msg 消息体 60 * @param msg 消息体
42 * @param succ 成功回调 61 * @param succ 成功回调
@@ -46,19 +65,169 @@ @@ -46,19 +65,169 @@
46 */ 65 */
47 - (int)sendOnlineMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail; 66 - (int)sendOnlineMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
48 67
  68 +///@}
  69 +
  70 +#pragma mark 二,获取消息
  71 +/////////////////////////////////////////////////////////////////////////////////
  72 +//
  73 +// (二)获取消息
  74 +//
  75 +/////////////////////////////////////////////////////////////////////////////////
  76 +/// @name 获取消息相关接口
  77 +/// @{
  78 +/**
  79 + * 2.1 从云端拉取历史消息
  80 + *
  81 + * 如果用户的网络正常且登录成功,可以通过该接口拉取历史消息,该接口会返回云端存储的历史消息(最多存储7天)。
  82 + *
  83 + * 1. 单聊和群聊消息会在云端免费存储7天,如果希望存储更长时间,可前往
  84 + * ([IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 消息 ->消息漫游时长)进行购买,
  85 + * 具体资费请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673)。
  86 + *
  87 + * 2. 对于图片、语音等资源类消息,获取到的消息体只会包含描述信息,需要通过额外的接口下载数据,
  88 + * 详情请参考 [消息收发](https://cloud.tencent.com/document/product/269/9150)中的 "消息解析" 部分文档。
  89 + *
  90 + * @param count 获取数量
  91 + * @param last 上次最后一条消息,如果 last 为 nil,从最新的消息开始读取
  92 + * @param succ 成功时回调
  93 + * @param fail 失败时回调
  94 + *
  95 + * @return 0:本次操作成功;1:本次操作失败
  96 + */
  97 +- (int)getMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
  98 +
  99 +/**
  100 + * 2.2 从本地数据库中获取历史消息
  101 + *
  102 + * 如果客户网络异常或登录失败,可以通过该接口获取本地存储的历史消息,调用方法和 getMessage() 一致
  103 + * AVChatRoom,BChatRoom 消息数量很大,出于程序性能的考虑,默认不存本地,不能通过这个接口拉取到对应群消息
  104 + *
  105 + * @param count 获取数量
  106 + * @param last 上次最后一条消息
  107 + * @param succ 成功时回调
  108 + * @param fail 失败时回调
  109 + *
  110 + * @return 0:本次操作成功;1:本次操作失败
  111 + */
  112 +- (int)getLocalMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
  113 +
  114 +/**
  115 + * 2.3 获取当前会话的最后一条消息
  116 + *
  117 + * 可用于“装饰”会话列表,目前大多数 App 的会话列表中都会显示该会话的最后一条消息
  118 + *
  119 + * @return 最后一条消息
  120 + */
  121 +- (TIMMessage*)getLastMsg;
  122 +
  123 +///@}
  124 +
  125 +#pragma mark 三,设置消息已读
  126 +/////////////////////////////////////////////////////////////////////////////////
  127 +//
  128 +// (三)设置消息已读
  129 +//
  130 +/////////////////////////////////////////////////////////////////////////////////
  131 +/// @name 设置消息已读
  132 +/// @{
  133 +/**
  134 + * 3.1 标记消息为已读状态
  135 + *
  136 + * 该接口会标记当前消息以及之前的所有消息为已读状态,标记消息为已读状态会有两个作用:
  137 + * 1. 已经被标记为已读的消息不会重复提醒,下次登录或者换一台终端设备登录 IM 时,都不会再次收到该消息的未读提醒。
  138 + * 2. 如果发送者通过 TIMUserConfig -> enableReadReceipt 开启了 “被阅回执”,接收者在标记已读状态时,发送者会收到“被阅提醒”。
  139 + *
  140 + * @note 该接口尚不支持标记单独一条消息,只能标记一批。即标记当前一条消息,之前的消息也会全被标记为已读状态。
  141 + *
  142 + * @param fromMsg 会话内最近一条已读的消息,nil 表示上报最新消息
  143 + * @param succ 成功时回调
  144 + * @param fail 失败时回调
  145 + *
  146 + * @return 0 表示成功
  147 + */
  148 +- (int)setReadMessage:(TIMMessage*)fromMsg succ:(TIMSucc)succ fail:(TIMFail)fail;
  149 +
  150 +/**
  151 + * 3.2 获取会话的未读消息计数
  152 + *
  153 + * 1. 同一个终端登录,在未卸载 APP 的情况下,您可以通过当前接口获取的未读消息的个数。
  154 + * 2. 如果希望换一台终端也能取到同样的未读计数提醒,或者卸载 APP 再重装,未读计数提醒还能保留卸载前的状态,
  155 + * 就需要设置 TIMUserConfig 的 disableAutoReport 为 YES,这样可以开启多终端同步未读提醒。
  156 + *
  157 + * 详情参考 [未读消息计数](https://cloud.tencent.com/document/product/269/9151)
  158 + *
  159 + * @return 返回未读计数
  160 + */
  161 +- (int)getUnReadMessageNum;
  162 +
  163 +///@}
  164 +
  165 +#pragma mark 四,撤回/删除消息
  166 +/////////////////////////////////////////////////////////////////////////////////
  167 +//
  168 +// (四)撤回/删除消息
  169 +//
  170 +/////////////////////////////////////////////////////////////////////////////////
  171 +/// @name 撤回/删除消息相关接口
  172 +/// @{
  173 +/**
  174 + * 4.1 撤回一条已发送的消息(消息发送后 )
  175 + *
  176 + * 1. 消息撤回的有效时间为2分钟,即消息发出2分钟后不能再撤回。
  177 + * 2. 仅支持 C2C 会话和 GROUP 会话中发送的消息,无法撤销 OnlineMessage,也无法撤销 AVChatRoom 和 BChatRoom 中的消息。
  178 + * 3. 您需要在 TIMUserConfig -> TIMMessageRevokeListener 监听 onRevokeMessage() 消息撤回回调,
  179 + * 如果消息撤回成功,消息的接收方会收到一次 onRevokeMessage:(TIMMessageLocator*) 回调,TIMMessageLocator 相当于一条消息的定位标志。
  180 + * 您可以在已收到的历史消息里进行遍历,通过 TIMMessage 中的 respondsToLocator() 接口进行比对,以便定位到该条消息。
  181 + *
  182 + * @param msg 被撤回的消息
  183 + * @param succ 成功时回调
  184 + * @param fail 失败时回调
  185 + *
  186 + * @return 0:本次操作成功;1:本次操作失败
  187 + */
  188 +- (int)revokeMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  189 +
  190 +/**
  191 + * 4.2 删除当前会话的本地历史消息
  192 + *
  193 + * @param succ 成功时回调
  194 + * @param fail 失败时回调
  195 + *
  196 + * @return 0 本次操作成功
  197 + */
  198 +- (int)deleteLocalMessage:(TIMSucc)succ fail:(TIMFail)fail;
  199 +
  200 +///@}
  201 +
  202 +#pragma mark 五,获取会话信息
  203 +/////////////////////////////////////////////////////////////////////////////////
  204 +//
  205 +// (五)获取会话信息
  206 +//
  207 +/////////////////////////////////////////////////////////////////////////////////
  208 +/// @name 获取会话信息相关接口
  209 +/// @{
  210 +
  211 +/**
  212 + * 5.1 获取会话类型
  213 + *
  214 + * @return 会话类型
  215 + */
  216 +- (TIMConversationType)getType;
  217 +
49 /** 218 /**
50 - * 获取会话人 219 + * 5.2 获取会话 ID
51 * 220 *
52 * C2C:对方账号;Group:群组Id。 221 * C2C:对方账号;Group:群组Id。
53 * 222 *
54 - * 对同一个 C2C 会话或则群聊会话,getReceiver 获取的会话人都是固定的,C2C 获取的是对方账号,Group 获取的是群组 Id。 223 + * 对同一个单聊或则群聊会话,getReceiver 获取的会话 ID 都是固定的,C2C 获取的是对方账号,Group 获取的是群组 Id。
55 * 224 *
56 * @return 会话人 225 * @return 会话人
57 */ 226 */
58 - (NSString*)getReceiver; 227 - (NSString*)getReceiver;
59 228
60 /** 229 /**
61 - * 获取群名称 230 + * 5.3 获取群名称
62 * 231 *
63 * 获取群名称,只有群会话有效。 232 * 获取群名称,只有群会话有效。
64 * 233 *
@@ -66,20 +235,72 @@ @@ -66,20 +235,72 @@
66 */ 235 */
67 - (NSString*)getGroupName; 236 - (NSString*)getGroupName;
68 237
  238 +///@}
  239 +
  240 +#pragma mark 六,草稿箱
  241 +/////////////////////////////////////////////////////////////////////////////////
  242 +//
  243 +// (六)草稿箱
  244 +//
  245 +/////////////////////////////////////////////////////////////////////////////////
  246 +/// @name 草稿箱
  247 +/// @{
  248 +
69 /** 249 /**
70 - * 获取会话类型 250 + * 6.1 添加未编辑完的草稿消息
71 * 251 *
72 - * @return 会话类型 252 + * 在发送消息时,常常会遇到尚未编辑完毕就要切换到其它聊天窗口的情况,这些未编辑完的消息就可以通过 setDraft() 接口存储到草稿箱中。
  253 + * 草稿信息会存本地数据库,重新登录后依然可以获取。
  254 + *
  255 + *
  256 + * @param draft 草稿内容,详情请参考 TIMMessage.h 里面的 TIMMessageDraft 定义
  257 + *
  258 + * @return 0:成功;1:失败
73 */ 259 */
74 -- (TIMConversationType)getType; 260 +- (int)setDraft:(TIMMessageDraft*)draft;
75 261
76 /** 262 /**
77 - * 获取自己的 id 263 + * 6.2 获取未编辑完的草稿消息
  264 + *
  265 + * @return 草稿内容,没有草稿返回 nil
  266 + */
  267 +- (TIMMessageDraft*)getDraft;
  268 +
  269 +///@}
  270 +
  271 +#pragma mark 七,导入消息到会话
  272 +/////////////////////////////////////////////////////////////////////////////////
  273 +//
  274 +// (七)导入消息到会话
  275 +//
  276 +/////////////////////////////////////////////////////////////////////////////////
  277 +/// @name 导入消息到会话相关接口
  278 +/// @{
  279 +/**
  280 + * 7.1 向本地消息列表中添加一条消息,但并不将其发送出去。
  281 + *
  282 + * 该接口主要用于满足向聊天会话中插入一些提示性消息的需求,比如“您已经退出该群”,这类消息有展示
  283 + * 在聊天消息区的需求,但并没有发送给其他人的必要。
  284 + * 所以 saveMessage() 相当于一个被禁用了网络发送能力的 sendMessage() 接口。
  285 + *
  286 + * @param msg 消息体
  287 + * @param sender 发送方
  288 + * @param isRead 是否已读,如果发送方是自己,默认已读
  289 + *
  290 + * @return 0:成功;1:失败
  291 + */
  292 +- (int)saveMessage:(TIMMessage*)msg sender:(NSString*)sender isReaded:(BOOL)isRead;
  293 +
  294 +/**
  295 + * 7.2 将消息导入本地数据库
  296 + *
  297 + * @param msgs 消息(TIMMessage*)列表
78 * 298 *
79 - * @return 用户 id 299 + * @return 0:成功;1:失败
80 */ 300 */
81 -- (NSString*)getSelfIdentifier; 301 +- (int)importMessages:(NSArray*)msgs;
82 302
  303 +///@}
83 @end 304 @end
84 305
85 306
@@ -10,99 +10,396 @@ @@ -10,99 +10,396 @@
10 #define TIMErrorCode_h 10 #define TIMErrorCode_h
11 11
12 enum ERROR_CODE { 12 enum ERROR_CODE {
13 - ERR_SUCC = 0,  
14 - ERR_PARSE_RESPONSE_FAILED = 6001, //解析响应失败  
15 - ERR_SERIALIZE_REQ_FAILED = 6002, //序列化请求失败  
16 - ERR_NO_SUCC_RESULT = 6003, //批量操作无成功结果  
17 - ERR_INVALID_CONVERSATION = 6004, //IM: 无效会话  
18 - ERR_LOADMSG_FAILED = 6005, //IM: 加载本地消息存储失败  
19 - ERR_FILE_TRANS_AUTH_FAILED = 6006, //IM: 文件传输 - 鉴权失败  
20 - ERR_FILE_TRANS_NO_SERVER = 6007, //IM: 文件传输 - 获取svr失败  
21 - ERR_FILE_TRANS_UPLOAD_FAILED = 6008, //IM: 文件传输 - 上传失败  
22 - ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, //IM: 文件传输 - 下载失败  
23 - ERR_HTTP_REQ_FAILED = 6010, //HTTP请求失败  
24 - ERR_TO_USER_INVALID = 6011, //IM: 无效接收方  
25 - ERR_REQUEST_TIMEOUT = 6012, //请求超时  
26 - ERR_SDK_NOT_INITIALIZED = 6013, //SDK未初始化  
27 - ERR_SDK_NOT_LOGGED_IN = 6014, //SDK未登录  
28 - ERR_IN_PROGESS = 6015, //执行中  
29 - ERR_INVALID_MSG_ELEM = 6016, //IM: 无效消息elem  
30 - ERR_INVALID_PARAMETERS = 6017, //API参数无效  
31 - ERR_INIT_CORE_FAIL = 6018, //INIT CORE模块失败  
32 - ERR_DATABASE_OPERATE_FAILED = 6019, //本地数据库操作失败  
33 - ERR_EXPIRED_SESSION_NODE = 6020, //SessionNode为null  
34 - ERR_INVALID_SDK_OBJECT = 6021, //无效的imsdk对象,例如用户自己生成TIMImage,或内部赋值错误导致的sdk对象无效  
35 - ERR_IO_OPERATION_FAILED = 6022, //本地IO操作失败  
36 - ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, //在登录完成前进行了登出(在登录时返回)  
37 - ERR_TLSSDK_NOT_INITIALIZED = 6024, //tlssdk未初始化  
38 - ERR_TLSSDK_USER_NOT_FOUND = 6025, //TLSSDK没有找到相应的用户信息  
39 - ERR_NO_PREVIOUS_LOGIN = 6026, //自动登陆时并没有登陆过该用户  
40 -  
41 - ERR_BIND_FAIL_UNKNOWN = 6100, //QALSDK未知原因BIND失败  
42 - ERR_BIND_FAIL_NO_SSOTICKET = 6101, //缺少SSO票据  
43 - ERR_BIND_FAIL_REPEATD_BIND = 6102, //重复BIND  
44 - ERR_BIND_FAIL_TINYID_NULL = 6103, //tiny为空  
45 - ERR_BIND_FAIL_GUID_NULL = 6104, //guid为空  
46 - ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, //解注册包失败  
47 - ERR_BIND_FAIL_REG_TIMEOUT = 6106, //注册超时  
48 - ERR_BIND_FAIL_ISBINDING = 6107, //正在bind操作中  
49 -  
50 - ERR_PACKET_FAIL_UNKNOWN = 6120, //发包未知错误  
51 - ERR_PACKET_FAIL_REQ_NO_NET = 6121, //发送请求包时没有网络,处理时转换成ERR_REQ_NO_NET_ON_REQ  
52 - ERR_PACKET_FAIL_RESP_NO_NET = 6122, //发送回复包时没有网络,处理时转换成ERR_REQ_NO_NET_ON_RSP  
53 - ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, //发送请求包时没有权限  
54 - ERR_PACKET_FAIL_SSO_ERR = 6124, //SSO错误  
55 - ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, //请求超时,处理时转化成ERR_REQUEST_TIMEOUT  
56 - ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, //回复超时,处理时转化成ERR_REQUEST_TIMEOUT  
57 - ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, //  
58 - ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, //  
59 - ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, //  
60 - ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, //  
61 - ERR_PACKET_FAIL_LOGIC_ERR = 6131,  
62 -  
63 - ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, // proxy_manager没有完成svr数据同步  
64 - ERR_FRIENDSHIP_PROXY_SYNCING = 6151, // proxy_manager正在进行svr数据同步  
65 - ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, // proxy_manager同步失败  
66 - ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, // proxy_manager请求参数,在本地检查不合法  
67 -  
68 - ERR_GROUP_INVALID_FIELD = 6160, // group assistant请求字段中包含非预设字段  
69 - ERR_GROUP_STORAGE_DISABLED = 6161, // group assistant群资料本地存储没有开启  
70 - ERR_LOADGRPINFO_FAILED = 6162, // failed to load groupinfo from storage  
71 -  
72 - ERR_REQ_NO_NET_ON_REQ = 6200, // 请求的时候没有网络  
73 - ERR_REQ_NO_NET_ON_RSP = 6201, // 响应的时候没有网络  
74 - ERR_SERIVCE_NOT_READY = 6205, // QALSDK服务未就绪  
75 - ERR_USER_SIG_EXPIRED = 6206, // 票据过期  
76 - ERR_LOGIN_AUTH_FAILED = 6207, // 账号认证失败(tinyid转换失败)  
77 - ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, // 账号被踢  
78 - ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, // 在应用启动后没有尝试联网  
79 -  
80 - ERR_REQ_FAILED = 6210, // QAL执行失败  
81 - ERR_REQ_INVALID_REQ = 6211, // 请求非法,toMsgService非法  
82 - ERR_REQ_OVERLOADED = 6212, // 请求队列満  
83 - ERR_REQ_KICK_OFF = 6213, // 已经被其他终端踢了  
84 - ERR_REQ_SERVICE_SUSPEND = 6214, // 服务被暂停  
85 - ERR_REQ_INVALID_SIGN = 6215, // SSO签名错误  
86 - ERR_REQ_INVALID_COOKIE = 6216, // SSO cookie无效  
87 - ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, // 登录时TLS回包校验,包体长度错误  
88 - ERR_LOGIN_OPENMSG_TIMEOUT = 6218, // 登录时OPENSTATSVC向OPENMSG上报状态超时  
89 - ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, // 登录时OPENSTATSVC向OPENMSG上报状态时解析回包失败  
90 - ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, // 登录时TLS解密失败  
91 - ERR_WIFI_NEED_AUTH = 6221, // wifi需要认证  
92 -  
93 - ERR_USER_CANCELED = 6222, // 用户已取消  
94 -  
95 - ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, //消息撤回超过了时间限制(默认2分钟)  
96 - ERR_LACK_UGC_EXT = 6224, // 缺少UGC扩展包  
97 - ERR_AUTOLOGIN_NEED_USERSIG = 6226, //自动登录,本地票据过期,需要userSig手动登录  
98 -  
99 -  
100 - ERR_REQ_CONTENT_ATTACK = 80001, // 消息内容安全打击  
101 -  
102 - ERR_LOGIN_SIG_EXPIRE = 70001, // 登陆返回,票据过期  
103 -  
104 - ERR_SDK_HAD_INITIALIZED = 90001, // SDK 已经初始化无需重复初始化  
105 - ERR_OPENBDH_BASE = 115000, // openbdh 错误码基 13 +
  14 + /////////////////////////////////////////////////////////////////////////////////
  15 + //
  16 + // (一)IM SDK 的错误码
  17 + //
  18 + /////////////////////////////////////////////////////////////////////////////////
  19 +
  20 + // 通用错误码
  21 +
  22 + ERR_SUCC = 0, ///< 无错误。
  23 + ERR_IN_PROGESS = 6015, ///< 执行中,请做好接口调用控制,例如,第一次初始化操作在回调前,后续的初始化操作会返回该错误码。
  24 + ERR_INVALID_PARAMETERS = 6017, ///< 参数无效,请检查参数是否符合要求,具体可查看错误信息进一步定义哪个字段。
  25 + ERR_IO_OPERATION_FAILED = 6022, ///< 操作本地 IO 错误,检查是否有读写权限,磁盘是否已满。
  26 + ERR_INVALID_JSON = 6027, ///< 错误的 JSON 格式,请检查参数是否符合接口的要求,具体可查看错误信息进一步定义哪个字段。
  27 + ERR_OUT_OF_MEMORY = 6028, ///< 内存不足,可能存在内存泄漏,iOS 平台使用 Instrument 工具,Android 平台使用 Profiler 工具,分析出什么地方的内存占用高。
  28 + 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) 提供使用接口、错误码、错误信息给客服解决。
  29 + 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) 提供使用接口、错误码、错误信息给客服解决。
  30 + ERR_SDK_NOT_INITIALIZED = 6013, ///< IM SDK 未初始化,初始化成功回调之后重试。
  31 + 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) 联系客服定位具体问题。
  32 + ERR_DATABASE_OPERATE_FAILED = 6019, ///< 本地数据库操作失败,可能是部分目录无权限或者数据库文件已损坏。
  33 + 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) 提供使用接口、错误码、错误信息给客服解决。
  34 + 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) 提供使用接口、错误码、错误信息给客服解决。
  35 + ERR_SDK_COMM_INVALID_IDENTIFIER = 7003, ///< Identifier 非法,必须不为空,要求可打印 ASCII 字符(0x20-0x7e),长度不超过32字节。
  36 + ERR_SDK_COMM_FILE_NOT_FOUND = 7004, ///< 文件不存在,请检查文件路径是否正确。
  37 + ERR_SDK_COMM_FILE_TOO_LARGE = 7005, ///< 文件大小超出了限制,如果上传文件,最大限制是28MB。
  38 + ERR_SDK_COMM_FILE_SIZE_EMPTY = 7006, ///< 空文件,要求文件大小不是0字节,如果上传图片、语音、视频或文件,请检查文件是否正确生成。
  39 + ERR_SDK_COMM_FILE_OPEN_FAILED = 7007, ///< 文件打开失败,请检查文件是否存在,或者已被独占打开,引起 SDK 打开失败。
  40 +
  41 + // 帐号错误码
  42 +
  43 + ERR_SDK_NOT_LOGGED_IN = 6014, ///< IM SDK 未登录,请先登录,成功回调之后重试,或者已被踢下线,可使用 TIMManager getLoginUser 检查当前是否在线。
  44 + ERR_NO_PREVIOUS_LOGIN = 6026, ///< 自动登录时,并没有登录过该用户,这时候请调用 login 接口重新登录。
  45 + ERR_USER_SIG_EXPIRED = 6206, ///< UserSig 过期,请重新获取有效的 UserSig 后再重新登录。
  46 + ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, ///< 其他终端登录同一个帐号,引起已登录的帐号被踢,需重新登录。
  47 + ERR_SDK_ACCOUNT_LOGIN_IN_PROCESS = 7501, ///< 登录正在执行中,例如,第一次 login 或 autoLogin 操作在回调前,后续的 login 或 autoLogin 操作会返回该错误码。
  48 + ERR_SDK_ACCOUNT_LOGOUT_IN_PROCESS = 7502, ///< 登出正在执行中,例如,第一次 logout 操作在回调前,后续的 logout 操作会返回该错误码。
  49 + 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) 提供使用接口、错误码、错误信息给客服解决。
  50 + 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) 提供使用接口、错误码、错误信息给客服解决。
  51 + 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) 提供使用接口、错误码、错误信息给客服解决。
  52 + 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) 提供使用接口、错误码、错误信息给客服解决。
  53 + 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) 提供使用接口、错误码、错误信息给客服解决。
  54 + 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) 提供使用接口、错误码、错误信息给客服解决。
  55 +
  56 + // 消息错误码
  57 +
  58 + ERR_INVALID_CONVERSATION = 6004, ///< 会话无效,getConversation 时检查是否已经登录,如未登录获取会话,会有此错误码返回。
  59 + 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) 提供使用接口、错误码、错误信息给客服解决。
  60 + 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) 提供使用接口、错误码、错误信息给客服解决。
  61 + ERR_FILE_TRANS_UPLOAD_FAILED = 6008, ///< 文件传输上传失败,请检查网络是否连接,如果上传的是图片,确认图片能够正常打开。
  62 + ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, ///< 文件传输下载失败,请检查网络,或者文件、语音是否已经过期,目前资源文件存储7天。
  63 + ERR_HTTP_REQ_FAILED = 6010, ///< HTTP 请求失败,请检查 URL 地址是否合法,可在网页浏览器尝试访问该 URL 地址。
  64 + ERR_INVALID_MSG_ELEM = 6016, ///< IM SDK 无效消息 elem,具体可查看错误信息进一步定义哪个字段。
  65 + ERR_INVALID_SDK_OBJECT = 6021, ///< 无效的对象,例如用户自己生成 TIMImage 对象,或内部赋值错误导致对象无效。
  66 + ERR_SDK_MSG_BODY_SIZE_LIMIT = 8001, ///< 消息长度超出限制,消息长度不要超过8k,消息长度是各个 elem 长度的总和,elem 长度是所有 elem 字段的长度总和。
  67 + ERR_SDK_MSG_KEY_REQ_DIFFER_RSP = 8002, ///< 消息 KEY 错误,内部错误,网络请求包的 KEY 和 回复包的不一致。
  68 +
  69 + // 群组错误码
  70 +
  71 + ERR_SDK_GROUP_INVALID_ID = 8501, ///< 群组 ID 非法,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长48个字节,且前缀不能为 @TGS#(避免与服务端默认分配的群组 ID 混淆)。
  72 + ERR_SDK_GROUP_INVALID_NAME = 8502, ///< 群名称非法,群名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  73 + ERR_SDK_GROUP_INVALID_INTRODUCTION = 8503, ///< 群简介非法,群简介最长240字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  74 + ERR_SDK_GROUP_INVALID_NOTIFICATION = 8504, ///< 群公告非法,群公告最长300字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  75 + ERR_SDK_GROUP_INVALID_FACE_URL = 8505, ///< 群头像 URL 非法,群头像 URL 最长100字节,可在网页浏览器尝试访问该 URL 地址。
  76 + ERR_SDK_GROUP_INVALID_NAME_CARD = 8506, ///< 群名片非法,群名片最长50字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  77 + ERR_SDK_GROUP_MEMBER_COUNT_LIMIT = 8507, ///< 超过群组成员数的限制,在创建群和邀请成员时,指定的成员数超出限制,最大群成员数量:私有群是200人,公开群是2000人,聊天室是10000人,音视频聊天室和在线成员广播大群无限制。
  78 + ERR_SDK_GROUP_JOIN_PRIVATE_GROUP_DENY = 8508, ///< 不允许申请加入 Private 群组,任意群成员可邀请入群,且无需被邀请人同意。
  79 + ERR_SDK_GROUP_INVITE_SUPER_DENY = 8509, ///< 不允许邀请角色为群主的成员,请检查角色字段是否填写正确。
  80 + ERR_SDK_GROUP_INVITE_NO_MEMBER = 8510, ///< 不允许邀请0个成员,请检查成员字段是否填写正确。
  81 +
  82 + // 关系链错误码
  83 +
  84 + ERR_SDK_FRIENDSHIP_INVALID_PROFILE_KEY = 9001, ///< 资料字段非法,资料支持标配字段及自定义字段,其中自定义字段的关键字,必须是英文字母,且长度不得超过8字节,自定义字段的值最长不能超过500字节。
  85 + ERR_SDK_FRIENDSHIP_INVALID_ADD_REMARK = 9002, ///< 备注字段非法,最大96字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  86 + ERR_SDK_FRIENDSHIP_INVALID_ADD_WORDING = 9003, ///< 请求添加好友的请求说明字段非法,最大120字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  87 + ERR_SDK_FRIENDSHIP_INVALID_ADD_SOURCE = 9004, ///< 请求添加好友的添加来源字段非法,来源需要添加“AddSource_Type_”前缀。
  88 + ERR_SDK_FRIENDSHIP_FRIEND_GROUP_EMPTY = 9005, ///< 好友分组字段非法,必须不为空,每个分组的名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  89 +
  90 + // 网络错误码
  91 +
  92 + ERR_SDK_NET_ENCODE_FAILED = 9501, ///< SSO 加密失败,内部错误,可 [提交工单](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) 提供使用接口、错误码、错误信息给客服解决。
  93 + ERR_SDK_NET_DECODE_FAILED = 9502, ///< SSO 解密失败,内部错误,可 [提交工单](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) 提供使用接口、错误码、错误信息给客服解决。
  94 + ERR_SDK_NET_AUTH_INVALID = 9503, ///< SSO 未完成鉴权,可能登录未完成,请在登录完成后再操作。
  95 + ERR_SDK_NET_COMPRESS_FAILED = 9504, ///< 数据包压缩失败,内部错误,可 [提交工单](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) 提供使用接口、错误码、错误信息给客服解决。
  96 + ERR_SDK_NET_UNCOMPRESS_FAILED = 9505, ///< 数据包解压失败,内部错误,可 [提交工单](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) 提供使用接口、错误码、错误信息给客服解决。
  97 + ERR_SDK_NET_FREQ_LIMIT = 9506, ///< 调用频率限制,最大每秒发起 5 次请求。
  98 + ERR_SDK_NET_REQ_COUNT_LIMIT = 9507, ///< 请求队列満,超过同时请求的数量限制,最大同时发起1000个请求。
  99 + ERR_SDK_NET_DISCONNECT = 9508, ///< 网络已断开,未建立连接,或者建立 socket 连接时,检测到无网络。
  100 + ERR_SDK_NET_ALLREADY_CONN = 9509, ///< 网络连接已建立,重复创建连接,内部错误。
  101 + ERR_SDK_NET_CONN_TIMEOUT = 9510, ///< 建立网络连接超时,请等网络恢复后重试。
  102 + ERR_SDK_NET_CONN_REFUSE = 9511, ///< 网络连接已被拒绝,请求过于频繁,服务端拒绝服务。
  103 + ERR_SDK_NET_NET_UNREACH = 9512, ///< 没有到达网络的可用路由,请等网络恢复后重试。
  104 + ERR_SDK_NET_SOCKET_NO_BUFF = 9513, ///< 系统中没有足够的缓冲区空间资源可用来完成调用,系统过于繁忙,内部错误。
  105 + ERR_SDK_NET_RESET_BY_PEER = 9514, ///< 对端重置了连接,可能服务端过载,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
  106 + ERR_SDK_NET_SOCKET_INVALID = 9515, ///< socket 套接字无效,内部错误,可 [提交工单](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) 提供使用接口、错误码、错误信息给客服解决。
  107 + ERR_SDK_NET_HOST_GETADDRINFO_FAILED = 9516, ///< IP 地址解析失败,内部错误,可能是本地 imsdk_config 配置文件被损坏,读取到到 IP 地址非法。
  108 + ERR_SDK_NET_CONNECT_RESET = 9517, ///< 网络连接到中间节点或服务端重置,引起连接失效,内部错误,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
  109 + ERR_SDK_NET_WAIT_INQUEUE_TIMEOUT = 9518, ///< 请求包等待进入待发送队列超时,发送时网络连接建立比较慢 或 频繁断网重连时,会出现该错误,请检查网络连接是否正常。
  110 + ERR_SDK_NET_WAIT_SEND_TIMEOUT = 9519, ///< 请求包已进入待发送队列,等待进入系统的网络 buffer 超时,数据包较多 或 发送线程处理不过来,内部错误。
  111 + ERR_SDK_NET_WAIT_ACK_TIMEOUT = 9520, ///< 请求包已进入系统的网络 buffer ,等待服务端回包超时,可能请求包没离开终端设备、中间路由丢弃、服务端意外丢包或回包被系统网络层丢弃,内部错误。
  112 +
  113 + /////////////////////////////////////////////////////////////////////////////////
  114 + //
  115 + // (二)服务端的错误码
  116 + //
  117 + /////////////////////////////////////////////////////////////////////////////////
  118 +
  119 + // SSO 接入层的错误码
  120 +
  121 + ERR_SVR_SSO_CONNECT_LIMIT = -302 , ///< SSO 的连接数量超出限制,服务端拒绝服务。
  122 + ERR_SVR_SSO_VCODE = -10000, ///< 下发验证码标志错误。
  123 + ERR_SVR_SSO_D2_EXPIRED = -10001, ///< D2 过期。
  124 + ERR_SVR_SSO_A2_UP_INVALID = -10003, ///< A2 校验失败等场景使用。
  125 + ERR_SVR_SSO_A2_DOWN_INVALID = -10004, ///< 处理下行包时发现 A2 验证没通过或者被安全打击。
  126 + ERR_SVR_SSO_EMPTY_KEY = -10005, ///< 不允许空 D2Key 加密。
  127 + ERR_SVR_SSO_UIN_INVALID = -10006, ///< D2 中的 uin 和 SSO 包头的 uin 不匹配。
  128 + ERR_SVR_SSO_VCODE_TIMEOUT = -10007, ///< 验证码下发超时。
  129 + ERR_SVR_SSO_NO_IMEI_AND_A2 = -10008, ///< 需要带上 IMEI 和 A2 。
  130 + ERR_SVR_SSO_COOKIE_INVALID = -10009, ///< Cookie 非法。
  131 + ERR_SVR_SSO_DOWN_TIP = -10101, ///< 下发提示语,D2 过期。
  132 + ERR_SVR_SSO_DISCONNECT = -10102, ///< 断链锁屏。
  133 + ERR_SVR_SSO_IDENTIFIER_INVALID = -10103, ///< 失效身份。
  134 + ERR_SVR_SSO_CLIENT_CLOSE = -10104, ///< 终端自动退出。
  135 + ERR_SVR_SSO_MSFSDK_QUIT = -10105, ///< MSFSDK 自动退出。
  136 + ERR_SVR_SSO_D2KEY_WRONG = -10106, ///< SSO D2key 解密失败次数太多,通知终端需要重置,重新刷新 D2 。
  137 + ERR_SVR_SSO_UNSURPPORT = -10107, ///< 不支持聚合,给终端返回统一的错误码。终端在该 TCP 长连接上停止聚合。
  138 + ERR_SVR_SSO_PREPAID_ARREARS = -10108, ///< 预付费欠费。
  139 + ERR_SVR_SSO_PACKET_WRONG = -10109, ///< 请求包格式错误。
  140 + ERR_SVR_SSO_APPID_BLACK_LIST = -10110, ///< SDKAppID 黑名单。
  141 + ERR_SVR_SSO_CMD_BLACK_LIST = -10111, ///< SDKAppID 设置 service cmd 黑名单。
  142 + ERR_SVR_SSO_APPID_WITHOUT_USING = -10112, ///< SDKAppID 停用。
  143 + ERR_SVR_SSO_FREQ_LIMIT = -10113, ///< 频率限制(用户),频率限制是设置针对某一个协议的每秒请求数的限制。
  144 + ERR_SVR_SSO_OVERLOAD = -10114, ///< 过载丢包(系统),连接的服务端处理过多请求,处理不过来,拒绝服务。
  145 +
  146 + // 资源文件错误码
  147 +
  148 + ERR_SVR_RES_NOT_FOUND = 114000, ///< 要发送的资源文件不存在。
  149 + ERR_SVR_RES_ACCESS_DENY = 114001, ///< 要发送的资源文件不允许访问。
  150 + ERR_SVR_RES_SIZE_LIMIT = 114002, ///< 文件大小超过限制。
  151 + ERR_SVR_RES_SEND_CANCEL = 114003, ///< 用户取消发送,如发送过程中登出等原因。
  152 + ERR_SVR_RES_READ_FAILED = 114004, ///< 读取文件内容失败。
  153 + ERR_SVR_RES_TRANSFER_TIMEOUT = 114005, ///< 资源文件(如图片、文件、语音、视频)传输超时,一般是网络问题导致。
  154 + ERR_SVR_RES_INVALID_PARAMETERS = 114011, ///< 参数非法。
  155 + ERR_SVR_RES_INVALID_FILE_MD5 = 115066, ///< 文件 MD5 校验失败。
  156 + ERR_SVR_RES_INVALID_PART_MD5 = 115068, ///< 分片 MD5 校验失败。
  157 +
  158 + // 后台公共错误码
  159 +
  160 + ERR_SVR_COMM_INVALID_HTTP_URL = 60002, ///< HTTP 解析错误 ,请检查 HTTP 请求 URL 格式。
  161 + ERR_SVR_COMM_REQ_JSON_PARSE_FAILED = 60003, ///< HTTP 请求 JSON 解析错误,请检查 JSON 格式。
  162 + ERR_SVR_COMM_INVALID_ACCOUNT = 60004, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
  163 + ERR_SVR_COMM_INVALID_ACCOUNT_EX = 60005, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
  164 + ERR_SVR_COMM_INVALID_SDKAPPID = 60006, ///< SDKAppID 失效,请核对 SDKAppID 有效性。
  165 + ERR_SVR_COMM_REST_FREQ_LIMIT = 60007, ///< REST 接口调用频率超过限制,请降低请求频率。
  166 + ERR_SVR_COMM_REQUEST_TIMEOUT = 60008, ///< 服务请求超时或 HTTP 请求格式错误,请检查并重试。
  167 + ERR_SVR_COMM_INVALID_RES = 60009, ///< 请求资源错误,请检查请求 URL。
  168 + ERR_SVR_COMM_ID_NOT_ADMIN = 60010, ///< REST API 请求的 Identifier 字段请填写 App 管理员帐号。
  169 + ERR_SVR_COMM_SDKAPPID_FREQ_LIMIT = 60011, ///< SDKAppID 请求频率超限,请降低请求频率。
  170 + ERR_SVR_COMM_SDKAPPID_MISS = 60012, ///< REST 接口需要带 SDKAppID,请检查请求 URL 中的 SDKAppID。
  171 + ERR_SVR_COMM_RSP_JSON_PARSE_FAILED = 60013, ///< HTTP 响应包 JSON 解析错误。
  172 + ERR_SVR_COMM_EXCHANGE_ACCOUNT_TIMEUT = 60014, ///< 置换帐号超时。
  173 + ERR_SVR_COMM_INVALID_ID_FORMAT = 60015, ///< 请求包体 Identifier 类型错误,请确认 Identifier 为字符串格式。
  174 + 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) 联系客服确认。
  175 + 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) 联系客服确认。
  176 + ERR_SVR_COMM_REQ_FREQ_LIMIT = 60018, ///< 请求过于频繁,请稍后重试。
  177 + ERR_SVR_COMM_REQ_FREQ_LIMIT_EX = 60019, ///< 请求过于频繁,请稍后重试。
  178 + ERR_SVR_COMM_INVALID_SERVICE = 60020, ///< 未购买套餐包或购买的套餐包正在配置中暂未生效,请五分钟后再次尝试。
  179 + ERR_SVR_COMM_SENSITIVE_TEXT = 80001, ///< 文本安全打击,文本中可能包含敏感词汇。
  180 + ERR_SVR_COMM_BODY_SIZE_LIMIT = 80002, ///< 发消息包体过长,目前支持最大8k消息包体长度,请减少包体大小重试。
  181 +
  182 + // 帐号错误码
  183 +
  184 + ERR_SVR_ACCOUNT_USERSIG_EXPIRED = 70001, ///< UserSig 已过期,请重新生成 UserSig,建议 UserSig 有效期不小于24小时。
  185 + ERR_SVR_ACCOUNT_USERSIG_EMPTY = 70002, ///< UserSig 长度为0,请检查传入的 UserSig 是否正确。
  186 + ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED = 70003, ///< UserSig 校验失败,请确认下 UserSig 内容是否被截断,如缓冲区长度不够导致的内容截断。
  187 + ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED_EX = 70005, ///< UserSig 校验失败,可用工具自行验证生成的 UserSig 是否正确。
  188 + ERR_SVR_ACCOUNT_USERSIG_MISMATCH_PUBLICKEY = 70009, ///< 用公钥验证 UserSig 失败,请确认生成的 UserSig 使用的私钥和 SDKAppID 是否对应。
  189 + ERR_SVR_ACCOUNT_USERSIG_MISMATCH_ID = 70013, ///< 请求的 Identifier 与生成 UserSig 的 Identifier 不匹配。
  190 + ERR_SVR_ACCOUNT_USERSIG_MISMATCH_SDKAPPID = 70014, ///< 请求的 SDKAppID 与生成 UserSig 的 SDKAppID 不匹配。
  191 + 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) 。
  192 + ERR_SVR_ACCOUNT_SDKAPPID_NOT_FOUND = 70020, ///< SDKAppID 未找到,请在云通信 IM 控制台确认应用信息。
  193 + ERR_SVR_ACCOUNT_INVALID_USERSIG = 70052, ///< UserSig 已经失效,请重新生成,再次尝试。
  194 + ERR_SVR_ACCOUNT_NOT_FOUND = 70107, ///< 请求的用户帐号不存在。
  195 + ERR_SVR_ACCOUNT_SEC_RSTR = 70114, ///< 安全原因被限制。
  196 + ERR_SVR_ACCOUNT_INTERNAL_TIMEOUT = 70169, ///< 服务端内部超时,请重试。
  197 + ERR_SVR_ACCOUNT_INVALID_COUNT = 70206, ///< 请求中批量数量不合法。
  198 + ERR_SVR_ACCOUNT_INVALID_PARAMETERS = 70402, ///< 参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。
  199 + ERR_SVR_ACCOUNT_ADMIN_REQUIRED = 70403, ///< 请求需要 App 管理员权限。
  200 + ERR_SVR_ACCOUNT_FREQ_LIMIT = 70050, ///< 因失败且重试次数过多导致被限制,请检查 UserSig 是否正确,一分钟之后再试。
  201 + ERR_SVR_ACCOUNT_BLACKLIST = 70051, ///< 帐号被拉入黑名单。
  202 + ERR_SVR_ACCOUNT_COUNT_LIMIT = 70398, ///< 创建帐号数量超过免费体验版数量限制,请升级为专业版。
  203 + ERR_SVR_ACCOUNT_INTERNAL_ERROR = 70500, ///< 服务端内部错误,请重试。
  204 +
  205 + // 资料错误码
  206 +
  207 + ERR_SVR_PROFILE_INVALID_PARAMETERS = 40001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
  208 + ERR_SVR_PROFILE_ACCOUNT_MISS = 40002, ///< 请求参数错误,没有指定需要拉取资料的用户帐号。
  209 + ERR_SVR_PROFILE_ACCOUNT_NOT_FOUND = 40003, ///< 请求的用户帐号不存在。
  210 + ERR_SVR_PROFILE_ADMIN_REQUIRED = 40004, ///< 请求需要 App 管理员权限。
  211 + ERR_SVR_PROFILE_SENSITIVE_TEXT = 40005, ///< 资料字段中包含敏感词。
  212 + ERR_SVR_PROFILE_INTERNAL_ERROR = 40006, ///< 服务端内部错误,请稍后重试。
  213 + 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) 。
  214 + 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) 。
  215 + ERR_SVR_PROFILE_TAG_NOT_FOUND = 40009, ///< 资料字段的 Tag 不存在。
  216 + ERR_SVR_PROFILE_SIZE_LIMIT = 40601, ///< 资料字段的 Value 长度超过500字节。
  217 + 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) 。
  218 + 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) 。
  219 +
  220 + // 关系链错误码
  221 +
  222 + ERR_SVR_FRIENDSHIP_INVALID_PARAMETERS = 30001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
  223 + ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID = 30002, ///< SDKAppID 不匹配。
  224 + ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND = 30003, ///< 请求的用户帐号不存在。
  225 + ERR_SVR_FRIENDSHIP_ADMIN_REQUIRED = 30004, ///< 请求需要 App 管理员权限。
  226 + ERR_SVR_FRIENDSHIP_SENSITIVE_TEXT = 30005, ///< 关系链字段中包含敏感词。
  227 + ERR_SVR_FRIENDSHIP_INTERNAL_ERROR = 30006, ///< 服务端内部错误,请重试。
  228 + ERR_SVR_FRIENDSHIP_NET_TIMEOUT = 30007, ///< 网络超时,请稍后重试。
  229 + ERR_SVR_FRIENDSHIP_WRITE_CONFLICT = 30008, ///< 并发写导致写冲突,建议使用批量方式。
  230 + ERR_SVR_FRIENDSHIP_ADD_FRIEND_DENY = 30009, ///< 后台禁止该用户发起加好友请求。
  231 + ERR_SVR_FRIENDSHIP_COUNT_LIMIT = 30010, ///< 自己的好友数已达系统上限。
  232 + ERR_SVR_FRIENDSHIP_GROUP_COUNT_LIMIT = 30011, ///< 分组已达系统上限。
  233 + ERR_SVR_FRIENDSHIP_PENDENCY_LIMIT = 30012, ///< 未决数已达系统上限。
  234 + ERR_SVR_FRIENDSHIP_BLACKLIST_LIMIT = 30013, ///< 黑名单数已达系统上限。
  235 + ERR_SVR_FRIENDSHIP_PEER_FRIEND_LIMIT = 30014, ///< 对方的好友数已达系统上限。
  236 + ERR_SVR_FRIENDSHIP_IN_SELF_BLACKLIST = 30515, ///< 请求添加好友时,对方在自己的黑名单中,不允许加好友。
  237 + ERR_SVR_FRIENDSHIP_ALLOW_TYPE_DENY_ANY = 30516, ///< 请求添加好友时,对方的加好友验证方式是不允许任何人添加自己为好友。
  238 + ERR_SVR_FRIENDSHIP_IN_PEER_BLACKLIST = 30525, ///< 请求添加好友时,自己在对方的黑名单中,不允许加好友。
  239 + ERR_SVR_FRIENDSHIP_ALLOW_TYPE_NEED_CONFIRM = 30539, ///< A 请求加 B 为好友,B 的加好友验证方式被设置为“AllowType_Type_NeedConfirm”,这时 A 与 B 之间只能形成未决关系,该返回码用于标识加未决成功,以便与加好友成功的返回码区分开,调用方可以捕捉该错误给用户一个合理的提示。
  240 + ERR_SVR_FRIENDSHIP_ADD_FRIEND_SEC_RSTR = 30540, ///< 添加好友请求被安全策略打击,请勿频繁发起添加好友请求。
  241 + ERR_SVR_FRIENDSHIP_PENDENCY_NOT_FOUND = 30614, ///< 请求的未决不存在。
  242 + ERR_SVR_FRIENDSHIP_DEL_NONFRIEND = 31704, ///< 与请求删除的帐号之间不存在好友关系。
  243 + ERR_SVR_FRIENDSHIP_DEL_FRIEND_SEC_RSTR = 31707, ///< 删除好友请求被安全策略打击,请勿频繁发起删除好友请求。
  244 + ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND_EX = 31804, ///< 请求的用户帐号不存在。
  245 +
  246 + // 最近联系人错误码
  247 +
  248 + ERR_SVR_CONV_ACCOUNT_NOT_FOUND = 50001, ///< 请求的用户帐号不存在。
  249 + ERR_SVR_CONV_INVALID_PARAMETERS = 50002, ///< 请求参数错误,请根据错误描述检查请求是否正确。
  250 + ERR_SVR_CONV_ADMIN_REQUIRED = 50003, ///< 请求需要 App 管理员权限。
  251 + ERR_SVR_CONV_INTERNAL_ERROR = 50004, ///< 服务端内部错误,请重试。
  252 + ERR_SVR_CONV_NET_TIMEOUT = 50005, ///< 网络超时,请稍后重试。
  253 +
  254 + // 消息错误码
  255 +
  256 + ERR_SVR_MSG_PKG_PARSE_FAILED = 20001, ///< 请求包非法,请检查发送方和接收方帐号是否存在。
  257 + ERR_SVR_MSG_INTERNAL_AUTH_FAILED = 20002, ///< 内部鉴权失败。
  258 + ERR_SVR_MSG_INVALID_ID = 20003, ///< Identifier 无效或者 Identifier 未导入云通信 IM。
  259 + ERR_SVR_MSG_NET_ERROR = 20004, ///< 网络异常,请重试。
  260 + ERR_SVR_MSG_INTERNAL_ERROR1 = 20005, ///< 服务端内部错误,请重试。
  261 + ERR_SVR_MSG_PUSH_DENY = 20006, ///< 触发发送单聊消息之前回调,App 后台返回禁止下发该消息。
  262 + ERR_SVR_MSG_IN_PEER_BLACKLIST = 20007, ///< 发送单聊消息,被对方拉黑,禁止发送。
  263 + ERR_SVR_MSG_BOTH_NOT_FRIEND = 20009, ///< 消息发送双方互相不是好友,禁止发送(配置单聊消息校验好友关系才会出现)。
  264 + ERR_SVR_MSG_NOT_PEER_FRIEND = 20010, ///< 发送单聊消息,自己不是对方的好友(单向关系),禁止发送。
  265 + ERR_SVR_MSG_NOT_SELF_FRIEND = 20011, ///< 发送单聊消息,对方不是自己的好友(单向关系),禁止发送。
  266 + ERR_SVR_MSG_SHUTUP_DENY = 20012, ///< 因禁言,禁止发送消息。
  267 + ERR_SVR_MSG_REVOKE_TIME_LIMIT = 20016, ///< 消息撤回超过了时间限制(默认2分钟)。
  268 + ERR_SVR_MSG_DEL_RAMBLE_INTERNAL_ERROR = 20018, ///< 删除漫游内部错误。
  269 + ERR_SVR_MSG_JSON_PARSE_FAILED = 90001, ///< JSON 格式解析失败,请检查请求包是否符合 JSON 规范。
  270 + 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) 的定义。
  271 + ERR_SVR_MSG_INVALID_TO_ACCOUNT = 90003, ///< JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 Integer 类型
  272 + ERR_SVR_MSG_INVALID_RAND = 90005, ///< JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型
  273 + ERR_SVR_MSG_INVALID_TIMESTAMP = 90006, ///< JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型
  274 + ERR_SVR_MSG_BODY_NOT_ARRAY = 90007, ///< JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型
  275 + ERR_SVR_MSG_ADMIN_REQUIRED = 90009, ///< 请求需要 App 管理员权限。
  276 + 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) 的定义。
  277 + ERR_SVR_MSG_TO_ACCOUNT_COUNT_LIMIT = 90011, ///< 批量发消息目标帐号超过500,请减少 To_Account 中目标帐号数量。
  278 + ERR_SVR_MSG_TO_ACCOUNT_NOT_FOUND = 90012, ///< To_Account 没有注册或不存在,请确认 To_Account 是否导入云通信 IM 或者是否拼写错误。
  279 + ERR_SVR_MSG_TIME_LIMIT = 90026, ///< 消息离线存储时间错误(最多不能超过7天)。
  280 + ERR_SVR_MSG_INVALID_SYNCOTHERMACHINE = 90031, ///< JSON 格式请求包体中 SyncOtherMachine 字段不是 Integer 类型
  281 + ERR_SVR_MSG_INVALID_MSGLIFETIME = 90044, ///< JSON 格式请求包体中 MsgLifeTime 字段不是 Integer 类型
  282 + ERR_SVR_MSG_ACCOUNT_NOT_FOUND = 90048, ///< 请求的用户帐号不存在。
  283 + ERR_SVR_MSG_INTERNAL_ERROR2 = 90994, ///< 服务内部错误,请重试。
  284 + ERR_SVR_MSG_INTERNAL_ERROR3 = 90995, ///< 服务内部错误,请重试。
  285 + ERR_SVR_MSG_INTERNAL_ERROR4 = 91000, ///< 服务内部错误,请重试。
  286 + ERR_SVR_MSG_INTERNAL_ERROR5 = 90992, ///< 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务端是否正常向云通信 IM 后台服务端返回回调结果。
  287 + ERR_SVR_MSG_BODY_SIZE_LIMIT = 93000, ///< JSON 数据包超长,消息包体请不要超过8k。
  288 + ERR_SVR_MSG_LONGPOLLING_COUNT_LIMIT = 91101, ///< Web 端长轮询被踢(Web 端同时在线实例个数超出限制)。
  289 + // 120001 - 130000, ///< 单聊第三方回调返回的自定义错误码。
  290 +
  291 + // 群组错误码
  292 +
  293 + ERR_SVR_GROUP_INTERNAL_ERROR = 10002, ///< 服务端内部错误,请重试。
  294 + ERR_SVR_GROUP_API_NAME_ERROR = 10003, ///< 请求中的接口名称错误,请核对接口名称并重试。
  295 + ERR_SVR_GROUP_INVALID_PARAMETERS = 10004, ///< 参数非法,请根据错误描述检查请求是否正确。
  296 + ERR_SVR_GROUP_ACOUNT_COUNT_LIMIT = 10005, ///< 请求包体中携带的帐号数量过多。
  297 + ERR_SVR_GROUP_FREQ_LIMIT = 10006, ///< 操作频率限制,请尝试降低调用的频率。
  298 + ERR_SVR_GROUP_PERMISSION_DENY = 10007, ///< 操作权限不足,比如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限。
  299 + 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) 联系技术客服。
  300 + ERR_SVR_GROUP_SUPER_NOT_ALLOW_QUIT = 10009, ///< 该群不允许群主主动退出。
  301 + ERR_SVR_GROUP_NOT_FOUND = 10010, ///< 群组不存在,或者曾经存在过,但是目前已经被解散。
  302 + ERR_SVR_GROUP_JSON_PARSE_FAILED = 10011, ///< 解析 JSON 包体失败,请检查包体的格式是否符合 JSON 格式。
  303 + ERR_SVR_GROUP_INVALID_ID = 10012, ///< 发起操作的 Identifier 非法,请检查发起操作的用户 Identifier 是否填写正确。
  304 + ERR_SVR_GROUP_ALLREADY_MEMBER = 10013, ///< 被邀请加入的用户已经是群成员。
  305 + ERR_SVR_GROUP_FULL_MEMBER_COUNT = 10014, ///< 群已满员,无法将请求中的用户加入群组,如果是批量加人,可以尝试减少加入用户的数量。
  306 + ERR_SVR_GROUP_INVALID_GROUPID = 10015, ///< 群组 ID 非法,请检查群组 ID 是否填写正确。
  307 + ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY = 10016, ///< App 后台通过第三方回调拒绝本次操作。
  308 + ERR_SVR_GROUP_SHUTUP_DENY = 10017, ///< 因被禁言而不能发送消息,请检查发送者是否被设置禁言。
  309 + ERR_SVR_GROUP_RSP_SIZE_LIMIT = 10018, ///< 应答包长度超过最大包长(1MB),请求的内容过多,请尝试减少单次请求的数据量。
  310 + ERR_SVR_GROUP_ACCOUNT_NOT_FOUND = 10019, ///< 请求的用户帐号不存在。
  311 + ERR_SVR_GROUP_GROUPID_IN_USED = 10021, ///< 群组 ID 已被使用,请选择其他的群组 ID。
  312 + ERR_SVR_GROUP_SEND_MSG_FREQ_LIMIT = 10023, ///< 发消息的频率超限,请延长两次发消息时间的间隔。
  313 + ERR_SVR_GROUP_REQ_ALLREADY_BEEN_PROCESSED = 10024, ///< 此邀请或者申请请求已经被处理。
  314 + ERR_SVR_GROUP_GROUPID_IN_USED_FOR_SUPER = 10025, ///< 群组 ID 已被使用,并且操作者为群主,可以直接使用。
  315 + 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) 联系客服。
  316 + ERR_SVR_GROUP_REVOKE_MSG_NOT_FOUND = 10030, ///< 请求撤回的消息不存在。
  317 + ERR_SVR_GROUP_REVOKE_MSG_TIME_LIMIT = 10031, ///< 消息撤回超过了时间限制(默认2分钟)。
  318 + ERR_SVR_GROUP_REVOKE_MSG_DENY = 10032, ///< 请求撤回的消息不支持撤回操作。
  319 + ERR_SVR_GROUP_NOT_ALLOW_REVOKE_MSG = 10033, ///< 群组类型不支持消息撤回操作。
  320 + ERR_SVR_GROUP_REMOVE_MSG_DENY = 10034, ///< 该消息类型不支持删除操作。
  321 + ERR_SVR_GROUP_NOT_ALLOW_REMOVE_MSG = 10035, ///< 音视频聊天室和在线成员广播大群不支持删除消息。
  322 + ERR_SVR_GROUP_AVCHATROOM_COUNT_LIMIT = 10036, ///< 音视频聊天室创建数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买预付费套餐“IM音视频聊天室”。
  323 + ERR_SVR_GROUP_COUNT_LIMIT = 10037, ///< 单个用户可创建和加入的群组数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“单人可创建与加入群组数”。
  324 + ERR_SVR_GROUP_MEMBER_COUNT_LIMIT = 10038, ///< 群成员数量超过限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“扩展群人数上限”。
  325 +
  326 + /////////////////////////////////////////////////////////////////////////////////
  327 + //
  328 + // (三)IM SDK V3 版本的错误码
  329 + //
  330 + /////////////////////////////////////////////////////////////////////////////////
  331 +
  332 + ERR_NO_SUCC_RESULT = 6003, ///< 批量操作无成功结果。
  333 + ERR_TO_USER_INVALID = 6011, ///< 无效接收方。
  334 + ERR_REQUEST_TIMEOUT = 6012, ///< 请求超时。
  335 + ERR_INIT_CORE_FAIL = 6018, ///< INIT CORE 模块失败。
  336 + ERR_EXPIRED_SESSION_NODE = 6020, ///< SessionNode 为 null 。
  337 + ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, ///< 在登录完成前进行了登出(在登录时返回)。
  338 + ERR_TLSSDK_NOT_INITIALIZED = 6024, ///< TLS SDK 未初始化。
  339 + ERR_TLSSDK_USER_NOT_FOUND = 6025, ///< TLS SDK 没有找到相应的用户信息。
  340 + ERR_BIND_FAIL_UNKNOWN = 6100, ///< QALSDK 未知原因BIND失败。
  341 + ERR_BIND_FAIL_NO_SSOTICKET = 6101, ///< 缺少 SSO 票据。
  342 + ERR_BIND_FAIL_REPEATD_BIND = 6102, ///< 重复 BIND。
  343 + ERR_BIND_FAIL_TINYID_NULL = 6103, ///< TinyId 为空。
  344 + ERR_BIND_FAIL_GUID_NULL = 6104, ///< GUID 为空。
  345 + ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, ///< 解注册包失败。
  346 + ERR_BIND_FAIL_REG_TIMEOUT = 6106, ///< 注册超时。
  347 + ERR_BIND_FAIL_ISBINDING = 6107, ///< 正在 BIND 操作中。
  348 + ERR_PACKET_FAIL_UNKNOWN = 6120, ///< 发包未知错误。
  349 + ERR_PACKET_FAIL_REQ_NO_NET = 6121, ///< 发送请求包时没有网络。
  350 + ERR_PACKET_FAIL_RESP_NO_NET = 6122, ///< 发送回复包时没有网络。
  351 + ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, ///< 发送请求包时没有权限。
  352 + ERR_PACKET_FAIL_SSO_ERR = 6124, ///< SSO 错误。
  353 + ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, ///< 请求超时。
  354 + ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, ///< 回复超时。
  355 + ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, ///< 重发失败。
  356 + ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, ///< 重发时没有真正发送。
  357 + ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, ///< 保存被过滤。
  358 + ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, ///< 发送过载。
  359 + ERR_PACKET_FAIL_LOGIC_ERR = 6131, ///< 数据逻辑错误。
  360 + ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, ///< proxy_manager 没有完成服务端数据同步。
  361 + ERR_FRIENDSHIP_PROXY_SYNCING = 6151, ///< proxy_manager 正在进行服务端数据同步。
  362 + ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, ///< proxy_manager 同步失败。
  363 + ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, ///< proxy_manager 请求参数,在本地检查不合法。
  364 + ERR_GROUP_INVALID_FIELD = 6160, ///< Group assistant 请求字段中包含非预设字段。
  365 + ERR_GROUP_STORAGE_DISABLED = 6161, ///< Group assistant 群资料本地存储没有开启。
  366 + ERR_LOADGRPINFO_FAILED = 6162, ///< 加载群资料失败。
  367 + ERR_REQ_NO_NET_ON_REQ = 6200, ///< 请求的时候没有网络。
  368 + ERR_REQ_NO_NET_ON_RSP = 6201, ///< 响应的时候没有网络。
  369 + ERR_SERIVCE_NOT_READY = 6205, ///< QALSDK 服务未就绪。
  370 + ERR_LOGIN_AUTH_FAILED = 6207, ///< 账号认证失败( TinyId 转换失败)。
  371 + ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, ///< 在应用启动后没有尝试联网。
  372 + ERR_REQ_FAILED = 6210, ///< QALSDK 执行失败。
  373 + ERR_REQ_INVALID_REQ = 6211, ///< 请求非法,toMsgService 非法。
  374 + ERR_REQ_OVERLOADED = 6212, ///< 请求队列满。
  375 + ERR_REQ_KICK_OFF = 6213, ///< 已经被其他终端踢了。
  376 + ERR_REQ_SERVICE_SUSPEND = 6214, ///< 服务被暂停。
  377 + ERR_REQ_INVALID_SIGN = 6215, ///< SSO 签名错误。
  378 + ERR_REQ_INVALID_COOKIE = 6216, ///< SSO cookie 无效。
  379 + ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, ///< 登录时 TLS SDK 回包校验,包体长度错误。
  380 + ERR_LOGIN_OPENMSG_TIMEOUT = 6218, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态超时。
  381 + ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态时解析回包失败。
  382 + ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, ///< 登录时 TLS SDK 解密失败。
  383 + ERR_WIFI_NEED_AUTH = 6221, ///< WIFI 需要认证。
  384 + ERR_USER_CANCELED = 6222, ///< 用户已取消。
  385 + ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, ///< 消息撤回超过了时间限制(默认2分钟)。
  386 + ERR_LACK_UGC_EXT = 6224, ///< 缺少 UGC 扩展包。
  387 + ERR_AUTOLOGIN_NEED_USERSIG = 6226, ///< 自动登录,本地票据过期,需要 UserSig 手动登录。
  388 + ERR_QAL_NO_SHORT_CONN_AVAILABLE = 6300, ///< 没有可用的短连接 SSO 。
  389 + ERR_REQ_CONTENT_ATTACK = 80101, ///< 消息内容安全打击。
  390 + ERR_LOGIN_SIG_EXPIRE = 70101, ///< 登录返回,票据过期。
  391 + ERR_SDK_HAD_INITIALIZED = 90101, ///< IM SDK 已经初始化无需重复初始化。
  392 + ERR_OPENBDH_BASE = 115000, ///< OpenBDH 错误码基。
  393 + ERR_REQUEST_NO_NET_ONREQ = 6250, ///< 请求时没有网络,请等网络恢复后重试。
  394 + ERR_REQUEST_NO_NET_ONRSP = 6251, ///< 响应时没有网络,请等网络恢复后重试。
  395 + ERR_REQUEST_FAILED = 6252, ///< QALSDK 执行失败。
  396 + ERR_REQUEST_INVALID_REQ = 6253, ///< 请求非法,toMsgService 非法。
  397 + ERR_REQUEST_OVERLOADED = 6254, ///< 请求队列満。
  398 + ERR_REQUEST_KICK_OFF = 6255, ///< 已经被其他终端踢了。
  399 + ERR_REQUEST_SERVICE_SUSPEND = 6256, ///< 服务被暂停。
  400 + ERR_REQUEST_INVALID_SIGN = 6257, ///< SSO 签名错误。
  401 + ERR_REQUEST_INVALID_COOKIE = 6258, ///< SSO cookie 无效。
  402 +
106 }; 403 };
107 404
108 #endif /* TIMErrorCode_h */ 405 #endif /* TIMErrorCode_h */
@@ -11,7 +11,6 @@ @@ -11,7 +11,6 @@
11 11
12 #import "ImSDK.h" 12 #import "ImSDK.h"
13 13
14 -@class TIMFriendMetaInfo;  
15 @class TIMFriendPendencyResponse; 14 @class TIMFriendPendencyResponse;
16 @class TIMFriendPendencyItem; 15 @class TIMFriendPendencyItem;
17 @class TIMFriendFutureMeta; 16 @class TIMFriendFutureMeta;
@@ -21,104 +20,119 @@ @@ -21,104 +20,119 @@
21 20
22 /** 21 /**
23 * 好友操作状态 22 * 好友操作状态
  23 + *
  24 + * 详细错误码参见 https://cloud.tencent.com/document/product/269/1671#.E5.85.B3.E7.B3.BB.E9.93.BE.E9.94.99.E8.AF.AF.E7.A0.81
24 */ 25 */
25 typedef NS_ENUM(NSInteger, TIMFriendStatus) { 26 typedef NS_ENUM(NSInteger, TIMFriendStatus) {
26 /** 27 /**
27 * 操作成功 28 * 操作成功
28 */ 29 */
29 TIM_FRIEND_STATUS_SUCC = 0, 30 TIM_FRIEND_STATUS_SUCC = 0,
30 - 31 +
31 /** 32 /**
32 - * 加好友、响应好友时有效:自己的好友数已达系统上限 33 + * 请求参数错误,请根据错误描述检查请求是否正确
33 */ 34 */
34 - TIM_ADD_FRIEND_STATUS_SELF_FRIEND_FULL = 30010,  
35 - 35 + TIM_FRIEND_PARAM_INVALID = 30001,
  36 +
36 /** 37 /**
37 - * 更新好友分组时有效:分组已达系统上限 38 + * 请求参数错误,SdkAppid 不匹配。
38 */ 39 */
39 - TIM_UPDATE_FRIEND_GROUP_STATUS_MAX_GROUPS_EXCEED = 30011,  
40 - 40 + TIM_FRIEND_SDK_APPID_INVALID = 30002,
  41 +
41 /** 42 /**
42 - * 加好友、响应好友时有效:对方的好友数已达系统上限 43 + * 请求的用户帐号不存在
43 */ 44 */
44 - TIM_ADD_FRIEND_STATUS_THEIR_FRIEND_FULL = 30014,  
45 - 45 + TIM_FRIEND_ID_INVALID = 30003,
  46 +
46 /** 47 /**
47 - * 加好友时有效:被加好友在自己的黑名单中 48 + * 请求需要 App 管理员权限
48 */ 49 */
49 - TIM_ADD_FRIEND_STATUS_IN_SELF_BLACK_LIST = 30515,  
50 - 50 + TIM_FRIEND_NEED_ADMIN_PERMISSON = 30004,
  51 +
51 /** 52 /**
52 - * 加好友时有效:被加好友设置为禁止加好友 53 + * 关系链字段中包含敏感词
53 */ 54 */
54 - TIM_ADD_FRIEND_STATUS_FRIEND_SIDE_FORBID_ADD = 30516,  
55 - 55 + TIM_FRIEND_DIRTY_WORD = 30005,
  56 +
56 /** 57 /**
57 - * 加好友时有效:已被被添加好友设置为黑名单 58 + * 服务器内部错误,请重试
58 */ 59 */
59 - TIM_ADD_FRIEND_STATUS_IN_OTHER_SIDE_BLACK_LIST = 30525,  
60 - 60 + TIM_FRIEND_SERVER_ERROR = 30006,
  61 +
61 /** 62 /**
62 - * 加好友时有效:对方好友列表已满 63 + * 网络超时,请稍后重试
63 */ 64 */
64 - TIM_ADD_FRIEND_STATUS_OTHER_SIDE_FRIEND_LIST_FULL = 30535,  
65 - 65 + TIM_FRIEND_TIMEOUT = 30007,
  66 +
66 /** 67 /**
67 - * 加好友时有效:等待好友审核同意 68 + * 并发写导致写冲突,建议使用批量方式
68 */ 69 */
69 - TIM_ADD_FRIEND_STATUS_PENDING = 30539,  
70 - 70 + TIM_FRIEND_WRITE_ERROR = 30008,
  71 +
  72 + /**
  73 + * 后台禁止该用户发起加好友请求
  74 + */
  75 + TIM_ADD_FRIEND_FORBIDEN = 30009,
  76 +
71 /** 77 /**
72 - * 删除好友时有效:删除好友时对方不是好友 78 + * 自己的好友数已达系统上限
73 */ 79 */
74 - TIM_DEL_FRIEND_STATUS_NO_FRIEND = 31704,  
75 - 80 + TIM_ADD_FRIEND_STATUS_SELF_FRIEND_FULL = 30010,
  81 +
76 /** 82 /**
77 - * 响应好友申请时有效:对方没有申请过好友 83 + * 分组已达系统上限
78 */ 84 */
79 - TIM_RESPONSE_FRIEND_STATUS_NO_REQ = 30614,  
80 - 85 + TIM_UPDATE_FRIEND_GROUP_STATUS_MAX_GROUPS_EXCEED = 30011,
  86 +
  87 + /**
  88 + * 未决数已达系统上限。
  89 + */
  90 + TIM_PENDENCY_STATUS_FULL = 30012,
  91 +
  92 + /**
  93 + * 黑名单数已达系统上限
  94 + */
  95 + TIM_ADD_BLACKLIST_STATUS_FULL = 30013,
  96 +
81 /** 97 /**
82 - * 添加黑名单有效:已经在黑名单了 98 + * 对方的好友数已达系统上限
83 */ 99 */
84 - TIM_ADD_BLACKLIST_FRIEND_STATUS_IN_BLACK_LIST = 31307,  
85 - 100 + TIM_ADD_FRIEND_STATUS_THEIR_FRIEND_FULL = 30014,
  101 +
86 /** 102 /**
87 - * 删除黑名单有效:用户不在黑名单里 103 + * 被加好友在自己的黑名单中
88 */ 104 */
89 - TIM_DEL_BLACKLIST_FRIEND_STATUS_NOT_IN_BLACK_LIST = 31503,  
90 - 105 + TIM_ADD_FRIEND_STATUS_IN_SELF_BLACK_LIST = 30515,
  106 +
91 /** 107 /**
92 - * 创建好友分组时有效:没有拉到SDKAppId 108 + * 被加好友设置为禁止加好友
93 */ 109 */
94 - TIM_ADD_FRIEND_GROUP_STATUS_GET_SDKAPPID_FAILED = 32207,  
95 - 110 + TIM_ADD_FRIEND_STATUS_FRIEND_SIDE_FORBID_ADD = 30516,
  111 +
96 /** 112 /**
97 - * 创建好友分组时有效:要加入到好友分组中的用户不是好友 113 + * 已被被添加好友设置为黑名单
98 */ 114 */
99 - TIM_ADD_FRIEND_GROUP_STATUS_NOT_FRIEND = 32216,  
100 - 115 + TIM_ADD_FRIEND_STATUS_IN_OTHER_SIDE_BLACK_LIST = 30525,
  116 +
101 /** 117 /**
102 - * 更新好友分组时有效:没有拉到SDKAppId 118 + * 等待好友审核同意
103 */ 119 */
104 - TIM_UPDATE_FRIEND_GROUP_STATUS_GET_SDKAPPID_FAILED = 32511,  
105 - 120 + TIM_ADD_FRIEND_STATUS_PENDING = 30539,
  121 +
106 /** 122 /**
107 - * 更新好友分组时有效:要加入到好友分组中的用户不是好友 123 + * 添加好友请求被安全策略打击,请勿频繁发起添加好友请求
108 */ 124 */
109 - TIM_UPDATE_FRIEND_GROUP_STATUS_ADD_NOT_FRIEND = 32518,  
110 - 125 + TIM_ADD_FRIEND_STATUS_SENSITIVE = 30540,
  126 +
111 /** 127 /**
112 - * 更新好友分组时有效:要加入到好友分组中的好友已经在分组中 128 + * 对方没有申请过好友
113 */ 129 */
114 - TIM_UPDATE_FRIEND_GROUP_STATUS_ADD_ALREADY_IN_GROUP = 32519,  
115 - 130 + TIM_RESPONSE_FRIEND_STATUS_NO_REQ = 30614,
  131 +
116 /** 132 /**
117 - * 更新好友分组时有效:要从好友分组中删除的好友不在好友分组中 133 + * 删除好友请求被安全策略打击,请勿频繁发起删除好友请求
118 */ 134 */
119 - TIM_UPDATE_FRIEND_GROUP_STATUS_DEL_NOT_IN_GROUP = 32520,  
120 -  
121 - 135 + TIM_DELETE_FRIEND_STATUS_SENSITIVE = 31707,
122 }; 136 };
123 137
124 typedef NS_ENUM(NSInteger, TIMDelFriendType) { 138 typedef NS_ENUM(NSInteger, TIMDelFriendType) {
@@ -126,7 +140,7 @@ typedef NS_ENUM(NSInteger, TIMDelFriendType) { @@ -126,7 +140,7 @@ typedef NS_ENUM(NSInteger, TIMDelFriendType) {
126 * 删除单向好友 140 * 删除单向好友
127 */ 141 */
128 TIM_FRIEND_DEL_SINGLE = 1, 142 TIM_FRIEND_DEL_SINGLE = 1,
129 - 143 +
130 /** 144 /**
131 * 删除双向好友 145 * 删除双向好友
132 */ 146 */
@@ -138,12 +152,12 @@ typedef NS_ENUM(NSInteger, TIMPendencyType) { @@ -138,12 +152,12 @@ typedef NS_ENUM(NSInteger, TIMPendencyType) {
138 * 别人发给我的 152 * 别人发给我的
139 */ 153 */
140 TIM_PENDENCY_COME_IN = 1, 154 TIM_PENDENCY_COME_IN = 1,
141 - 155 +
142 /** 156 /**
143 * 我发给别人的 157 * 我发给别人的
144 */ 158 */
145 TIM_PENDENCY_SEND_OUT = 2, 159 TIM_PENDENCY_SEND_OUT = 2,
146 - 160 +
147 /** 161 /**
148 * 别人发给我的 和 我发给别人的。仅拉取时有效 162 * 别人发给我的 和 我发给别人的。仅拉取时有效
149 */ 163 */
@@ -158,17 +172,17 @@ typedef NS_ENUM(NSInteger, TIMFutureFriendType) { @@ -158,17 +172,17 @@ typedef NS_ENUM(NSInteger, TIMFutureFriendType) {
158 * 收到的未决请求 172 * 收到的未决请求
159 */ 173 */
160 TIM_FUTURE_FRIEND_PENDENCY_IN_TYPE = 0x1, 174 TIM_FUTURE_FRIEND_PENDENCY_IN_TYPE = 0x1,
161 - 175 +
162 /** 176 /**
163 * 发出去的未决请求 177 * 发出去的未决请求
164 */ 178 */
165 TIM_FUTURE_FRIEND_PENDENCY_OUT_TYPE = 0x2, 179 TIM_FUTURE_FRIEND_PENDENCY_OUT_TYPE = 0x2,
166 - 180 +
167 /** 181 /**
168 * 推荐好友 182 * 推荐好友
169 */ 183 */
170 TIM_FUTURE_FRIEND_RECOMMEND_TYPE = 0x4, 184 TIM_FUTURE_FRIEND_RECOMMEND_TYPE = 0x4,
171 - 185 +
172 /** 186 /**
173 * 已决好友 187 * 已决好友
174 */ 188 */
@@ -183,7 +197,7 @@ typedef NS_ENUM(NSInteger, TIMPageDirectionType) { @@ -183,7 +197,7 @@ typedef NS_ENUM(NSInteger, TIMPageDirectionType) {
183 * 向上翻页 197 * 向上翻页
184 */ 198 */
185 TIM_PAGE_DIRECTION_UP_TYPE = 1, 199 TIM_PAGE_DIRECTION_UP_TYPE = 1,
186 - 200 +
187 /** 201 /**
188 * 向下翻页 202 * 向下翻页
189 */ 203 */
@@ -223,7 +237,7 @@ typedef NS_ENUM(NSInteger,TIMFriendRelationType) { @@ -223,7 +237,7 @@ typedef NS_ENUM(NSInteger,TIMFriendRelationType) {
223 /** 237 /**
224 * 互为好友 238 * 互为好友
225 */ 239 */
226 - TIM_FRIEND_RELATION_TYPE_BOTH = 0x3, 240 + TIM_FRIEND_RELATION_TYPE_BOTHWAY = 0x3,
227 }; 241 };
228 242
229 typedef NS_ENUM(NSInteger, TIMFriendResponseType) { 243 typedef NS_ENUM(NSInteger, TIMFriendResponseType) {
@@ -231,27 +245,32 @@ typedef NS_ENUM(NSInteger, TIMFriendResponseType) { @@ -231,27 +245,32 @@ typedef NS_ENUM(NSInteger, TIMFriendResponseType) {
231 * 同意加好友(建立单向好友) 245 * 同意加好友(建立单向好友)
232 */ 246 */
233 TIM_FRIEND_RESPONSE_AGREE = 0, 247 TIM_FRIEND_RESPONSE_AGREE = 0,
234 - 248 +
235 /** 249 /**
236 * 同意加好友并加对方为好友(建立双向好友) 250 * 同意加好友并加对方为好友(建立双向好友)
237 */ 251 */
238 TIM_FRIEND_RESPONSE_AGREE_AND_ADD = 1, 252 TIM_FRIEND_RESPONSE_AGREE_AND_ADD = 1,
239 - 253 +
240 /** 254 /**
241 * 拒绝对方好友请求 255 * 拒绝对方好友请求
242 */ 256 */
243 TIM_FRIEND_RESPONSE_REJECT = 2, 257 TIM_FRIEND_RESPONSE_REJECT = 2,
244 }; 258 };
245 259
246 -#pragma mark - block回调  
247 -  
248 /** 260 /**
249 - * 获取好友列表回调  
250 - *  
251 - * @param meta 好友元信息  
252 - * @param friends 好友列表 TIMUserProfile* 数组,只包含需要的字段 261 + * 好友检查类型
253 */ 262 */
254 -typedef void (^TIMGetFriendListByPageSucc)(TIMFriendMetaInfo * meta, NSArray * friends); 263 +typedef NS_ENUM(NSInteger,TIMFriendAddType) {
  264 + /**
  265 + * 单向好友
  266 + */
  267 + TIM_FRIEND_ADD_TYPE_SINGLE = 1,
  268 + /**
  269 + * 互为好友
  270 + */
  271 + TIM_FRIEND_ADD_TYPE_BOTH = 2,
  272 +};
  273 +#pragma mark - block回调
255 274
256 /** 275 /**
257 * 获取未决请求列表成功 276 * 获取未决请求列表成功
@@ -315,6 +334,11 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results); @@ -315,6 +334,11 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results);
315 */ 334 */
316 @property (nonatomic,strong) NSString* group; 335 @property (nonatomic,strong) NSString* group;
317 336
  337 +/**
  338 + * 加好友方式 (可选)
  339 + */
  340 +@property (nonatomic,assign) TIMFriendAddType addType;
  341 +
318 @end 342 @end
319 343
320 /** 344 /**
@@ -393,7 +417,8 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results); @@ -393,7 +417,8 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results);
393 @property(nonatomic,assign) uint64_t timestamp; 417 @property(nonatomic,assign) uint64_t timestamp;
394 418
395 /** 419 /**
396 - * 每页的数量,即本次请求最多返回都个数据 420 + * 每页的数量,即本次请求最多返回多个数据,最大不超过 100,设置太大一次请求回包的时间会过长。默认值100
  421 + * 注意:后台最多只保存100条未决
397 */ 422 */
398 @property(nonatomic,assign) uint64_t numPerPage; 423 @property(nonatomic,assign) uint64_t numPerPage;
399 424
@@ -431,32 +456,6 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results); @@ -431,32 +456,6 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results);
431 456
432 @end 457 @end
433 458
434 -  
435 -  
436 -/**  
437 - * 好友元信息  
438 - */  
439 -@interface TIMFriendMetaInfo : TIMCodingModel  
440 -  
441 -/**  
442 - * 时间戳,需要保存,下次拉取时传入,增量更新使用  
443 - */  
444 -@property(nonatomic,assign) uint64_t timestamp;  
445 -/**  
446 - * 序列号,需要保存,下次拉取时传入,增量更新使用  
447 - */  
448 -@property(nonatomic,assign) uint64_t infoSeq;  
449 -/**  
450 - * 分页信息,无需保存,返回为0时结束,非0时传入再次拉取,第一次拉取时传0  
451 - */  
452 -@property(nonatomic,assign) uint64_t nextSeq;  
453 -/**  
454 - * 覆盖:为TRUE时需要重设timestamp, infoSeq, nextSeq为0,清除客户端存储,重新拉取资料  
455 - */  
456 -@property(nonatomic,assign) BOOL recover;  
457 -  
458 -@end  
459 -  
460 /** 459 /**
461 * 好友分组信息 460 * 好友分组信息
462 */ 461 */
@@ -498,11 +497,18 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results); @@ -498,11 +497,18 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results);
498 /** 497 /**
499 * 用户id 498 * 用户id
500 */ 499 */
501 -@property(nonatomic,strong) NSString* identifier; 500 +@property NSString* identifier;
  501 +
  502 +/**
  503 + * 返回码
  504 + */
  505 +@property NSInteger result_code;
  506 +
502 /** 507 /**
503 - * 返回状态 508 + * 返回信息
504 */ 509 */
505 -@property(nonatomic,assign) TIMFriendStatus status; 510 +@property NSString *result_info;
  511 +
506 /** 512 /**
507 * 检查结果 513 * 检查结果
508 */ 514 */
@@ -42,6 +42,13 @@ @@ -42,6 +42,13 @@
42 - (int)getSelfProfile:(TIMGetProfileSucc)succ fail:(TIMFail)fail; 42 - (int)getSelfProfile:(TIMGetProfileSucc)succ fail:(TIMFail)fail;
43 43
44 /** 44 /**
  45 + * 在缓存中查询自己的资料
  46 + *
  47 + * @return 返回缓存的资料,未找到返回nil
  48 + */
  49 +- (TIMUserProfile *)querySelfProfile;
  50 +
  51 +/**
45 * 获取指定用户资料 52 * 获取指定用户资料
46 * 53 *
47 * @param identifiers 用户id,非好友的用户也可以 54 * @param identifiers 用户id,非好友的用户也可以
@@ -54,6 +61,15 @@ @@ -54,6 +61,15 @@
54 - (int)getUsersProfile:(NSArray<NSString *> *)identifiers forceUpdate:(BOOL)forceUpdate succ:(TIMUserProfileArraySucc)succ fail:(TIMFail)fail; 61 - (int)getUsersProfile:(NSArray<NSString *> *)identifiers forceUpdate:(BOOL)forceUpdate succ:(TIMUserProfileArraySucc)succ fail:(TIMFail)fail;
55 62
56 /** 63 /**
  64 + * 在缓存中查询用户的资料
  65 + *
  66 + * @praram identifier 用户id,非好友的用户也可以
  67 + *
  68 + * @return 返回缓存的资料,未找到返回nil
  69 + */
  70 +- (TIMUserProfile *)queryUserProfile:(NSString *)identifier;
  71 +
  72 +/**
57 * 获取好友列表 73 * 获取好友列表
58 * 74 *
59 * @param succ 成功回调,返回好友(TIMFriend)列表 75 * @param succ 成功回调,返回好友(TIMFriend)列表
@@ -65,6 +81,35 @@ @@ -65,6 +81,35 @@
65 81
66 82
67 /** 83 /**
  84 + * 在缓存中查询用户的关系链数据
  85 + *
  86 + * @praram identifier 用户id
  87 + *
  88 + * @return 返回缓存的关系链数据,未找到返回nil
  89 + * @note 缓存数据来自于上一次调用getFriendList,请确保已调用了获取好友列表方法
  90 + */
  91 +- (TIMFriend *)queryFriend:(NSString *)identifier;
  92 +
  93 +/**
  94 + * 获取缓存中的关系链列表
  95 + *
  96 + * @return 返回缓存的关系链数据
  97 + * @note 缓存数据来自于上一次调用getFriendList,请确保已调用了获取好友列表方法
  98 + */
  99 +- (NSArray<TIMFriend *> *)queryFriendList;
  100 +
  101 +/**
  102 + * 检查指定用户的好友关系
  103 + *
  104 + * @param checkInfo 好友检查信息
  105 + * @param succ 成功回调,返回检查结果
  106 + * @param fail 失败回调
  107 + *
  108 + * @return 0:发送成功;-1:checkInfo->users 参数异常;-2:checkInfo->checkType 参数异常
  109 + */
  110 +- (int)checkFriends:(TIMFriendCheckInfo *)checkInfo succ:(TIMCheckFriendResultArraySucc)succ fail:(TIMFail)fail;
  111 +
  112 +/**
68 * 添加好友 113 * 添加好友
69 * 114 *
70 * @param request 添加好友请求 115 * @param request 添加好友请求
@@ -111,7 +156,7 @@ @@ -111,7 +156,7 @@
111 - (int)modifyFriend:(NSString *)identifier values:(NSDictionary<NSString *, id> *)values succ:(TIMSucc)succ fail:(TIMFail)fail; 156 - (int)modifyFriend:(NSString *)identifier values:(NSDictionary<NSString *, id> *)values succ:(TIMSucc)succ fail:(TIMFail)fail;
112 157
113 /** 158 /**
114 - * 未决列表请求 159 + * 获取未决列表
115 * 160 *
116 * @param pendencyRequest 请求信息,详细参考TIMFriendPendencyRequest 161 * @param pendencyRequest 请求信息,详细参考TIMFriendPendencyRequest
117 * @param succ 成功回调 162 * @param succ 成功回调
1 -//  
2 -// TIMGroupManager+Ext.h  
3 -// IMGroupExt  
4 -//  
5 -// Created by tomzhu on 2017/2/9.  
6 -//  
7 -//  
8 -  
9 -#ifndef TIMGroupManager_Ext_h  
10 -#define TIMGroupManager_Ext_h  
11 -  
12 -#import "TIMGroupManager.h"  
13 -#import "TIMComm+Group.h"  
14 -  
15 -@interface TIMGroupManager (Ext)  
16 -  
17 -/**  
18 - * 创建私有群  
19 - *  
20 - * 创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)  
21 - *  
22 - * @param members 群成员,NSString* 数组  
23 - * @param groupName 群名  
24 - * @param succ 成功回调 groupId  
25 - * @param fail 失败回调  
26 - *  
27 - * @return 0:成功;1:失败  
28 - */  
29 -- (int)createPrivateGroup:(NSArray*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;  
30 -  
31 -/**  
32 - * 创建公开群  
33 - *  
34 - * 创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)  
35 - *get  
36 - * @param members 群成员,NSString* 数组  
37 - * @param groupName 群名  
38 - * @param succ 成功回调 groupId  
39 - * @param fail 失败回调  
40 - *  
41 - * @return 0:成功;1:失败  
42 - */  
43 -- (int)createPublicGroup:(NSArray*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;  
44 -  
45 -/**  
46 - * 创建聊天室  
47 - *  
48 - * 创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)  
49 - *  
50 - * @param members 群成员,NSString* 数组  
51 - * @param groupName 群名  
52 - * @param succ 成功回调 groupId  
53 - * @param fail 失败回调  
54 - *  
55 - * @return 0:成功;1:失败  
56 - */  
57 -- (int)createChatRoomGroup:(NSArray*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;  
58 -  
59 -/**  
60 - * 创建音视频聊天室(可支持超大群,详情可参考wiki文档)  
61 - *  
62 - * 创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)  
63 - *  
64 - * @param groupName 群名  
65 - * @param succ 成功回调 groupId  
66 - * @param fail 失败回调  
67 - *  
68 - * @return 0:成功;1:失败  
69 - */  
70 -- (int)createAVChatRoomGroup:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;  
71 -  
72 -/**  
73 - * 创建自定义群组  
74 - *  
75 - * 在创建群组时,除了设置默认的成员以及群名外,还可以设置如群公告、群简介等字段。  
76 - *  
77 - * @param groupInfo 群组信息,详情请参考 TIMComm+Group.h 里面的 TIMCreateGroupInfo 定义  
78 - * @param succ 成功回调 groupId  
79 - * @param fail 失败回调  
80 - *  
81 - * @return 0:成功;1:失败  
82 - */  
83 -- (int)createGroup:(TIMCreateGroupInfo*)groupInfo succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;  
84 -  
85 -/**  
86 - * 邀请好友入群  
87 - *  
88 - * 1. 只有私有群可以拉用户入群。  
89 - * 2. 直播大群:不能邀请用户入群。  
90 - * 3. 不允许群成员邀请他人入群,但创建群时可以直接拉人入群。  
91 - *  
92 - * @param group 群组Id  
93 - * @param members 要加入的成员列表(NSString* 类型数组)  
94 - * @param succ 成功回调  
95 - * @param fail 失败回调  
96 - *  
97 - * @return 0:成功;1:失败  
98 - */  
99 -- (int)inviteGroupMember:(NSString*)group members:(NSArray*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;  
100 -  
101 -/**  
102 - * 删除群成员  
103 - *  
104 - * 1. 私有群:只有创建者可删除群组成员。  
105 - * 2. 公开群、聊天室:只有管理员和群主可以踢人。  
106 - * 3. 对于直播大群:不能踢人。  
107 - *  
108 - * @param group 群组Id  
109 - * @param reason 删除原因  
110 - * @param members 要删除的成员列表  
111 - * @param succ 成功回调  
112 - * @param fail 失败回调  
113 - *  
114 - * @return 0:成功;1:失败  
115 - */  
116 -- (int)deleteGroupMemberWithReason:(NSString*)group reason:(NSString*)reason members:(NSArray*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;  
117 -  
118 -/**  
119 - * 获取群公开信息(暂未实现)  
120 - *  
121 - * 任意用户可以获取群公开资料,只能获取公开信息。  
122 - *  
123 - * @param groups 群组Id  
124 - * @param succ 成功回调  
125 - * @param fail 失败回调  
126 - *  
127 - * @return 0:成功;1:失败  
128 - */  
129 -- (int)getGroupPublicInfo:(NSArray*)groups succ:(TIMGroupListSucc)succ fail:(TIMFail)fail;  
130 -  
131 -/**  
132 - * 获取群列表  
133 - *  
134 - * 1. 可以获取自己所加入的群列表。  
135 - * 2. 只能获得加入的部分直播大群的列表。  
136 - *  
137 - * @param succ 成功回调,NSArray 列表为 TIMGroupInfo,结构体只包含 group\groupName\groupType\faceUrl\allShutup\selfInfo 信息  
138 - * @param fail 失败回调  
139 - *  
140 - * @return 0:成功;1:失败  
141 - */  
142 -- (int)getGroupList:(TIMGroupListSucc)succ fail:(TIMFail)fail;  
143 -  
144 -/**  
145 - * 获取群信息  
146 - *  
147 - * 1. 获取群组资料接口只能由群成员调用,非群成员无法通过此方法获取资料,需要调用 getGroupPublicInfo 获取资料。  
148 - * 2. 默认拉取基本资料,如果想要拉取自定义字段,首先要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限,然后在 initSDK 的时候把生成的 key 设置在 IMGroupInfoOption 里面的 groupCustom 字段。需要注意的是,只有对自定义字段 value 做了赋值或则修改,才能拉取到自定义字段。  
149 - *  
150 - * @param succ 成功回调,不包含 selfInfo信息  
151 - * @param fail 失败回调  
152 - *  
153 - * @return 0:成功;1:失败  
154 - */  
155 -- (int)getGroupInfo:(NSArray*)groups succ:(TIMGroupListSucc)succ fail:(TIMFail)fail;  
156 -  
157 -/**  
158 - * 获取本人在群组内的成员信息  
159 - *  
160 - * 默认拉取基本资料,如果想要拉取自定义字段,请参考 getGroupInfo  
161 - *  
162 - * @param group 群组Id  
163 - * @param succ 成功回调,返回信息  
164 - * @param fail 失败回调  
165 - *  
166 - * @return 0:成功;1:失败  
167 - */  
168 -- (int)getGroupSelfInfo:(NSString*)group succ:(TIMGroupSelfSucc)succ fail:(TIMFail)fail;  
169 -  
170 -/**  
171 - * 获取接受消息选项  
172 - *  
173 - * @param group 群组Id  
174 - * @param succ 成功回调, TIMGroupReceiveMessageOpt 0:接收消息;1:不接收消息,服务器不进行转发;2:接受消息,不进行 iOS APNs 推送  
175 - * @param fail 失败回调  
176 - *  
177 - * @return 0:成功;1:失败  
178 - */  
179 -- (int)getReciveMessageOpt:(NSString*)group succ:(TIMGroupReciveMessageOptSucc)succ fail:(TIMFail)fail;  
180 -  
181 -/**  
182 - * 获取群成员列表  
183 - *  
184 - * 1. 获取群内成员列表,默认拉取内置字段,但不拉取自定义字段,如果想要拉取自定义字段,首先要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限,然后在 initSDK 的时候把生成的 key 设置在 IMGroupInfoOption 里面的 groupCustom 字段。需要注意的是,只有对自定义字段的 value 做了赋值或则修改,才能拉取到自定义字段。  
185 - * 2. 任何群组类型:都可以获取成员列表。  
186 - * 3. 直播大群:只能拉取部分成员(包括群主、管理员和部分成员)。  
187 - *  
188 - * @param group 群组Id  
189 - * @param succ 成功回调(TIMGroupMemberInfo列表)  
190 - * @param fail 失败回调  
191 - *  
192 - * @return 0:成功;1:失败  
193 - */  
194 -- (int)getGroupMembers:(NSString*)group succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;  
195 -  
196 -/**  
197 - * 获取群组指定成员的信息  
198 - *  
199 - * 获取群组指定成员的信息,需要设置群成员 members,其他限制参考 getGroupMembers  
200 - *  
201 - * @param group 群组Id  
202 - * @param members 成员Id(NSString*)列表  
203 - * @param succ 成功回调(TIMGroupMemberInfo列表)  
204 - * @param fail 失败回调  
205 - *  
206 - * @return 0:成功;1:失败  
207 - */  
208 -- (int)getGroupMembersInfo:(NSString*)group members:(NSArray*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;  
209 -  
210 -/**  
211 - * 获取指定类型的成员列表(支持按字段拉取,分页)  
212 - *  
213 - * @param group 群组Id:(NSString*) 列表  
214 - * @param filter 群成员角色过滤方式  
215 - * @param flags 拉取资料标志  
216 - * @param custom 要获取的自定义key(NSString*)列表  
217 - * @param nextSeq 分页拉取标志,第一次拉取填0,回调成功如果 nextSeq 不为零,需要分页,传入再次拉取,直至为0  
218 - * @param succ 成功回调  
219 - * @param fail 失败回调  
220 - * @return 0:成功;1:失败  
221 - */  
222 -- (int)getGroupMembers:(NSString*)group ByFilter:(TIMGroupMemberFilter)filter flags:(TIMGetGroupMemInfoFlag)flags custom:(NSArray*)custom nextSeq:(uint64_t)nextSeq succ:(TIMGroupMemberSuccV2)succ fail:(TIMFail)fail;  
223 -  
224 -/**  
225 - * 修改群名  
226 - *  
227 - * 1. 公开群、聊天室和直播大群:只有群主或者管理员可以修改群名。  
228 - * 2. 私有群:任何人可修改群名。  
229 - *  
230 - * @param group 群组Id  
231 - * @param groupName 新群名  
232 - * @param succ 成功回调  
233 - * @param fail 失败回调  
234 - *  
235 - * @return 0:成功;1:失败  
236 - */  
237 -- (int)modifyGroupName:(NSString*)group groupName:(NSString*)groupName succ:(TIMSucc)succ fail:(TIMFail)fail;  
238 -  
239 -/**  
240 - * 修改群简介  
241 - *  
242 - * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群简介。  
243 - * 2. 私有群:任何人可修改群简介。  
244 - *  
245 - * @param group 群组Id  
246 - * @param introduction 群简介(最长120字节)  
247 - * @param succ 成功回调  
248 - * @param fail 失败回调  
249 - *  
250 - * @return 0:成功;1:失败  
251 - */  
252 -- (int)modifyGroupIntroduction:(NSString*)group introduction:(NSString*)introduction succ:(TIMSucc)succ fail:(TIMFail)fail;  
253 -  
254 -/**  
255 - * 修改群公告  
256 - *  
257 - * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群公告。  
258 - * 2. 私有群:任何人可修改群公告。  
259 - *  
260 - * @param group 群组Id  
261 - * @param notification 群公告(最长150字节)  
262 - * @param succ 成功回调  
263 - * @param fail 失败回调  
264 - *  
265 - * @return 0:成功;1:失败  
266 - */  
267 -- (int)modifyGroupNotification:(NSString*)group notification:(NSString*)notification succ:(TIMSucc)succ fail:(TIMFail)fail;  
268 -  
269 -/**  
270 - * 修改群头像  
271 - *  
272 - * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群头像。  
273 - * 2. 私有群:任何人可修改群头像。  
274 - *  
275 - * @param group 群组Id  
276 - * @param url 群头像地址(最长100字节)  
277 - * @param succ 成功回调  
278 - * @param fail 失败回调  
279 - *  
280 - * @return 0:成功;1:失败  
281 - */  
282 -- (int)modifyGroupFaceUrl:(NSString*)group url:(NSString*)url succ:(TIMSucc)succ fail:(TIMFail)fail;  
283 -  
284 -/**  
285 - * 修改加群选项  
286 - *  
287 - * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改加群选项。  
288 - * 2. 私有群:只能通过邀请加入群组,不能主动申请加入某个群组。  
289 - *  
290 - * @param group 群组Id  
291 - * @param opt 加群选项,详见 TIMGroupAddOpt  
292 - * @param succ 成功回调  
293 - * @param fail 失败回调  
294 - *  
295 - * @return 0:成功;1:失败  
296 - */  
297 -- (int)modifyGroupAddOpt:(NSString*)group opt:(TIMGroupAddOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;  
298 -  
299 -/**  
300 - * 修改群自定义字段集合  
301 - *  
302 - * 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限。  
303 - *  
304 - * @param group 群组Id  
305 - * @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型  
306 - * @param succ 成功回调  
307 - * @param fail 失败回调  
308 - *  
309 - * @return 0:成功;1:失败  
310 - */  
311 -- (int)modifyGroupCustomInfo:(NSString*)group customInfo:(NSDictionary*)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;  
312 -  
313 -/**  
314 - * 转让群给新群主  
315 - *  
316 - * 1. 只有群主才有权限进行群转让操作。  
317 - * 2. 直播大群不能进行群转让操作。  
318 - *  
319 - * @param group 群组Id  
320 - * @param identifier 新的群主Id  
321 - * @param succ 成功回调  
322 - * @param fail 失败回调  
323 - *  
324 - * @return 0:成功;1:失败  
325 - */  
326 -- (int)modifyGroupOwner:(NSString*)group user:(NSString*)identifier succ:(TIMSucc)succ fail:(TIMFail)fail;  
327 -  
328 -/**  
329 - * 修改接受消息选项  
330 - *  
331 - * 默认情况下,公开群和私有群是接收并离线推送群消息,聊天室和直播大群是接收但不离线推送群消息。  
332 - *  
333 - * @param group 群组Id  
334 - * @param opt 接受消息选项,详见 TIMGroupReceiveMessageOpt  
335 - * @param succ 成功回调  
336 - * @param fail 失败回调  
337 - *  
338 - * @return 0:成功;1:失败  
339 - */  
340 -- (int)modifyReciveMessageOpt:(NSString*)group opt:(TIMGroupReceiveMessageOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;  
341 -  
342 -/**  
343 - * 修改群成员角色  
344 - *  
345 - * 1. 群主、管理员:可以进行对群成员的身份进行修改。  
346 - * 2. 直播大群:不支持修改用户群内身份。  
347 - *  
348 - * @param group 群组Id  
349 - * @param identifier 被修改角色的用户identifier  
350 - * @param role 角色(注意:不能修改为群主),详见 TIMGroupMemberRole  
351 - * @param succ 成功回调  
352 - * @param fail 失败回调  
353 - *  
354 - * @return 0:成功;1:失败  
355 - */  
356 -- (int)modifyGroupMemberInfoSetRole:(NSString*)group user:(NSString*)identifier role:(TIMGroupMemberRole)role succ:(TIMSucc)succ fail:(TIMFail)fail;  
357 -  
358 -/**  
359 - * 禁言用户  
360 - *  
361 - * 只有管理员或群主能够调用  
362 - *  
363 - * @param group 群组Id  
364 - * @param identifier 被禁言的用户identifier  
365 - * @param stime 禁言时间  
366 - * @param succ 成功回调  
367 - * @param fail 失败回调  
368 - *  
369 - * @return 0:成功;1:失败  
370 - */  
371 -- (int)modifyGroupMemberInfoSetSilence:(NSString*)group user:(NSString*)identifier stime:(uint32_t)stime succ:(TIMSucc)succ fail:(TIMFail)fail;  
372 -  
373 -/**  
374 - * 修改群名片  
375 - *  
376 - * 只有本人、管理员或群主能够调用  
377 - *  
378 - * @param group 群组Id  
379 - * @param identifier 被操作用户identifier  
380 - * @param nameCard 群名片  
381 - * @param succ 成功回调  
382 - * @param fail 失败回调  
383 - *  
384 - * @return 0:成功;1:失败  
385 - */  
386 -- (int)modifyGroupMemberInfoSetNameCard:(NSString*)group user:(NSString*)identifier nameCard:(NSString*)nameCard succ:(TIMSucc)succ fail:(TIMFail)fail;  
387 -  
388 -/**  
389 - * 修改群成员自定义字段集合  
390 - *  
391 - * 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群成员维度自定义字段 配置相关的 key 和权限。  
392 - *  
393 - * @param group 群组 Id  
394 - * @param identifier 被操作用户 identifier  
395 - * @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型  
396 - * @param succ 成功回调  
397 - * @param fail 失败回调  
398 - *  
399 - * @return 0:成功;1:失败  
400 - */  
401 -- (int)modifyGroupMemberInfoSetCustomInfo:(NSString*)group user:(NSString*)identifier customInfo:(NSDictionary*)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;  
402 -  
403 -/**  
404 - * 修改群组是否可被搜索属性  
405 - *  
406 - * @param group 群组Id  
407 - * @param searchable 是否能被搜索  
408 - * @param succ 成功回调  
409 - * @param fail 失败回调  
410 - *  
411 - * @return 0:成功;1:失败  
412 - */  
413 -- (int)modifyGroupSearchable:(NSString*)group searchable:(BOOL)searchable succ:(TIMSucc)succ fail:(TIMFail)fail;  
414 -  
415 -/**  
416 - * 修改群组成员是否可见属性  
417 - *  
418 - * @param group 群组Id  
419 - * @param visible 是否可见  
420 - * @param succ 成功回调  
421 - * @param fail 失败回调  
422 - *  
423 - * @return 0:成功;1:失败  
424 - */  
425 -- (int)modifyGroupMemberVisible:(NSString*)group visible:(BOOL)visible succ:(TIMSucc)succ fail:(TIMFail)fail;  
426 -  
427 -/**  
428 - * 修改群组全员禁言属性  
429 - *  
430 - * 1. 群主、管理员:有权限进行全员禁言的操作。  
431 - * 2. 所有群组类型:都支持全员禁言的操作。  
432 - *  
433 - * @param group 群组Id  
434 - * @param shutup 是否禁言  
435 - * @param succ 成功回调  
436 - * @param fail 失败回调  
437 - *  
438 - * @return 0:成功;1:失败  
439 - */  
440 -- (int)modifyGroupAllShutup:(NSString*)group shutup:(BOOL)shutup succ:(TIMSucc)succ fail:(TIMFail)fail;  
441 -  
442 -/**  
443 - * 获取群组未决列表  
444 - *  
445 - * 1. 群未决消息泛指所有需要审批的群相关的操作(例如:加群待审批,拉人入群待审批等等)。即便审核通过或者拒绝后,该条信息也可通过此接口拉回,拉回的信息中有已决标志  
446 - * 2. 审批人:有权限拉取相关信息,如果 UserA 申请加入群 GroupA,则群管理员可获取此未决相关信息,UserA 因为没有审批权限,不需要拉取未决信息。如果 AdminA 拉 UserA 进去 GroupA,则 UserA 可以拉取此未决相关信息,因为该未决信息待 UserA 审批。  
447 - *  
448 - * @param option 未决参数配置  
449 - * @param succ 成功回调,返回未决列表  
450 - * @param fail 失败回调  
451 - *  
452 - * @return 0:成功;1:失败  
453 - */  
454 -- (int)getPendencyFromServer:(TIMGroupPendencyOption*)option succ:(TIMGetGroupPendencyListSucc)succ fail:(TIMFail)fail;  
455 -  
456 -/**  
457 - * 群未决已读上报  
458 - *  
459 - * 对于未决信息,SDK 可对其和之前的所有未决信息上报已读。上报已读后,仍然可以拉取到这些未决信息,但可通过对已读时戳的判断判定未决信息是否已读。  
460 - *  
461 - * @param timestamp 上报已读时间戳  
462 - * @param succ 成功回调  
463 - * @param fail 失败回调  
464 - *  
465 - * @return 0:成功;1:失败  
466 - */  
467 -- (int)pendencyReport:(uint64_t)timestamp succ:(TIMSucc)succ fail:(TIMFail)fail;  
468 -  
469 -/**  
470 - * 获取用户所在群组信息(暂未实现)  
471 - *  
472 - * 开启本地缓存后有效  
473 - *  
474 - * @param groups 群组id(NSString*)列表,nil时返回群组列表  
475 - *  
476 - * @return 群组信息(TIMGroupInfo*)列表,assistant未同步时返回nil  
477 - */  
478 -- (NSArray*)getGroupInfo:(NSArray*)groups;  
479 -  
480 -@end  
481 -  
482 -#endif /* TIMGroupManager_Ext_h */  
@@ -11,18 +11,91 @@ @@ -11,18 +11,91 @@
11 11
12 #import "TIMComm.h" 12 #import "TIMComm.h"
13 13
14 -  
15 @interface TIMGroupManager : NSObject 14 @interface TIMGroupManager : NSObject
16 15
  16 +#pragma mark 一,获取群组实例
  17 +/////////////////////////////////////////////////////////////////////////////////
  18 +//
  19 +// (一)获取群组实例
  20 +//
  21 +/////////////////////////////////////////////////////////////////////////////////
  22 +/// @name 获取群组实例
  23 +/// @{
17 /** 24 /**
18 - * 获取群管理器实例 25 + * 1.1 获取群管理器实例
19 * 26 *
20 * @return 管理器实例 27 * @return 管理器实例
21 */ 28 */
22 + (TIMGroupManager*)sharedInstance; 29 + (TIMGroupManager*)sharedInstance;
23 30
  31 +///@}
  32 +
  33 +#pragma mark 二,创建/删除/加入/退出群组
  34 +/////////////////////////////////////////////////////////////////////////////////
  35 +//
  36 +// (二)创建/删除/加入/退出群组
  37 +//
  38 +/////////////////////////////////////////////////////////////////////////////////
  39 +/// @name 创建/删除/加入/退出群组
  40 +/// @{
  41 +
24 /** 42 /**
25 - * 创建群组 43 + * 1.1 创建私有群
  44 + *
  45 + * 快速创建私有群,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)
  46 + *
  47 + * @param members 群成员,NSString* 数组
  48 + * @param groupName 群名
  49 + * @param succ 成功回调 groupId
  50 + * @param fail 失败回调
  51 + *
  52 + * @return 0:成功;1:失败
  53 + */
  54 +- (int)createPrivateGroup:(NSArray<NSString *>*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  55 +
  56 +/**
  57 + * 1.2 创建公开群
  58 + *
  59 + * 快速创建公开群,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)
  60 + *
  61 + * @param members 群成员,NSString* 数组
  62 + * @param groupName 群名
  63 + * @param succ 成功回调 groupId
  64 + * @param fail 失败回调
  65 + *
  66 + * @return 0:成功;1:失败
  67 + */
  68 +- (int)createPublicGroup:(NSArray<NSString *>*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  69 +
  70 +/**
  71 + * 1.3 创建聊天室
  72 + *
  73 + * 快速创建聊天室,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)
  74 + *
  75 + * @param members 群成员,NSString* 数组
  76 + * @param groupName 群名
  77 + * @param succ 成功回调 groupId
  78 + * @param fail 失败回调
  79 + *
  80 + * @return 0:成功;1:失败
  81 + */
  82 +- (int)createChatRoomGroup:(NSArray<NSString *>*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  83 +
  84 +/**
  85 + * 1.4 创建音视频聊天室
  86 + *
  87 + * 快速创建音视频聊天室,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)
  88 + *
  89 + * @param groupName 群名
  90 + * @param succ 成功回调 groupId
  91 + * @param fail 失败回调
  92 + *
  93 + * @return 0:成功;1:失败
  94 + */
  95 +- (int)createAVChatRoomGroup:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  96 +
  97 +/**
  98 + * 1.5 创建指定类型和 ID 的群组
26 * 99 *
27 * 1. 默认创建群组时,IM 通讯云服务器会生成一个唯一的 ID,该 ID 将以 @TGS# 开头,且保证在 App 中唯一,以便后续操作。 100 * 1. 默认创建群组时,IM 通讯云服务器会生成一个唯一的 ID,该 ID 将以 @TGS# 开头,且保证在 App 中唯一,以便后续操作。
28 * 2. 如果用户需要自定义群组 ID,在创建时可指定 ID,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长 48 个字节,且前缀不能为 @TGS#(避免与默认分配的群组 ID 混淆) 101 * 2. 如果用户需要自定义群组 ID,在创建时可指定 ID,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长 48 个字节,且前缀不能为 @TGS#(避免与默认分配的群组 ID 混淆)
@@ -38,52 +111,499 @@ @@ -38,52 +111,499 @@
38 - (int)createGroup:(NSString*)type groupId:(NSString*)groupId groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail; 111 - (int)createGroup:(NSString*)type groupId:(NSString*)groupId groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
39 112
40 /** 113 /**
41 - * 解散群组 114 + * 1.6 创建自定义群组
  115 + *
  116 + * 在创建群组时,除了设置默认的成员以及群名外,还可以设置如群公告、群简介等字段。
  117 + *
  118 + * @param groupInfo 群组信息,详情请参考 TIMComm+Group.h 里面的 TIMCreateGroupInfo 定义
  119 + * @param succ 成功回调 groupId
  120 + * @param fail 失败回调
  121 + *
  122 + * @return 0:成功;1:失败
  123 + */
  124 +- (int)createGroup:(TIMCreateGroupInfo*)groupInfo succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  125 +
  126 +/**
  127 + * 1.7 解散群组
42 * 128 *
43 * 1. 私有群:任何人都无法解散群组 129 * 1. 私有群:任何人都无法解散群组
44 * 2. 公开群、聊天室、直播大群:群主可以解散群组。 130 * 2. 公开群、聊天室、直播大群:群主可以解散群组。
45 * 131 *
46 - * @param group 群组Id  
47 - * @param succ 成功回调  
48 - * @param fail 失败回调 132 + * @param groupId 群组Id
  133 + * @param succ 成功回调
  134 + * @param fail 失败回调
49 * 135 *
50 * @return 0:成功;1:失败 136 * @return 0:成功;1:失败
51 */ 137 */
52 -- (int)deleteGroup:(NSString*)group succ:(TIMSucc)succ fail:(TIMFail)fail; 138 +- (int)deleteGroup:(NSString*)groupId succ:(TIMSucc)succ fail:(TIMFail)fail;
53 139
54 /** 140 /**
55 - * 申请加群 141 + * 1.8 申请加群
56 * 142 *
57 * 1. 私有群:不能由用户主动申请入群。 143 * 1. 私有群:不能由用户主动申请入群。
58 * 2. 公开群、聊天室:可以主动申请进入。 144 * 2. 公开群、聊天室:可以主动申请进入。
59 * 3. 直播大群:可以任意加入群组。 145 * 3. 直播大群:可以任意加入群组。
60 - * 4. 如果群组设置为需要审核,申请入群后管理员和群主会收到申请入群系统消息 TIMGroupSystemElem,判断 TIMGroupSystemElem 的 Type 类型如果是 TIM_GROUP_SYSTEM_ADD_GROUP_REQUEST_TYPE ,调用消息的 accept 接口同意入群,申请人会收到同意入群的消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_ADD_GROUP_ACCEPT_TYPE),调用 refuse 接口拒绝入群,申请人会收到拒绝入群的消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_ADD_GROUP_REFUSE_TYPE)。 146 + * 4. 如果群组设置为需要审核,申请入群后管理员和群主会收到申请入群系统消息 TIMGroupSystemElem,判断 TIMGroupSystemElem 的 Type 类型如果是 TIM_GROUP_SYSTEM_ADD_GROUP_REQUEST_TYPE ,这时候调用 getPendencyFromServer 获取群未决列表,调用 TIMGroupPendencyItem 对象调用 accept 接口同意入群,申请人会收到同意入群的消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_ADD_GROUP_ACCEPT_TYPE),调用 refuse 接口拒绝入群,申请人会收到拒绝入群的消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_ADD_GROUP_REFUSE_TYPE)。
61 * 5. 如果群主设置为任何人可加入,则直接入群成功。 147 * 5. 如果群主设置为任何人可加入,则直接入群成功。
62 * 148 *
63 - * @param group 申请加入的群组Id 149 + * @param groupId 申请加入的群组Id
64 * @param msg 申请消息 150 * @param msg 申请消息
65 * @param succ 成功回调(申请成功等待审批) 151 * @param succ 成功回调(申请成功等待审批)
66 * @param fail 失败回调 152 * @param fail 失败回调
67 * 153 *
68 * @return 0:成功;1:失败 154 * @return 0:成功;1:失败
69 */ 155 */
70 -- (int)joinGroup:(NSString*)group msg:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail; 156 +- (int)joinGroup:(NSString*)groupId msg:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
71 157
72 /** 158 /**
73 - * 主动退出群组 159 + * 1.9 主动退出群组
74 * 160 *
75 * 1. 私有群:全员可退出群组。 161 * 1. 私有群:全员可退出群组。
76 * 2. 公开群、聊天室、直播大群:群主不能退出。 162 * 2. 公开群、聊天室、直播大群:群主不能退出。
77 * 3. 当用户主动退出群组时,该用户会收到退群消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_QUIT_GROUP_TYPE),只有退群的用户自己可以收到。当用户调用 QuitGroup 时成功回调返回,表示已退出成功,此消息主要为了多终端同步,其他终端可以作为更新群列表的时机,本终端可以选择忽略。 163 * 3. 当用户主动退出群组时,该用户会收到退群消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_QUIT_GROUP_TYPE),只有退群的用户自己可以收到。当用户调用 QuitGroup 时成功回调返回,表示已退出成功,此消息主要为了多终端同步,其他终端可以作为更新群列表的时机,本终端可以选择忽略。
78 * 164 *
79 - * @param group 群组Id  
80 - * @param succ 成功回调  
81 - * @param fail 失败回调 165 + * @param groupId 群组Id
  166 + * @param succ 成功回调
  167 + * @param fail 失败回调
82 * 168 *
83 * @return 0:成功;1:失败 169 * @return 0:成功;1:失败
84 */ 170 */
85 -- (int)quitGroup:(NSString*)group succ:(TIMSucc)succ fail:(TIMFail)fail; 171 +- (int)quitGroup:(NSString*)groupId succ:(TIMSucc)succ fail:(TIMFail)fail;
86 172
87 -@end  
88 173
  174 +///@}
  175 +
  176 +#pragma mark 三,邀请/删除群成员
  177 +/////////////////////////////////////////////////////////////////////////////////
  178 +//
  179 +// (三)邀请/删除群成员
  180 +//
  181 +/////////////////////////////////////////////////////////////////////////////////
  182 +/// @name 邀请/删除群成员
  183 +/// @{
  184 +
  185 +/**
  186 + * 3.1 邀请好友入群
  187 + *
  188 + * 1. 只有私有群可以邀请用户入群
  189 + * 2. 公开群,聊天室不能邀请用户入群,但在创建群时可以直接拉人入群
  190 + * 3. 音视频聊天室不能拉用户入群,也不能在创建群时拉人入群,只能用户主动进群
  191 + *
  192 + * @param groupId 群组Id
  193 + * @param members 要加入的成员列表(NSString* 类型数组)
  194 + * @param succ 成功回调 (TIMGroupMemberResult 列表)
  195 + * @param fail 失败回调
  196 + *
  197 + * @return 0:成功;1:失败
  198 + */
  199 +- (int)inviteGroupMember:(NSString*)groupId members:(NSArray<NSString *>*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
  200 +
  201 +/**
  202 + * 3.2 删除群成员
  203 + *
  204 + * 1. 私有群:只有创建者可删除群组成员。
  205 + * 2. 公开群、聊天室:只有管理员和群主可以踢人。
  206 + * 3. 对于直播大群:不能踢人。
  207 + *
  208 + * @param groupId 群组Id
  209 + * @param reason 删除原因
  210 + * @param members 要删除的成员列表
  211 + * @param succ 成功回调 (TIMGroupMemberResult 列表)
  212 + * @param fail 失败回调
  213 + *
  214 + * @return 0:成功;1:失败
  215 + */
  216 +- (int)deleteGroupMemberWithReason:(NSString*)groupId reason:(NSString*)reason members:(NSArray<NSString *>*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
  217 +
  218 +///@}
  219 +
  220 +#pragma mark 四,获取群信息
  221 +/////////////////////////////////////////////////////////////////////////////////
  222 +//
  223 +// (四)获取群信息
  224 +//
  225 +/////////////////////////////////////////////////////////////////////////////////
  226 +/// @name 获取群信息
  227 +/// @{
  228 +
  229 +/**
  230 + * 4.1 获取群列表
  231 + *
  232 + * 获取自己所加入的群列表。
  233 + *
  234 + * @param succ 成功回调,NSArray 列表为 TIMGroupInfo,结构体只包含 group|groupName|groupType|faceUrl|allShutup|selfInfo 信息
  235 + * @param fail 失败回调
  236 + *
  237 + * @return 0:成功;1:失败
  238 + */
  239 +- (int)getGroupList:(TIMGroupListSucc)succ fail:(TIMFail)fail;
  240 +
  241 +/**
  242 + * 4.2 获取服务器存储的群组信息
  243 + *
  244 + * 1. 无论是公开群还是私有群,群成员均可以拉到群组信息。
  245 + * 2. 如果是公开群,非群组成员可以拉到 group|groupName|owner|groupType|createTime|maxMemberNum|memberNum|introduction|faceURL|addOpt|onlineMemberNum|customInfo 这些字段信息。如果是私有群,非群组成员拉取不到群组信息。
  246 + *
  247 + * @param succ 成功回调,NSArray 列表为 TIMGroupInfoResult,不包含 selfInfo 信息
  248 + * @param fail 失败回调
  249 + *
  250 + * @return 0:成功;1:失败
  251 + */
  252 +- (int)getGroupInfo:(NSArray*)groups succ:(TIMGroupListSucc)succ fail:(TIMFail)fail;
  253 +
  254 +/**
  255 + * 4.3 获取本地存储的群组信息
  256 + *
  257 + * 1. 无论是公开群还是私有群,群成员均可以拉到群组信息。
  258 + * 2. 如果是公开群,非群组成员可以拉到 group|groupName|owner|groupType|createTime|maxMemberNum|memberNum|introduction|faceURL|addOpt|onlineMemberNum|customInfo 这些字段信息。如果是私有群,非群组成员拉取不到群组信息。
  259 + *
  260 + * @param groupId 群组Id
  261 + *
  262 + * @return 群组信息
  263 + */
  264 +- (TIMGroupInfo *)queryGroupInfo:(NSString *)groupId;
  265 +
  266 +/**
  267 + * 4.4 获取群成员列表
  268 + *
  269 + * @param groupId 群组Id
  270 + * @param succ 成功回调 (TIMGroupMemberInfo 列表)
  271 + * @param fail 失败回调
  272 + *
  273 + * @return 0:成功;1:失败
  274 + */
  275 +- (int)getGroupMembers:(NSString*)groupId succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
  276 +
  277 +/**
  278 + * 4.5 获取本人在群组内的成员信息
  279 + *
  280 + * @param groupId 群组Id
  281 + * @param succ 成功回调,返回信息
  282 + * @param fail 失败回调
  283 + *
  284 + * @return 0:成功;1:失败
  285 + */
  286 +- (int)getGroupSelfInfo:(NSString*)groupId succ:(TIMGroupSelfSucc)succ fail:(TIMFail)fail;
  287 +
  288 +/**
  289 + * 4.6 获取群组指定成员的信息
  290 + *
  291 + * 获取群组指定成员的信息,需要设置群成员 members,其他限制参考 getGroupMembers
  292 + *
  293 + * @param groupId 群组Id
  294 + * @param members 成员Id(NSString*)列表
  295 + * @param succ 成功回调 (TIMGroupMemberInfo 列表)
  296 + * @param fail 失败回调
  297 + *
  298 + * @return 0:成功;1:失败
  299 + */
  300 +- (int)getGroupMembersInfo:(NSString*)groupId members:(NSArray<NSString *>*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
  301 +
  302 +/**
  303 + * 4.7 获取指定类型的成员列表(支持按字段拉取,分页)
  304 + *
  305 + * @param groupId 群组Id
  306 + * @param filter 群成员角色过滤方式
  307 + * @param flags 拉取资料标志
  308 + * @param custom 要获取的自定义key(NSString*)列表
  309 + * @param nextSeq 分页拉取标志,第一次拉取填0,回调成功如果 nextSeq 不为零,需要分页,传入再次拉取,直至为0
  310 + * @param succ 成功回调
  311 + * @param fail 失败回调
  312 + * @return 0:成功;1:失败
  313 + */
  314 +- (int)getGroupMembers:(NSString*)groupId ByFilter:(TIMGroupMemberFilter)filter flags:(TIMGetGroupMemInfoFlag)flags custom:(NSArray<NSString *>*)custom nextSeq:(uint64_t)nextSeq succ:(TIMGroupMemberSuccV2)succ fail:(TIMFail)fail;
  315 +
  316 +/**
  317 + * 4.8 获取接受消息选项
  318 + *
  319 + * @param groupId 群组Id
  320 + * @param succ 成功回调, TIMGroupReceiveMessageOpt 0:接收消息;1:不接收消息,服务器不进行转发;2:接受消息,不进行 iOS APNs 推送
  321 + * @param fail 失败回调
  322 + *
  323 + * @return 0:成功;1:失败
  324 + */
  325 +- (int)getReciveMessageOpt:(NSString*)groupId succ:(TIMGroupReciveMessageOptSucc)succ fail:(TIMFail)fail;
  326 +
  327 +///@}
  328 +
  329 +#pragma mark 五,修改群信息
  330 +/////////////////////////////////////////////////////////////////////////////////
  331 +//
  332 +// (五)修改群信息
  333 +//
  334 +/////////////////////////////////////////////////////////////////////////////////
  335 +/// @name 修改群信息
  336 +/// @{
  337 +
  338 +/**
  339 + * 5.1 修改群名
  340 + *
  341 + * 1. 公开群、聊天室和直播大群:只有群主或者管理员可以修改群名。
  342 + * 2. 私有群:任何人可修改群名。
  343 + *
  344 + * @param groupId 群组Id
  345 + * @param groupName 新群名
  346 + * @param succ 成功回调
  347 + * @param fail 失败回调
  348 + *
  349 + * @return 0:成功;1:失败
  350 + */
  351 +- (int)modifyGroupName:(NSString*)groupId groupName:(NSString*)groupName succ:(TIMSucc)succ fail:(TIMFail)fail;
  352 +
  353 +/**
  354 + * 5.2 修改群简介
  355 + *
  356 + * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群简介。
  357 + * 2. 私有群:任何人可修改群简介。
  358 + *
  359 + * @param groupId 群组Id
  360 + * @param introduction 群简介(最长120字节)
  361 + * @param succ 成功回调
  362 + * @param fail 失败回调
  363 + *
  364 + * @return 0:成功;1:失败
  365 + */
  366 +- (int)modifyGroupIntroduction:(NSString*)groupId introduction:(NSString*)introduction succ:(TIMSucc)succ fail:(TIMFail)fail;
  367 +
  368 +/**
  369 + * 5.3 修改群公告
  370 + *
  371 + * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群公告。
  372 + * 2. 私有群:任何人可修改群公告。
  373 + *
  374 + * @param groupId 群组Id
  375 + * @param notification 群公告(最长150字节)
  376 + * @param succ 成功回调
  377 + * @param fail 失败回调
  378 + *
  379 + * @return 0:成功;1:失败
  380 + */
  381 +- (int)modifyGroupNotification:(NSString*)groupId notification:(NSString*)notification succ:(TIMSucc)succ fail:(TIMFail)fail;
  382 +
  383 +/**
  384 + * 5.4 修改群头像
  385 + *
  386 + * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群头像。
  387 + * 2. 私有群:任何人可修改群头像。
  388 + *
  389 + * @param groupId 群组Id
  390 + * @param url 群头像地址(最长100字节)
  391 + * @param succ 成功回调
  392 + * @param fail 失败回调
  393 + *
  394 + * @return 0:成功;1:失败
  395 + */
  396 +- (int)modifyGroupFaceUrl:(NSString*)groupId url:(NSString*)url succ:(TIMSucc)succ fail:(TIMFail)fail;
  397 +
  398 +/**
  399 + * 5.5 修改加群选项
  400 + *
  401 + * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改加群选项。
  402 + * 2. 私有群:只能通过邀请加入群组,不能主动申请加入某个群组。
  403 + *
  404 + * @param groupId 群组Id
  405 + * @param opt 加群选项,详见 TIMGroupAddOpt
  406 + * @param succ 成功回调
  407 + * @param fail 失败回调
  408 + *
  409 + * @return 0:成功;1:失败
  410 + */
  411 +- (int)modifyGroupAddOpt:(NSString*)groupId opt:(TIMGroupAddOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
  412 +
  413 +/**
  414 + * 5.6 修改群组是否可被搜索属性
  415 + *
  416 + * @param groupId 群组Id
  417 + * @param searchable 是否能被搜索
  418 + * @param succ 成功回调
  419 + * @param fail 失败回调
  420 + *
  421 + * @return 0:成功;1:失败
  422 + */
  423 +- (int)modifyGroupSearchable:(NSString*)groupId searchable:(BOOL)searchable succ:(TIMSucc)succ fail:(TIMFail)fail;
  424 +
  425 +/**
  426 + * 5.8 修改群组全员禁言属性
  427 + *
  428 + * 1. 群主、管理员:有权限进行全员禁言的操作。
  429 + * 2. 所有群组类型:都支持全员禁言的操作。
  430 + *
  431 + * @param groupId 群组Id
  432 + * @param shutup 是否禁言
  433 + * @param succ 成功回调
  434 + * @param fail 失败回调
  435 + *
  436 + * @return 0:成功;1:失败
  437 + */
  438 +- (int)modifyGroupAllShutup:(NSString*)groupId shutup:(BOOL)shutup succ:(TIMSucc)succ fail:(TIMFail)fail;
  439 +
  440 +/**
  441 + * 5.9 修改群自定义字段集合
  442 + *
  443 + * 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限。
  444 + *
  445 + *
  446 + * @param groupId 群组Id
  447 + * @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型,value 长度不超过 512 字节
  448 + * @param succ 成功回调
  449 + * @param fail 失败回调
  450 + *
  451 + * @return 0:成功;1:失败
  452 + */
  453 +- (int)modifyGroupCustomInfo:(NSString*)groupId customInfo:(NSDictionary<NSString *,NSData *>*)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
  454 +
  455 +/**
  456 + * 5.10 转让群给新群主
  457 + *
  458 + * 1. 只有群主才有权限进行群转让操作。
  459 + * 2. 直播大群不能进行群转让操作。
  460 + *
  461 + * @param groupId 群组Id
  462 + * @param identifier 新的群主Id
  463 + * @param succ 成功回调
  464 + * @param fail 失败回调
  465 + *
  466 + * @return 0:成功;1:失败
  467 + */
  468 +- (int)modifyGroupOwner:(NSString*)groupId user:(NSString*)identifier succ:(TIMSucc)succ fail:(TIMFail)fail;
  469 +
  470 +///@}
  471 +
  472 +#pragma mark 六,修改群成员信息
  473 +/////////////////////////////////////////////////////////////////////////////////
  474 +//
  475 +// (六)修改群成员信息
  476 +//
  477 +/////////////////////////////////////////////////////////////////////////////////
  478 +/// @name 修改群成员信息
  479 +/// @{
  480 +
  481 +/**
  482 + * 6.1 修改群成员名片
  483 + *
  484 + * 只有本人、管理员或群主能够调用
  485 + *
  486 + * @param groupId 群组Id
  487 + * @param identifier 被操作用户identifier
  488 + * @param nameCard 群名片
  489 + * @param succ 成功回调
  490 + * @param fail 失败回调
  491 + *
  492 + * @return 0:成功;1:失败
  493 + */
  494 +- (int)modifyGroupMemberInfoSetNameCard:(NSString*)groupId user:(NSString*)identifier nameCard:(NSString*)nameCard succ:(TIMSucc)succ fail:(TIMFail)fail;
  495 +
  496 +/**
  497 + * 6.2 修改群成员角色
  498 + *
  499 + * 1. 群主、管理员:可以进行对群成员的身份进行修改。
  500 + * 2. 直播大群:不支持修改用户群内身份。
  501 + *
  502 + * @param groupId 群组Id
  503 + * @param identifier 被修改角色的用户identifier
  504 + * @param role 角色(注意:不能修改为群主),详见 TIMGroupMemberRole
  505 + * @param succ 成功回调
  506 + * @param fail 失败回调
  507 + *
  508 + * @return 0:成功;1:失败
  509 + */
  510 +- (int)modifyGroupMemberInfoSetRole:(NSString*)groupId user:(NSString*)identifier role:(TIMGroupMemberRole)role succ:(TIMSucc)succ fail:(TIMFail)fail;
  511 +
  512 +/**
  513 + * 6.3 修改群组成员是否可见属性
  514 + *
  515 + * @param groupId 群组Id
  516 + * @param visible 是否可见
  517 + * @param succ 成功回调
  518 + * @param fail 失败回调
  519 + *
  520 + * @return 0:成功;1:失败
  521 + */
  522 +- (int)modifyGroupMemberVisible:(NSString*)groupId visible:(BOOL)visible succ:(TIMSucc)succ fail:(TIMFail)fail;
  523 +
  524 +/**
  525 + * 6.4 禁言用户
  526 + *
  527 + * 只有管理员或群主能够调用
  528 + *
  529 + * @param groupId 群组Id
  530 + * @param identifier 被禁言的用户identifier
  531 + * @param stime 禁言时间
  532 + * @param succ 成功回调
  533 + * @param fail 失败回调
  534 + *
  535 + * @return 0:成功;1:失败
  536 + */
  537 +- (int)modifyGroupMemberInfoSetSilence:(NSString*)groupId user:(NSString*)identifier stime:(uint32_t)stime succ:(TIMSucc)succ fail:(TIMFail)fail;
  538 +
  539 +/**
  540 + * 5.7 修改个人接受消息选项
  541 + *
  542 + * 默认情况下,公开群和私有群是接收并离线推送群消息,聊天室和直播大群是接收但不离线推送群消息。
  543 + *
  544 + * @param groupId 群组Id
  545 + * @param opt 接受消息选项,详见 TIMGroupReceiveMessageOpt
  546 + * @param succ 成功回调
  547 + * @param fail 失败回调
  548 + *
  549 + * @return 0:成功;1:失败
  550 + */
  551 +- (int)modifyReceiveMessageOpt:(NSString*)groupId opt:(TIMGroupReceiveMessageOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
  552 +
  553 +/**
  554 + * 6.5 修改群成员自定义字段集合
  555 + *
  556 + * 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群成员维度自定义字段 配置相关的 key 和权限。
  557 + *
  558 + * @param groupId 群组 Id
  559 + * @param identifier 被操作用户 identifier
  560 + * @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型,value 长度不超过 64 字节
  561 + * @param succ 成功回调
  562 + * @param fail 失败回调
  563 + *
  564 + * @return 0:成功;1:失败
  565 + */
  566 +- (int)modifyGroupMemberInfoSetCustomInfo:(NSString*)groupId user:(NSString*)identifier customInfo:(NSDictionary<NSString*,NSData*> *)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
  567 +
  568 +///@}
  569 +
  570 +#pragma mark 七,群未决逻辑
  571 +/////////////////////////////////////////////////////////////////////////////////
  572 +//
  573 +// (七)群未处理请求逻辑
  574 +//
  575 +/////////////////////////////////////////////////////////////////////////////////
  576 +/// @name 群未处理请求逻辑
  577 +/// @{
  578 +
  579 +/**
  580 + * 7.1 获取群组未处理请求列表
  581 + *
  582 + * 1. 群未处理请求泛指所有需要审批的群相关的操作(例如:加群待审批,拉人入群待审批等等)。即便审核通过或者拒绝后,该条信息也可通过此接口拉回,拉回的信息中有已处理标志
  583 + * 2. 审批人:有权限拉取相关信息,如果 UserA 申请加入群 GroupA,则群管理员可获取此未处理相关信息,UserA 因为没有审批权限,不需要拉取未处理信息。如果 AdminA 拉 UserA 进去 GroupA,则 UserA 可以拉取此未处理相关信息,因为该未处理信息待 UserA 审批。
  584 + *
  585 + * @param option 拉取群未处理请求参数配置,详情请参考 TIMComm.h -> TIMGroupPendencyOption
  586 + * @param succ 成功回调,返回未决列表
  587 + * @param fail 失败回调
  588 + *
  589 + * @return 0:成功;1:失败
  590 + */
  591 +- (int)getPendencyFromServer:(TIMGroupPendencyOption*)option succ:(TIMGetGroupPendencyListSucc)succ fail:(TIMFail)fail;
  592 +
  593 +/**
  594 + * 7.2 群未处理列表已读上报
  595 + *
  596 + * 对于未处理信息,SDK 可对其和之前的所有未处理请求上报已读。上报已读后,仍然可以拉取到这些未决信息,但可通过对已读时戳的判断判定未决信息是否已读。
  597 + *
  598 + * @param timestamp 上报已读时间戳
  599 + * @param succ 成功回调
  600 + * @param fail 失败回调
  601 + *
  602 + * @return 0:成功;1:失败
  603 + */
  604 +- (int)pendencyReport:(uint64_t)timestamp succ:(TIMSucc)succ fail:(TIMFail)fail;
  605 +
  606 +///@}
  607 +
  608 +@end
89 #endif 609 #endif
  1 +/////////////////////////////////////////////////////////////////////
1 // 2 //
2 -// TIMManager+MsgExt.h  
3 -// IMMessageExt 3 +// 腾讯云通信服务 IMSDK
4 // 4 //
5 -// Created by tomzhu on 2017/1/11. 5 +// 模块名称:TIMManager + MsgExt
6 // 6 //
  7 +// 模块功能:此处主要存放待废弃的 API 函数,建议您使用 TIMManager.h 内部声明的接口函数
7 // 8 //
  9 +/////////////////////////////////////////////////////////////////////
8 10
9 #ifndef TIMManager_MsgExt_h 11 #ifndef TIMManager_MsgExt_h
10 #define TIMManager_MsgExt_h 12 #define TIMManager_MsgExt_h
11 13
12 #import "TIMManager.h" 14 #import "TIMManager.h"
13 -#import "TIMComm+MsgExt.h"  
14 -  
15 -@class TIMMessage;  
16 15
  16 +/**
  17 + * IMSDK 扩展类,此处主要存放待废弃的 API 函数,建议您使用 TIMManager.h 内部声明的接口函数
  18 + */
17 @interface TIMManager (MsgExt) 19 @interface TIMManager (MsgExt)
18 20
19 /** 21 /**
20 - * 发送消息给多个用户 22 + * 获取群管理器
21 * 23 *
22 - * @param msg 发送的消息  
23 - * @param users 目标用户的id列表  
24 - * @param succ 成功回调  
25 - * @param fail 失败回调  
26 - *  
27 - * @return 0 发送成功 24 + * 此函数待废弃,请直接使用 TIMGroupManager 的 sharedInstance 函数
  25 + *
  26 + * @return 群管理器,详情请参考 TIMGroupManager.h 中的 TIMGroupManager 定义
28 */ 27 */
29 -- (int)sendMessage:(TIMMessage*)msg toUsers:(NSArray*)users succ:(TIMSucc)succ fail:(TIMSendToUsersFail)fail; 28 +- (TIMGroupManager*)groupManager;
  29 +
30 30
31 /** 31 /**
32 - * 获取会话(TIMConversation*)列表 32 + * 获取好友管理器
33 * 33 *
34 - * @return 会话列表 34 + * 此函数待废弃,请直接使用 TIMFriendshipManager 的 sharedInstance 函数
  35 + *
  36 + * @return 好友管理器,详情请参考 TIMFriendshipManager.h 中的 TIMFriendshipManager 定义
35 */ 37 */
36 -- (NSArray*)getConversationList; 38 +- (TIMFriendshipManager*)friendshipManager;
37 39
38 /** 40 /**
39 - * 删除会话  
40 - *  
41 - * @param type 会话类型,TIM_C2C:表示单聊;TIM_GROUP:表示群聊  
42 - * @param receiver 用户 identifier 或者群组 Id 41 + * 获取会话数量
43 * 42 *
44 - * @return TRUE:删除成功;FALSE:删除失败 43 + * @return 会话数量
45 */ 44 */
46 -- (BOOL)deleteConversation:(TIMConversationType)type receiver:(NSString*)receiver; 45 +- (int)conversationCount;
47 46
48 /** 47 /**
49 - * 删除会话和消息  
50 - *  
51 - * 这里只是删除本地消息,通过 getMessage 会拉取到漫游消息,所以存在删除消息成功,但是拉取到消息的情况,取决于是否重新从漫游拉回到本地。如果不需要拉取漫游,可以通过 getLocalMessage 获取本地消息,或者只通过 getMessage 拉取指定条数(如未读条数数量)的消息。 48 + * 发送消息给多个用户
52 * 49 *
53 - * @param type 会话类型,TIM_C2C:表示单聊;TIM_GROUP:表示群聊  
54 - * @param receiver 用户identifier 或者 群组 Id 50 + * @param msg 发送的消息
  51 + * @param users 目标用户的id列表
  52 + * @param succ 成功回调
  53 + * @param fail 失败回调
55 * 54 *
56 - * @return TRUE:删除成功;FALSE:删除失败 55 + * @return 0 发送成功
57 */ 56 */
58 -- (BOOL)deleteConversationAndMessages:(TIMConversationType)type receiver:(NSString*)receiver; 57 +- (int)sendMessage:(TIMMessage*)msg toUsers:(NSArray*)users succ:(TIMSucc)succ fail:(TIMSendToUsersFail)fail;
59 58
60 /** 59 /**
61 - * 获取会话数量 60 + * 自定义版本号
62 * 61 *
63 - * @return 会话数量 62 + * @param version 版本号
  63 + * @note setCustomVersion() 要在 initSdk() 之前调用。
64 */ 64 */
65 -- (int)conversationCount; 65 +- (void)setCustomVersion:(NSString *)version;
66 66
67 /** 67 /**
68 - * 初始化存储(暂未实现)  
69 - *  
70 - * 仅查看历史消息时使用,如果要收发消息等操作,如login成功,不需要调用此函数 68 + * 删除未读消息的时候减少会话的未读数
71 * 69 *
72 - * @param param 登陆参数(userSig 不用填写)  
73 - * @param succ 成功回调,收到回调时,可以获取会话列表和消息  
74 - * @param fail 失败回调 70 + * 不建议客户使用,删除消息和减少未读数是本地操作,没有和服务器做同步,在程序卸载或则多端同步中会出现未读数不一致的问题。
75 * 71 *
76 - * @return 0:请求成功;1:失败 72 + * @note reduceUnreadNumberWhenRemoveMessage 要在 initSdk() 之前调用。
77 */ 73 */
78 -- (int)initStorage:(TIMLoginParam*)param succ:(TIMLoginSucc)succ fail:(TIMFail)fail; 74 +- (void)reduceUnreadNumberWhenRemoveMessage;
79 75
80 @end 76 @end
81 77