CNLiveChatManager.h
12.4 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
//
// CNLiveChatManager.h
// CNLiveChatManager
//
// Created by cnliveJunBo on 17/2/27.
// Copyright © 2017年 cnlive. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "CNLiveChatUserInfo.h"
#import "CNLiveChatStatusDefine.h"
#import "CNLiveChatMessageBase.h"
#import "CNLiveChatMessage.h"
#import "CNliveChatImageMessage.h"
#import "CNLiveChatVoiceMessage.h"
#import "CNLiveChatVideoMessage.h"
@protocol CNLiveChatManagerDelegate <NSObject>
@optional
/**
连接状态的的监听器
@param status 网络连接状态码
*/
- (void)onConnectionStatusChanged:(CNLiveConnectionStatus)status;
/**
加入聊天室成功的监听
@param chatroomId 聊天室ID
*/
- (void)onChatRoomJoined:(NSString *)chatroomId;
/*!
加入聊天室失败的监听
@param chatroomId 聊天室ID
@param errorCode 加入失败的错误码
*/
- (void)onChatRoomJoinFailed:(NSString *)chatroomId
errorCode:(CNLiveChatErrorCode)errorCode;
/**
接收消息监听
@param message 消息实体类型对象(包括消息内容,消息ID,会话类型,目标ID,发送者的用户信息)
*/
- (void)onReceived:(CNLiveChatMessageBase *)message;
/**
发送消息进度监听
@param msg 正在上传的消息
@param idx 正在上传的消息的索引
@param taskid 任务id
@param progress 上传进度
*/
- (void)onUploadProgressCallback:(CNLiveChatMessageBase*)msg idx:(uint32_t)idx taskid:(uint32_t)taskid progress:(uint32_t)progress;
/**
当前用户在其他设备上登录,此设备被踢下线。
*/
- (void)kickedByAnotherDevice;
@end
@interface CNLiveChatManager : NSObject
/**
是否是测试环境
*/
@property (nonatomic, readonly, assign) BOOL isTestEnvironment;
/**
聊天SDK代理,设置代理后,实现代理方法。
*/
@property (nonatomic, weak) id<CNLiveChatManagerDelegate> delegate;
/**
当前登录用户的用户信息
@discussion 用于与融云服务器建立连接之后,获取&设置当前用户的用户信息。
用户ID不允许重新设置,只能设置昵称&头像。
*/
@property(nonatomic, strong) CNLiveChatUserInfo *currentUserInfo;
/**
获取SDK版本号
@return SDK版本号
*/
+ (NSString *)getCNLiveChatVersion;
/**
获取视讯聊天核心类单例
@return 视讯聊天核心类单例
@discussion 您可以通过此方法,获取视讯聊天的单例,访问对象中的属性和方法。
*/
+ (instancetype)sharedCNLiveChatManager;
/**
初始化SDK方法
@param appKey 从视讯云平台获取到的appKey
@param appId 从视讯云平台获取到的appId
@warning 必传参数
@discussion 您在使用聊天SDK所有功能之前,您必须先调用此方法初始化SDK。
在App整个生命周期中,您只需要执行一次初始化。
*/
- (void)initWithAppKey:(NSString *)appKey appId:(NSString *)appId;
/**
初始化SDK方法(同上,区别:可以选择测试环境/上线环境)
@param appKey 从视讯云平台获取到的appKey
@param appId 从视讯云平台获取到的appId
@param isTestEnvironment 是否是测试环境
@warning 必传参数
@discussion 您在使用聊天SDK所有功能之前,您必须先调用此方法初始化SDK。
在App整个生命周期中,您只需要执行一次初始化。
*/
- (void)initWithAppKey:(NSString *)appKey appId:(NSString *)appId isTestEnvironment:(BOOL)isTestEnvironment;
/**
匿名连接到视讯云服务器
@param successBlock 连接建立成功的回调。
@param errorBlock 连接建立成功的回调,返回错误码。
注:连接服务器成功后才能使用聊天功能(如:单聊、加入聊天室、聊天室内 聊天);
*/
- (void)connectServerSuccess:(void (^)())successBlock
error:(void (^)(CNLiveChatConnectErrorCode errors, NSString *errorMsg))errorBlock;
/**
以用户信息登陆到视讯云服务器
@param userInfo 用户信息
@param successBlock 登陆成功的回调,返回登陆成功的用户ID。
@param errorBlock 登陆失败的回调,返回错误码。
注:连接服务器成功后才能使用聊天功能(如:单聊、加入聊天室、聊天室内 聊天);
*/
- (void)loginServer:(CNLiveChatUserInfo *)userInfo
success:(void (^)(NSString *userId))successBlock
error:(void (^)(CNLiveChatConnectErrorCode errors, NSString *errorMsg))errorBlock;
/**
当前用户登出服务器
@param successBlock 登出成功的回调,返回登陆成功的用户ID。
@param errorBlock 登出失败的回调,返回错误码。
*/
- (void)logoutServer:(CNLiveIMSucc)successBlock error:(CNLiveIMFail)errorBlock;
/**
断开与服务器的连接
@param successBlock 断开成功的回调,返回登陆成功的用户ID。
@param errorBlock 断开失败的回调,返回错误码。
*/
- (void)disconnectServer:(CNLiveIMSucc)successBlock error:(CNLiveIMFail)errorBlock;
/**
加入已经存在的聊天室
@param targetId 要加入的聊天室ID
@param messageCount 进入聊天室时获取历史消息的数量,-1<=messageCount<=20
-1表示不获取任何历史消息,0表示不特殊设置而使用SDK默认的设置(默认为获取10条),0<messageCount<=20为具体获取的消息数量,最大值为20。
@param successBlock 加入聊天室成功的回调,返回成功加入的聊天室ID。
@param errorBlock 加入聊天室失败的回调,返回错误码以及加入失败的聊天室ID。
*/
- (void)joinExistChatRoom:(NSString *)targetId
messageCount:(int)messageCount
success:(void (^)(NSString *targetId))successBlock
error:(void (^)(CNLiveChatErrorCode errors, NSString *errorMsg))errorBlock;
/**
加入聊天室,若不存在自动创建聊天室
@param targetId 要加入的聊天室ID
@param messageCount 进入聊天室时获取历史消息的数量,-1<=messageCount<=20
-1表示不获取任何历史消息,0表示不特殊设置而使用SDK默认的设置(默认为获取10条),0<messageCount<=20为具体获取的消息数量,最大值为20。
@param successBlock 加入聊天室成功的回调,返回成功加入的聊天室ID
@param errorBlock 加入聊天室失败的回调,返回错误码以及加入失败的聊天室ID
*/
- (void)joinChatRoom:(NSString *)targetId
messageCount:(int)messageCount
success:(void (^)(NSString *targetId))successBlock
error:(void (^)(CNLiveChatErrorCode errors, NSString *errorMsg))errorBlock;
/**
退出聊天室
@param targetId 要退出的聊天室ID
@param successBlock 退出聊天室成功的回调,返回成功退出的聊天室ID
@param errorBlock 退出聊天室失败的回调,返回失败的错误码以及退出失败的聊天室的ID
*/
- (void)quitChatRoom:(NSString *)targetId
success:(void (^)(NSString *targetId))successBlock
error:(void (^)(CNLiveChatErrorCode errors, NSString *errorMsg))errorBlock;
/**
发送文本消息
@param message 消息内容(文本消息 CNLiveChatMessage)
@param type 会话类型(私聊 / 聊天室)
@param targetId 会话目标ID(私聊:用户ID / 聊天室:聊天室ID)
@param successBlock 发送消息成功的回调,消息实体类型对象(包括消息内容,消息ID,会话类型,目标ID,发送者的用户信息)
@param errorBlock 发送消息失败的回调,返回错误码,消息ID,目标ID
*/
- (void)sendMessage:(CNLiveChatMessage *)message
type:(CNLiveConversationType)type
targetId:(NSString *)targetId
success:(void (^)(CNLiveChatMessage * message))successBlock
error:(void (^)(CNLiveChatErrorCode errors, NSString *errorMsg))errorBlock;
/**
发送图片消息
@param type 会话类型(私聊 / 聊天室)
@param targetId 会话目标ID(私聊:用户ID / 聊天室:聊天室ID)
@param content 消息内容(图片类型 CNliveChatImageMessage)
@param successBlock 消息发送成功的回调
@param errorBlock 消息发送失败的回调
*/
- (void)sendMediaMessage:(CNLiveConversationType)type
targetId:(NSString *)targetId
content:(CNliveChatImageMessage *)content
proBlock:(void (^)(CNliveChatImageMessage * message))proBlock
success:(void (^)(CNliveChatImageMessage * message))successBlock
error:(void (^)(CNLiveChatErrorCode errorCode, NSString * errorMsg))errorBlock;
/**
发送语音消息
@param type 会话类型(私聊 / 聊天室)
@param targetId 会话目标ID(私聊:用户ID / 聊天室:聊天室ID)
@param content 消息内容(语音消息 CNLiveChatVoiceMessage)
@param successBlock 消息发送成功的回调
@param errorBlock 消息发送失败的回调
*/
- (void)sendVoiceMessage:(CNLiveConversationType)type
targetId:(NSString *)targetId
content:(CNLiveChatVoiceMessage *)content
proBlock:(void (^)(CNLiveChatVoiceMessage * message))proBlock
success:(void (^)(CNLiveChatVoiceMessage * message))successBlock
error:(void (^)(CNLiveChatErrorCode errorCode, NSString * errorMsg))errorBlock;
/**
发送视频消息
@param type 会话类型(私聊 / 聊天室)
@param targetId 会话目标ID(私聊:用户ID / 聊天室:聊天室ID)
@param content 消息内容(视频消息 CNLiveChatVideoMessage)
@param successBlock 消息发送成功的回调
@param errorBlock 消息发送失败的回调
*/
- (void)sendVideoMessage:(CNLiveConversationType)type
targetId:(NSString *)targetId
content:(CNLiveChatVideoMessage *)content
proBlock:(void (^)(CNLiveChatVideoMessage * message))proBlock
success:(void (^)(CNLiveChatVideoMessage * message))successBlock
error:(void (^)(CNLiveChatErrorCode errorCode, NSString * errorMsg))errorBlock;
/**
获取当前SDK的连接状态
@return 当前SDK的连接状态
*/
- (CNLiveConnectionStatus)getConnectionStatus;
/**
获取某个会话中指定数量的最新消息
@param conversationType 会话类型(私聊 / 聊天室)
@param targetId 会话目标ID(私聊:用户ID / 聊天室:聊天室ID)
@param count 所要获取的消息数量
@param successBlock 成功回调返回消息体
(包括 CNLiveChatMessage文本类型 / CNliveChatImageMessage图片类型 / CNLiveChatVoiceMessage语音类型 /CNLiveChatVideoMessage视频类型)
@param errorBlock 失败回调返回错误码
@discussion
此方法会获取该会话中指定数量的最新消息实体,返回的消息实体按照时间从新到旧排列。
如果会话中的消息数量小于参数count的值,会将该会话中的所有消息返回。
*/
- (void)getLatestMessages:(CNLiveConversationType)conversationType
targetId:(NSString *)targetId
count:(int)count
successBlock:(void(^)(NSArray *msgs))successBlock
errorBlock:(void(^)(int code, NSString *msg))errorBlock;
/**
* 获取本地会话消息
* @param conversationType 会话类型(私聊)
* @param targetId 会话目标ID(私聊:用户ID)
* @param count 获取数量
* @param last 上次最后一条消息
* @param successBlock 成功时回调
* @param errorBlock 失败时回调
*
* @return 0 本次操作成功
*/
- (int)getLocalMessage:(CNLiveConversationType)conversationType
targetId:(NSString *)targetId
count:(int)count
last:(CNLiveChatMessageBase *)last
successBlock:(void(^)(NSArray *msgs))successBlock
errorBlock:(void(^)(int code, NSString *msg))errorBlock;
/**
* 从cache中获取最后几条消息
*
* @param count 需要获取的消息数,最多为20
*
* @return 消息(TIMMessage*)列表,第一条为最新消息
*/
- (NSArray*)getLastMessages:(CNLiveConversationType)conversationType
targetId:(NSString *)targetId
count:(uint32_t)count;
/**
获取聊天室成员人数
@param targetId 聊天室ID
@param successBlock 成功回调,返回聊天室成员数量
@param errorBlock 失败回调,返回错误代码
*/
- (void)getChatRoomInfo:(NSString *)targetId
success:(void (^)(int totalMemberCount))successBlock
error:(void (^)(CNLiveChatErrorCode status, NSString *errorMsg))errorBlock;
@end