TIMManager.h
14.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
//
// TIMManager.h
// ImSDK
//
// Created by bodeng on 28/1/15.
// Copyright (c) 2015 tencent. All rights reserved.
//
#ifndef ImSDK_TIMManager_h
#define ImSDK_TIMManager_h
#import "TIMComm.h"
#import "TIMCallback.h"
@class TIMGroupManager;
@class TIMFriendshipManager;
/////////////////////////////////////////////////////////
/// Tencent 开放 SDK API
/////////////////////////////////////////////////////////
/**
* 通讯管理
*/
@interface TIMManager : NSObject
/////////////////////////////////////////////////////////////////////////////////
//
// (一)初始化相关接口函数
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 初始化相关接口
/// @{
/**
* 1.1 获取管理器实例 TIMManager
*
* @return 管理器实例
*/
+ (TIMManager*)sharedInstance;
/**
* 1.2 初始化 SDK,设置全局配置信息
*
* 初始化 SDK 需要设置 TIMSdkConfig 信息,TIMSdkConfig 主要包含 sdkAppId 设置、Log 相关逻辑设置、数据库存储路径设置、网络监听设置等,其中 sdkAppId 的获取请参考官网文档 [跑通Demo(iOS与Mac)](https://cloud.tencent.com/document/product/269/32674)。
*
* @param config 配置信息,全局有效,详情请参考 TIMComm.h 中的 TIMSdkConfig 定义
*
* @return 0:成功;1:失败,config 为 nil
*/
- (int)initSdk:(TIMSdkConfig*)config;
/**
* 1.3 获取全局配置信息
*
* 获取初始化 SDK 时候设置的 TIMSdkConfig,方便客户在上层做相关业务逻辑。
*
* @return 全局配置,详情请参考 TIMComm.h 中的 TIMSdkConfig 定义
*/
- (TIMSdkConfig*)getGlobalConfig;
/**
* 1.4 设置用户配置信息
*
* 1. setUserConfig 要在 initSdk 之后,login 之前,主要用来开启/关闭自动已读上报和已读回执,设置默认拉取的群组资料,群成员资料字段,监听用户登录状态、会话刷新、消息已读回执、文件上传进度、群组事件通知。
* 2. 自动已读上报默认是开启的,当客户端收到一条未读消息后,Server 默认会删除这条未读消息,切换终端以后无法看到之前终端已经拉回的未读消息,如果需要多终端情况下仍然会有未读,请设置 TIMUserConfig 中的 disableAutoReport 为 YES,一旦禁用自动上报,开发者需要显式调用 setReadMessage,详情请参考官方文档 [未读消息计数](https://cloud.tencent.com/document/product/269/9151)。
* 3. C2C 已读回执默认是关闭的,如果需要开启,请设置 TIMUserConfig 中的 enableReadReceipt 为 YES,收到消息的用户需要显式调用 setReadMessage,发消息的用户才能通过 TIMMessageReceiptListener 监听到消息的已读回执。
* 4. 当您获取群资料的时候,默认只能拉取内置字段,如果想要拉取自定义字段,首先要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限,然后把生成的 key 设置在 IMGroupInfoOption 里面的 groupCustom 字段。需要注意的是,只有对自定义字段 value 做了赋值或则修改,才能拉取到自定义字段。
* 5. 当您获取群成员资料的时候,默认只能拉取内置字段,如果想要拉取自定义字段,首先要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群成员维度自定义字段配置相关的 key 和权限,然后把生成的 key 设置在 TIMGroupMemberInfoOption 里面的 memberCustom 字段。需要注意的是,只有对自定义字段的 value 做了赋值或则修改,才能拉取到自定义字段。
*
* @param config 配置信息,对当前 TIMManager 有效,详情请参考 TIMComm.h 中的 TIMUserConfig 定义
*
* @return 0:成功;1:失败,config 为 nil
*/
- (int)setUserConfig:(TIMUserConfig*)config;
/**
* 1.5 获取用户配置信息
*
* 获取设置的用户配置信息 TIMSdkConfig,方便客户在上层做相关业务逻辑。
*
* @return 当前 manager 绑定用户的配置,详情请参考 TIMComm.h 中的 TIMUserConfig 定义
*/
- (TIMUserConfig*)getUserConfig;
/**
* 1.6 添加消息监听(重复添加无效)
*
* 添加消息监听后,会在 TIMMessageListener 的 onNewMessage 收到回调消息,消息内容通过参数 TIMMessage 传递,通过 TIMMessage 可以获取消息和相关会话的详细信息,如消息文本,语音数据,图片等。详细可参阅 [消息解析](https://cloud.tencent.com/document/product/269/9150#.E6.B6.88.E6.81.AF.E8.A7.A3.E6.9E.90) 部分。
*
* @param listener 回调,详情请参考 TIMCallback.h 中的 TIMMessageListener 定义
*
* @return 0:成功;1:失败,listener 为 nil
*/
- (int)addMessageListener:(id<TIMMessageListener>)listener;
/**
* 1.7 移除消息监听
*
* @param listener 回调,详情请参考 TIMCallback.h 中的 TIMMessageListener 定义
*
* @return 0:成功;1:失败,listener 为 nil
*/
- (int)removeMessageListener:(id<TIMMessageListener>)listener;
/// @}
/////////////////////////////////////////////////////////////////////////////////
//
// (二)登录相关接口
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 登录相关接口
/// @{
/**
* 2.1 登录
*
* 1. 登录需要设置用户名 identifier 和用户签名 userSig,userSig 的生成请参考官网文档 [UserSig 后台 API](https://cloud.tencent.com/document/product/269/32688)。
* 2. 如果 userSig 过期,登录会返回 ERR_USER_SIG_EXPIRED:6206 错误码,收到错误码后请生成新的 userSig 重新登录。
* 3. 用户在线情况下被踢,会在 TIMUserConfig 里面配置的 TIMUserStatusListener 监听器获取 onForceOffline 回调,收到回调后可以选择重新登录。
* 4. 用户离线状态下被踢,由于此时用户不在线,无法感知此事件,为了显式提醒用户,用户重新登录时,会返回 ERR_IMSDK_KICKED_BY_OTHERS:6208 错误码,表明之前被踢,如果需要把对方踢下线,再次调用 login 强制上线,更多详情请参考 [用户状态变更](https://cloud.tencent.com/document/product/269/9148#5.-.E7.94.A8.E6.88.B7.E7.8A.B6.E6.80.81.E5.8F.98.E6.9B.B4)。
*
* @param param 登陆参数,详情请参考 TIMComm.h 中的 TIMLoginParam 定义
* @param succ 成功回调,详情请参考 TIMComm.h 中的 TIMLoginSucc 定义
* @param fail 失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义
*
* @return 0:成功;1:失败,请检查 param 参数是否正常
*/
- (int)login: (TIMLoginParam*)param succ:(TIMLoginSucc)succ fail:(TIMFail)fail;
/**
* 2.2 自动登录
*
* 1. 首次登陆之后,SDK 会把登陆信息存在在本地,下次登陆即可调用自动登录
* 2. 如果用户之前没有登录过,或则 APP 被卸载过,自动登录会报 ERR_NO_PREVIOUS_LOGIN:6026 错误,这个时候请调用 login 接口重新登录。
*
* @param param 登陆参数( userSig 不用填),详情请参考 TIMComm.h 中的 TIMLoginParam 定义
* @param succ 成功回调,详情请参考 TIMComm.h 中的 TIMLoginSucc 定义
* @param fail 失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义
*
* @return 0:成功;1:失败,请检查 param 参数是否正常
*/
- (int)autoLogin:(TIMLoginParam*)param succ:(TIMLoginSucc)succ fail:(TIMFail)fail;
/**
* 2.3 登出
*
* 退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
*
* @param succ 成功回调,登出成功
* @param fail 失败回调,返回错误吗和错误信息
*
* @return 0:发送登出包成功,等待回调;1:失败
*/
- (int)logout:(TIMLoginSucc)succ fail:(TIMFail)fail;
/**
* 2.4 获取当前登陆的用户
*
* @return 如果登陆返回用户的 identifier,如果未登录返回 nil
*/
- (NSString*)getLoginUser;
/**
* 2.5 获取当前登录状态
*
* @return 登录状态,详情请参考 TIMComm.h 中的 TIMLoginStatus 定义
*/
- (TIMLoginStatus)getLoginStatus;
/// @}
/////////////////////////////////////////////////////////////////////////////////
//
// (三)获取会话管理器
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 获取会话管理器
/// @{
/**
* 获取会话管理器
*
* TIMConversation 负责会话相关操作,包含发送消息、获取会话消息缓存、获取未读计数等。
*
* @param type 会话类型,TIM_C2C:单聊;TIM_GROUP:群聊;TIM_SYSTEM:系统会话
* @param receiver 会话接收者,C2C:为对方用户;identifier;GROUP:群组 Id;SYSTEM:@""
*
* @return 会话对象,详情请参考 TIMConversation.h 里面的 TIMConversation 定义
*/
- (TIMConversation*)getConversation:(TIMConversationType)type receiver:(NSString*)receiver;
/// @}
/////////////////////////////////////////////////////////////////////////////////
//
// (四)获取群管理器
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 获取群管理器
/// @{
/**
* 获取群管理器
*
* TIMGroupManager 负责创建群、增删成员、以及修改群资料等
*
* @return 群管理器,详情请参考 TIMGroupManager.h 中的 TIMGroupManager 定义
*/
- (TIMGroupManager*)groupManager;
/// @}
/////////////////////////////////////////////////////////////////////////////////
//
// (五)获取好友管理器
//
/////////////////////////////////////////////////////////////////////////////////
///@name 获取好友管理器
/// @{
/**
* 获取好友管理器
*
* TIMFriendshipManager 负责加好友,删除好友,查询好友列表等
*
* @return 好友管理器,详情请参考 TIMFriendshipManager.h 中的 TIMFriendshipManager 定义
*/
- (TIMFriendshipManager*)friendshipManager;
/// @}
/////////////////////////////////////////////////////////////////////////////////
//
// (六)设置 APNs 推送
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 设置 APNs 推送
/// @{
/**
* 6.1. 设置客户端 Token 和证书 busiId
*
* 1. token 是向苹果后台请求 DeviceToken,具体实现请参考 appdelegate.h 里面的 registNotification。
* 2. busiId 是向 IM 控制台上传 iOS 证书(p.12)生成的,具体步骤请参考 [离线推送](https://cloud.tencent.com/document/product/269/9154)。
*
* @param token 详情请参考 TIMComm.h 中的 TIMTokenParam 定义
* @param succ 成功回调,详情请参考 TIMComm.h 中的 TIMSucc 定义
* @param fail 失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义
*
* @return 0:成功;1:失败,token 参数异常
*/
- (int)setToken:(TIMTokenParam*)token succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 6.2. 设置推送声音
*
* 不同用户可能想使用不同的推送声音,TIMAPNSConfig 提供了设置用户声音的字段,可实现单聊声音、群组声音的设置,也可在用户级别设置是否开启推送。
*
* @param config APNS 配置,详情请参考 TIMComm.h 中的 TIMAPNSConfig 定义
* @param succ 成功回调,详情请参考 TIMComm.h 中的 TIMSucc 定义
* @param fail 失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义
*
* @return 0:成功;1:失败,config 参数异常
*/
- (int)setAPNS:(TIMAPNSConfig*)config succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 6.3. 获取推送声音设置
*
* @param succ 成功回调,返回配置信息,详情请参考 TIMComm.h 中的 TIMAPNSConfigSucc 定义
* @param fail 失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义
*
* @return 0:成功;1:失败
*/
- (int)getAPNSConfig:(TIMAPNSConfigSucc)succ fail:(TIMFail)fail;
/**
* 6.4. APP 进后台
*
* APP 进后台的时候需要主动调用 doBackground ,这个时候后台知道 APP 的状态,之后的消息会下发推送通知。
*
* @param param 上报参数,详情请参考 TIMComm.h 中的 TIMBackgroundParam 定义
* @param succ 成功时回调,详情请参考 TIMComm.h 中的 TIMSucc 定义
* @param fail 失败时回调,详情请参考 TIMComm.h 中的 TIMFail 定义
*
* @return 0:成功;1:失败
*/
- (int)doBackground:(TIMBackgroundParam*)param succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 6.5. APP 进后台
*
* APP 进前台的时候需要主动调用 doForeground。
*
* @param succ 成功时回调,详情请参考 TIMComm.h 中的 TIMSucc 定义
* @param fail 失败时回调,详情请参考 TIMComm.h 中的 TIMFail 定义
*
* @return 0:成功;1:失败
*/
- (int)doForeground:(TIMSucc)succ fail:(TIMFail)fail;
/// @}
/////////////////////////////////////////////////////////////////////////////////
//
// (七)多账号登录接口
//
/////////////////////////////////////////////////////////////////////////////////
///@name 多账号登录接口
/// @{
/**
* 创建新的管理器类型(多用户登陆时使用,否则可直接调用 sharedInstance)
*
* @return 管理器实例
*/
+ (TIMManager*)newManager;
/**
* 获取管理器类型(多用户登陆时使用,否则可直接调用 sharedInstance)
*
* @param identifier 用户 identifier
*
* @return 对应管理器类型,如果没有创建过,返回 nil
*/
+ (TIMManager*)getManager:(NSString*)identifier;
/**
* 销毁管理器(多用户登陆时使用,否则可直接调用 sharedInstance)
*
* @param manager 需要销毁的管理器
*/
+ (void)deleteManager:(TIMManager*)manager;
/// @}
/////////////////////////////////////////////////////////////////////////////////
//
// (八)调试相关接口
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 调试相关接口
/// @{
/**
* 获取版本号
*
* @return 返回版本号,字符串表示,例如 v1.1.1
*/
- (NSString*)GetVersion;
/**
* 打印日志,通过 ImSDK 提供的日志功能打印日志
*
* @param level 日志级别,详情请参考 TIMComm.h 中的 TIMLogLevel 定义
* @param tag 模块 tag
* @param msg 要输出的日志内容
*/
- (void)log:(TIMLogLevel)level tag:(NSString*)tag msg:(NSString*)msg;
/**
* 获取日志文件路径
*/
- (NSString*)getLogPath;
/**
* 是否开启 sdk 日志打印
*
* @return YES:允许 log 打印;NO:不允许 log 打印
*/
- (BOOL)getIsLogPrintEnabled;
/**
* 获取日志级别
*
* @return 返回日志级别,详情请参考 TIMComm.h 中的 TIMLogLevel 定义
*/
-(TIMLogLevel) getLogLevel;
/**
* 重置ImSDK配置信息,内部自动化测试使用
*/
- (void)unInit;
///@}
@end
#endif