CNLiveChatManager.h
6.93 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
//
// 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 "CNLiveChatMessage.h"
@protocol CNLiveChatManagerDelegate <NSObject>
@optional
/**
连接状态的的监听器
@param status 网络连接状态码
*/
- (void)onConnectionStatusChanged:(CNLiveConnectionStatus)status;
/**
加入聊天室成功的监听
@param chatroomId 聊天室ID
*/
- (void)onChatRoomJoined:(NSString *)chatroomId;
/*!
加入聊天室失败的监听
@param chatroomId 聊天室ID
@param errorCode 加入失败的错误码
@discussion 如果错误码是CNLive_KICKED_FROM_CHATROOM或CNLive_CHATROOM_NOT_EXIST,则不会自动重新加入聊天室,App需要按照自己的逻辑处理。
*/
- (void)onChatRoomJoinFailed:(NSString *)chatroomId
errorCode:(CNLiveChatErrorCode)errorCode;
/**
接收消息监听
@param message 消息实体类型对象
*/
- (void)onReceived:(CNLiveChatMessage *)message;
/**
当前用户在其他设备上登录,此设备被踢下线。
*/
- (void)kickedByAnotherDevice;
@end
@interface CNLiveChatManager : NSObject
/**
聊天SDK代理,设置代理后,实现代理方法。
*/
@property (nonatomic, weak) id<CNLiveChatManagerDelegate> delegate;
/**
当前登录用户的用户信息
@discussion 用于与融云服务器建立连接之后,获取&设置当前用户的用户信息。
用户ID不允许重新设置,只能设置昵称&头像。
*/
@property(nonatomic, strong) CNLiveChatUserInfo *currentUserInfo;
/**
获取SDK版本号
@return SDK版本号
*/
+ (NSString *)getVersion;
/**
获取视讯聊天核心类单例
@return 视讯聊天核心类单例
@discussion 您可以通过此方法,获取视讯聊天的单例,访问对象中的属性和方法。
*/
+ (instancetype)sharedCNLiveChatManager;
/**
初始化SDK方法
@param appKey 从视讯云平台获取到的appKey
@param appId 从视讯云平台获取到的appId
@warning 必传参数
@discussion 您在使用聊天SDK所有功能之前,您必须先调用此方法初始化SDK。
在App整个生命周期中,您只需要执行一次初始化。
*/
- (void)initWithAppKey:(NSString *)appKey appId:(NSString *)appId;
/**
连接到视讯云服务器
@param successBlock 连接建立成功的回调。
@param errorBlock 连接建立成功的回调,返回错误码。
注:连接服务器成功后才能使用聊天功能(如:单聊、加入聊天室、聊天室内 聊天);
*/
- (void)connectServerSuccess:(void (^)())successBlock
error:(void (^)(CNLiveChatConnectErrorCode errors))errorBlock;
/**
以用户信息登陆到视讯云服务器
@param userInfo 用户信息
@param successBlock 登陆成功的回调,返回登陆成功的用户ID。
@param errorBlock 登陆失败的回调,返回错误码。
注:连接服务器成功后才能使用聊天功能(如:单聊、加入聊天室、聊天室内 聊天);
*/
- (void)loginServer:(CNLiveChatUserInfo *)userInfo
success:(void (^)(NSString *userId))successBlock
error:(void (^)(CNLiveChatConnectErrorCode errors))errorBlock;
/**
当前用户登出服务器
*/
- (void)logoutServer;
/**
断开与服务器的连接
@param isReceivePush 与服务器断开后,是否还接收远程推送
*/
- (void)disconnectServer:(BOOL)isReceivePush;
/**
加入已经存在的聊天室(如果不存在或超限会返回聊天室不存在错误23410 或 人数超限23411)
@param targetId 要加入的聊天室ID
@param messageCount 进入聊天室时获取历史消息的数量,-1<=messageCount<=50
-1表示不获取任何历史消息,0表示不特殊设置而使用SDK默认的设置(默认为获取10条),0<messageCount<=50为具体获取的消息数量,最大值为50。
@param successBlock 加入聊天室成功的回调,返回成功加入的聊天室ID。
@param errorBlock 加入聊天室失败的回调,返回错误码以及加入失败的聊天室ID。
*/
- (void)joinExistChatRoom:(NSString *)targetId
messageCount:(int)messageCount
success:(void (^)(NSString *targetId))successBlock
error:(void (^)(CNLiveChatErrorCode errors, NSString *targetId))errorBlock;
/**
加入聊天室,若不存在自动创建聊天室
@param targetId 要加入的聊天室ID
@param messageCount 进入聊天室时获取历史消息的数量,-1<=messageCount<=50
-1表示不获取任何历史消息,0表示不特殊设置而使用SDK默认的设置(默认为获取10条),0<messageCount<=50为具体获取的消息数量,最大值为50。
@param successBlock 加入聊天室成功的回调,返回成功加入的聊天室ID
@param errorBlock 加入聊天室失败的回调,返回错误码以及加入失败的聊天室ID
*/
- (void)joinChatRoom:(NSString *)targetId
messageCount:(int)messageCount
success:(void (^)(NSString *targetId))successBlock
error:(void (^)(CNLiveChatErrorCode errors, NSString *targetId))errorBlock;
/**
退出聊天室
@param targetId 要退出的聊天室ID
@param successBlock 退出聊天室成功的回调,返回成功退出的聊天室ID
@param errorBlock 退出聊天室失败的回调,返回失败的错误码以及退出失败的聊天室的ID
*/
- (void)quitChatRoom:(NSString *)targetId
success:(void (^)(NSString *targetId))successBlock
error:(void (^)(CNLiveChatErrorCode errors, NSString *targetId))errorBlock;
/**
发送消息
@param message 消息内容
@param type 会话类型(私聊 / 聊天室)
@param targetId 会话目标ID(私聊:用户ID / 聊天室:聊天室ID)
@param successBlock 发送消息成功的回调,返回目标ID,消息实体类型对象(包括消息内容,会话类型,目标ID,发送者的用户信息)
@param errorBlock 发送消息失败的回调,返回错误码,目标ID,会话类型
*/
- (void)sendMessage:(NSString *)message
type:(CNLiveConversationType)type
targetId:(NSString *)targetId
success:(void (^)(NSString *targetId, CNLiveChatMessage *message))successBlock
error:(void (^)(CNLiveChatErrorCode errors, NSString *targetId, CNLiveConversationType type))errorBlock;
/**
获取当前SDK的连接状态
@return 当前SDK的连接状态
*/
- (CNLiveConnectionStatus)getConnectionStatus;
/**
获取某个会话中指定数量的最新消息
@param conversationType 会话类型(私聊 / 聊天室)
@param targetId 会话目标ID(私聊:用户ID / 聊天室:聊天室ID)
@param count 所要获取的消息数量
@return 消息数组(CNLiveChatMessage类型)
*/
- (NSArray *)getLatestMessages:(CNLiveConversationType)conversationType
targetId:(NSString *)targetId
count:(int)count;
@end