WFCCIMService.h 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377
  1. //
  2. // WFCCIMService.h
  3. // WFChatClient
  4. //
  5. // Created by heavyrain on 2017/11/5.
  6. // Copyright © 2017年 WildFireChat. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "WFCCMessage.h"
  10. #import "WFCCGroupInfo.h"
  11. #import "WFCCConversationInfo.h"
  12. #import "WFCCUserInfo.h"
  13. #import "WFCCFriendRequest.h"
  14. #import "WFCCConversationSearchInfo.h"
  15. #import "WFCCGroupMember.h"
  16. #import "WFCCGroupSearchInfo.h"
  17. #import "WFCCChatroomInfo.h"
  18. #import "WFCCChatroomMemberInfo.h"
  19. #import "WFCCUnreadCount.h"
  20. #import "WFCCChannelInfo.h"
  21. #import "WFCCPCOnlineInfo.h"
  22. #pragma mark - 频道通知定义
  23. //发送消息状态通知
  24. extern NSString *kSendingMessageStatusUpdated;
  25. extern NSString *kConnectionStatusChanged;
  26. extern NSString *kReceiveMessages;
  27. extern NSString *kRecallMessages;
  28. extern NSString *kDeleteMessages;
  29. extern NSString *kMessageDelivered;
  30. extern NSString *kMessageReaded;
  31. #pragma mark - 枚举值定义
  32. /**
  33. 修改个人信息的内容
  34. - Modify_DisplayName: 修改显示名
  35. - Modify_Portrait: 修改头像
  36. - Modify_Gender: 修改性别
  37. - Modify_Mobile: 修改手机号
  38. - Modify_Email: 修改邮箱
  39. - Modify_Address: 修改地址
  40. - Modify_Company: 修改公司信息
  41. - Modify_Social: 修改社交信息
  42. - Modify_Extra: 修改扩展信息
  43. */
  44. typedef NS_ENUM(NSInteger, ModifyMyInfoType) {
  45. Modify_DisplayName = 0,
  46. Modify_Portrait = 1,
  47. Modify_Gender = 2,
  48. Modify_Mobile = 3,
  49. Modify_Email = 4,
  50. Modify_Address = 5,
  51. Modify_Company = 6,
  52. Modify_Social = 7,
  53. Modify_Extra = 8
  54. };
  55. typedef NS_ENUM(NSInteger, ModifyGroupInfoType) {
  56. Modify_Group_Name = 0,
  57. Modify_Group_Portrait = 1,
  58. Modify_Group_Extra = 2,
  59. Modify_Group_Mute = 3,
  60. Modify_Group_JoinType = 4,
  61. Modify_Group_PrivateChat = 5,
  62. Modify_Group_Searchable = 6,
  63. Modify_Group_History_Message = 7,
  64. Modify_Group_Max_Member_Count = 8
  65. };
  66. typedef NS_ENUM(NSInteger, ModifyChannelInfoType) {
  67. Modify_Channel_Name = 0,
  68. Modify_Channel_Portrait = 1,
  69. Modify_Channel_Desc = 2,
  70. Modify_Channel_Extra = 3,
  71. Modify_Channel_Secret = 4,
  72. Modify_Channel_Callback = 5
  73. };
  74. /**
  75. 个人设置Scope
  76. @discussion 用户设置,1000以内被系统保留。应用不应该直接使用系统预制的范围。应用可以使用1000以上的值。
  77. */
  78. typedef NS_ENUM(NSInteger, UserSettingScope) {
  79. //不能直接使用,调用setConversation:silent:方法会使用到此值。
  80. UserSettingScope_Conversation_Silent = 1,
  81. //不能直接使用
  82. UserSettingScope_Global_Silent = 2,
  83. //不能直接使用,调用setConversation:top:方法会使用到此值。
  84. UserSettingScope_Conversation_Top = 3,
  85. //不能直接使用
  86. UserSettingScope_Hidden_Notification_Detail = 4,
  87. //不能直接使用
  88. UserSettingScope_Group_Hide_Nickname = 5,
  89. //不能直接使用
  90. UserSettingScope_Favourite_Group = 6,
  91. //不能直接使用,协议栈内会使用此值
  92. UserSettingScope_Conversation_Sync = 7,
  93. //不能直接使用,协议栈内会使用此值
  94. UserSettingScope_My_Channel = 8,
  95. //不能直接使用,协议栈内会使用此值
  96. UserSettingScope_Listened_Channel = 9,
  97. //不能直接使用,协议栈内会使用此值
  98. UserSettingScope_PC_Online = 10,
  99. //不能直接使用,协议栈内会使用此值
  100. UserSetting_Conversation_Readed = 11,
  101. //不能直接使用,协议栈内会使用此值
  102. UserSetting_WebOnline = 12,
  103. //不能直接使用,协议栈内会使用此值
  104. UserSetting_DisableRecipt = 13,
  105. //自定义用户设置,请使用1000以上的key
  106. UserSettingScope_Custom_Begin = 1000
  107. } ;
  108. /**
  109. 搜索用户类型
  110. - SearchUserType_General: 模糊搜索diaplayName,精确匹配name和电话
  111. - SearchUserType_Name_Mobile: 精确匹配name和电话
  112. - SearchUserType_Name: 精确匹配name
  113. - SearchUserType_Mobile: 精确匹配电话
  114. */
  115. typedef NS_ENUM(NSInteger, WFCCSearchUserType) {
  116. SearchUserType_General,
  117. SearchUserType_Name_Mobile,
  118. SearchUserType_Name,
  119. SearchUserType_Mobile,
  120. } ;
  121. typedef NS_ENUM(NSInteger, WFCCPlatformType) {
  122. PlatformType_UNSET = 0,
  123. PlatformType_iOS = 1,
  124. PlatformType_Android = 2,
  125. PlatformType_Windows = 3,
  126. PlatformType_OSX = 4,
  127. PlatformType_WEB = 5,
  128. Platform_WX = 6,
  129. Platform_Linux = 7
  130. } ;
  131. #pragma mark - 用户源
  132. /*
  133. * ChatClient内置支持用户信息托管,但对于很多应用来说都已经拥有自己的用户信息。此时可以实现用户源并设置到IMServer中去。这样ChatClient会从源中读取信息,从而ChatUIKit不用修改代码。
  134. * 对于好友关系,由于页面简单。如果客户有自己的好友关系,建议客户自己修改相关UI。
  135. * 对于群组建议使用我们的托管。
  136. */
  137. @protocol WFCCUserSource <NSObject>
  138. - (WFCCUserInfo *)getUserInfo:(NSString *)userId
  139. refresh:(BOOL)refresh;
  140. - (void)searchUser:(NSString *)keyword
  141. searchType:(WFCCSearchUserType)searchType
  142. page:(int)page
  143. success:(void(^)(NSArray<WFCCUserInfo *> *machedUsers))successBlock
  144. error:(void(^)(int errorCode))errorBlock;
  145. -(void)modifyMyInfo:(NSDictionary<NSNumber */*ModifyMyInfoType*/, NSString *> *)values
  146. success:(void(^)(void))successBlock
  147. error:(void(^)(int error_code))errorBlock;
  148. @end
  149. #pragma mark - IM服务
  150. /**
  151. IM服务
  152. */
  153. @interface WFCCIMService : NSObject
  154. /**
  155. IM服务单例
  156. @return IM服务单例
  157. */
  158. + (WFCCIMService*)sharedWFCIMService;
  159. @property(nonatomic, weak)id<WFCCUserSource> userSource;
  160. #pragma mark - 会话相关
  161. /**
  162. 获取会话信息
  163. @param conversationTypes 会话类型
  164. @param lines 默认传 @[@(0)]
  165. @return 会话信息
  166. */
  167. - (NSArray<WFCCConversationInfo *> *)getConversationInfos:(NSArray<NSNumber *> *)conversationTypes
  168. lines:(NSArray<NSNumber *> *)lines;
  169. /**
  170. 获取会话信息
  171. @param conversation 会话
  172. @return 会话信息
  173. */
  174. - (WFCCConversationInfo *)getConversationInfo:(WFCCConversation *)conversation;
  175. /**
  176. 搜索会话
  177. @param keyword 关键词
  178. @param conversationTypes 会话类型
  179. @param lines 默认传 @[@(0)]
  180. @return 会话搜索结果信息
  181. */
  182. - (NSArray<WFCCConversationSearchInfo *> *)searchConversation:(NSString *)keyword inConversation:(NSArray<NSNumber *> *)conversationTypes lines:(NSArray<NSNumber *> *)lines;
  183. /**
  184. 删除会话
  185. @param conversation 会话
  186. @param clearMessage 是否删除会话中的消息
  187. */
  188. - (void)removeConversation:(WFCCConversation *)conversation
  189. clearMessage:(BOOL)clearMessage;
  190. /**
  191. 设置或取消会话置顶
  192. @param conversation 会话
  193. @param top 是否置顶
  194. */
  195. - (void)setConversation:(WFCCConversation *)conversation
  196. top:(BOOL)top
  197. success:(void(^)(void))successBlock
  198. error:(void(^)(int error_code))errorBlock;
  199. /**
  200. 设置会话免打扰
  201. @param conversation 会话
  202. @param silent 是否免打扰
  203. @param successBlock 成功的回调
  204. @param errorBlock 失败的回调
  205. */
  206. - (void)setConversation:(WFCCConversation *)conversation
  207. silent:(BOOL)silent
  208. success:(void(^)(void))successBlock
  209. error:(void(^)(int error_code))errorBlock;
  210. /**
  211. 设置会话草稿
  212. @param conversation 会话
  213. @param draft 草稿
  214. */
  215. - (void)setConversation:(WFCCConversation *)conversation
  216. draft:(NSString *)draft;
  217. /**
  218. 更新会话的时间
  219. @param conversation 会话
  220. @param timestamp 时间戳
  221. */
  222. - (void)setConversation:(WFCCConversation *)conversation
  223. timestamp:(long long)timestamp;
  224. #pragma mark - 未读数相关
  225. /**
  226. 获取指定类型会话的未读数
  227. @param conversationTypes 会话类型
  228. @param lines 默认传 @[@(0)]
  229. @return 未读数
  230. */
  231. - (WFCCUnreadCount *)getUnreadCount:(NSArray<NSNumber *> *)conversationTypes
  232. lines:(NSArray<NSNumber *> *)lines;
  233. /**
  234. 获取某个会话的未读数
  235. @param conversation 会话
  236. @return 未读数
  237. */
  238. - (WFCCUnreadCount *)getUnreadCount:(WFCCConversation *)conversation;
  239. /**
  240. 清空会话未读数
  241. @param conversation 会话
  242. */
  243. - (void)clearUnreadStatus:(WFCCConversation *)conversation;
  244. /**
  245. 清空会话未读数
  246. @param conversationTypes 会话类型
  247. @param lines 线路
  248. */
  249. - (void)clearUnreadStatus:(NSArray<NSNumber *> *)conversationTypes
  250. lines:(NSArray<NSNumber *> *)lines;
  251. /**
  252. 清空所有会话的未读数
  253. */
  254. - (void)clearAllUnreadStatus;
  255. /**
  256. 设置媒体消息已播放(已经放开限制,所有消息都可以设置为已读状态)
  257. @param messageId 消息ID
  258. */
  259. - (void)setMediaMessagePlayed:(long)messageId;
  260. /**
  261. 获取会话内已读状态
  262. @param conversation 会话
  263. @return 会话的每个用户的已读时间
  264. */
  265. - (NSMutableDictionary<NSString *, NSNumber *> *)getConversationRead:(WFCCConversation *)conversation;
  266. /**
  267. 获取会话内已送达状态
  268. @param conversation 会话
  269. @return 会话的每个用户的已送达时间
  270. */
  271. - (NSMutableDictionary<NSString *, NSNumber *> *)getMessageDelivery:(WFCCConversation *)conversation;
  272. #pragma mark - 消息相关
  273. /**
  274. 获取消息
  275. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  276. @param conversation 会话
  277. @param contentTypes 消息类型
  278. @param fromIndex 起始index
  279. @param count 总数
  280. @return 消息实体
  281. */
  282. - (NSArray<WFCCMessage *> *)getMessages:(WFCCConversation *)conversation
  283. contentTypes:(NSArray<NSNumber *> *)contentTypes
  284. from:(NSUInteger)fromIndex
  285. count:(NSInteger)count
  286. withUser:(NSString *)user;
  287. /**
  288. 获取某类会话信息
  289. @param conversationTypes 会话类型
  290. @param lines 默认传 @[@(0)]
  291. @param contentTypes 消息类型
  292. @param fromIndex 起始index
  293. @param count 总数
  294. @return 消息实体
  295. */
  296. - (NSArray<WFCCMessage *> *)getMessages:(NSArray<NSNumber *> *)conversationTypes
  297. lines:(NSArray<NSNumber *> *)lines
  298. contentTypes:(NSArray<NSNumber *> *)contentTypes
  299. from:(NSUInteger)fromIndex
  300. count:(NSInteger)count
  301. withUser:(NSString *)user;
  302. /**
  303. 获取某类会话信息
  304. @param conversationTypes 会话类型
  305. @param lines 默认传 @[@(0)]
  306. @param messageStatus 消息状态
  307. @param fromIndex 起始index
  308. @param count 总数
  309. @return 消息实体
  310. */
  311. - (NSArray<WFCCMessage *> *)getMessages:(NSArray<NSNumber *> *)conversationTypes
  312. lines:(NSArray<NSNumber *> *)lines
  313. messageStatus:(WFCCMessageStatus)messageStatus
  314. from:(NSUInteger)fromIndex
  315. count:(NSInteger)count
  316. withUser:(NSString *)user;
  317. /**
  318. 获取服务器消息
  319. @param conversation 会话
  320. @param beforeMessageUid 起始index
  321. @param count 总数
  322. @param successBlock 返回消息
  323. @param errorBlock 返回错误码
  324. */
  325. - (void)getRemoteMessages:(WFCCConversation *)conversation
  326. before:(long long)beforeMessageUid
  327. count:(NSUInteger)count
  328. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  329. error:(void(^)(int error_code))errorBlock;
  330. /**
  331. 获取消息
  332. @param messageId 消息ID
  333. @return 消息实体
  334. */
  335. - (WFCCMessage *)getMessage:(long)messageId;
  336. /**
  337. 获取消息
  338. @param messageUid 消息UID
  339. @return 消息实体
  340. */
  341. - (WFCCMessage *)getMessageByUid:(long long)messageUid;
  342. /**
  343. 搜索消息
  344. @param conversation 会话
  345. @param keyword 关键词
  346. @return 命中的消息
  347. */
  348. - (NSArray<WFCCMessage *> *)searchMessage:(WFCCConversation *)conversation
  349. keyword:(NSString *)keyword;
  350. /**
  351. 发送消息
  352. @param conversation 会话
  353. @param content 消息内容
  354. @param successBlock 成功的回调
  355. @param errorBlock 失败的回调
  356. @return 消息实体
  357. */
  358. - (WFCCMessage *)send:(WFCCConversation *)conversation
  359. content:(WFCCMessageContent *)content
  360. success:(void(^)(long long messageUid, long long timestamp))successBlock
  361. error:(void(^)(int error_code))errorBlock;
  362. /**
  363. 发送媒体消息
  364. @param conversation 会话
  365. @param content 消息内容
  366. @param successBlock 成功的回调
  367. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  368. @param errorBlock 失败的回调
  369. @return 消息实体
  370. */
  371. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  372. content:(WFCCMessageContent *)content
  373. success:(void(^)(long long messageUid, long long timestamp))successBlock
  374. progress:(void(^)(long uploaded, long total))progressBlock
  375. error:(void(^)(int error_code))errorBlock;
  376. /**
  377. 发送消息
  378. @param conversation 会话
  379. @param content 消息内容
  380. @param expireDuration 消息的有效期,0不限期,单位秒
  381. @param successBlock 成功的回调
  382. @param errorBlock 失败的回调
  383. @return 消息实体
  384. */
  385. - (WFCCMessage *)send:(WFCCConversation *)conversation
  386. content:(WFCCMessageContent *)content
  387. expireDuration:(int)expireDuration
  388. success:(void(^)(long long messageUid, long long timestamp))successBlock
  389. error:(void(^)(int error_code))errorBlock;
  390. /**
  391. 发送消息
  392. @param conversation 会话
  393. @param content 消息内容
  394. @param toUsers 在会话中只发给该用户,如果为空则发到会话中
  395. @param expireDuration 消息的有效期,0不限期,单位秒
  396. @param successBlock 成功的回调
  397. @param errorBlock 失败的回调
  398. @return 消息实体
  399. */
  400. - (WFCCMessage *)send:(WFCCConversation *)conversation
  401. content:(WFCCMessageContent *)content
  402. toUsers:(NSArray<NSString *> *)toUsers
  403. expireDuration:(int)expireDuration
  404. success:(void(^)(long long messageUid, long long timestamp))successBlock
  405. error:(void(^)(int error_code))errorBlock;
  406. /**
  407. 发送媒体消息
  408. @param conversation 会话
  409. @param content 消息内容
  410. @param expireDuration 消息的有效期,0不限期,单位秒
  411. @param successBlock 成功的回调
  412. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  413. @param errorBlock 失败的回调
  414. @return 消息实体
  415. */
  416. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  417. content:(WFCCMessageContent *)content
  418. expireDuration:(int)expireDuration
  419. success:(void(^)(long long messageUid, long long timestamp))successBlock
  420. progress:(void(^)(long uploaded, long total))progressBlock
  421. error:(void(^)(int error_code))errorBlock;
  422. /**
  423. 发送媒体消息
  424. @param conversation 会话
  425. @param content 消息内容
  426. @param toUsers 在会话中只发给该用户,如果为空则发到会话中
  427. @param expireDuration 消息的有效期,0不限期,单位秒
  428. @param successBlock 成功的回调
  429. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  430. @param errorBlock 失败的回调
  431. @return 消息实体
  432. */
  433. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  434. content:(WFCCMessageContent *)content
  435. toUsers:(NSArray<NSString *> *)toUsers
  436. expireDuration:(int)expireDuration
  437. success:(void(^)(long long messageUid, long long timestamp))successBlock
  438. progress:(void(^)(long uploaded, long total))progressBlock
  439. error:(void(^)(int error_code))errorBlock;
  440. /**
  441. 发送已保存消息,消息状态必须是发送中或者发送失败
  442. @param message 已经存储在本地待发送的消息
  443. @param expireDuration 消息的有效期,0不限期,单位秒
  444. @param successBlock 成功的回调
  445. @param errorBlock 失败的回调
  446. @return 协议栈是否可以发送
  447. */
  448. - (BOOL)sendSavedMessage:(WFCCMessage *)message
  449. expireDuration:(int)expireDuration
  450. success:(void(^)(long long messageUid, long long timestamp))successBlock
  451. error:(void(^)(int error_code))errorBlock;
  452. /**
  453. 撤回消息
  454. @param message 待撤回的消息
  455. @param successBlock 成功的回调
  456. @param errorBlock 失败的回调
  457. @discuss 服务器不检查可撤回时间,应用逻辑来处理。
  458. */
  459. - (void)recall:(WFCCMessage *)message
  460. success:(void(^)(void))successBlock
  461. error:(void(^)(int error_code))errorBlock;
  462. /**
  463. 上传媒体(图片、语音、文件等)
  464. @param fileName 文件名,可为空
  465. @param mediaData 媒体信息
  466. @param mediaType 媒体类型
  467. @param successBlock 成功的回调
  468. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  469. @param errorBlock 失败的回调
  470. */
  471. - (void)uploadMedia:(NSString *)fileName
  472. mediaData:(NSData *)mediaData
  473. mediaType:(WFCCMediaType)mediaType
  474. success:(void(^)(NSString *remoteUrl))successBlock
  475. progress:(void(^)(long uploaded, long total))progressBlock
  476. error:(void(^)(int error_code))errorBlock;
  477. /**
  478. 同步上传媒体(图片、语音、文件等),成功或者失败之后才会返回
  479. @param fileName 文件名,可为空
  480. @param mediaData 媒体信息
  481. @param mediaType 媒体类型
  482. @param successBlock 成功的回调
  483. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  484. @param errorBlock 失败的回调
  485. @return 是否上传成功
  486. */
  487. - (BOOL)syncUploadMedia:(NSString *)fileName
  488. mediaData:(NSData *)mediaData
  489. mediaType:(WFCCMediaType)mediaType
  490. success:(void(^)(NSString *remoteUrl))successBlock
  491. progress:(void(^)(long uploaded, long total))progressBlock
  492. error:(void(^)(int error_code))errorBlock;
  493. /**
  494. 删除消息
  495. @param messageId 消息ID
  496. @return 是否删除成功
  497. */
  498. - (BOOL)deleteMessage:(long)messageId;
  499. /**
  500. 删除会话中的消息
  501. @param conversation 会话
  502. */
  503. - (void)clearMessages:(WFCCConversation *)conversation;
  504. /**
  505. 删除会话中的before之前的旧消息。
  506. @param conversation 会话,如果conversation为nil,则清除所有会话的消息。
  507. @param before 时间点,单位是毫秒
  508. */
  509. - (void)clearMessages:(WFCCConversation *)conversation before:(int64_t)before;
  510. /**
  511. 注册自定义消息类型
  512. @param contentClass 自定义消息
  513. */
  514. - (void)registerMessageContent:(Class)contentClass;
  515. /**
  516. 消息解码
  517. @param payload 消息Payload
  518. @return 消息内容
  519. */
  520. - (WFCCMessageContent *)messageContentFromPayload:(WFCCMessagePayload *)payload;
  521. /**
  522. 插入消息
  523. @param conversation 会话
  524. @param content 消息内容
  525. @param status 消息状态,注意消息状态会影响消息方向
  526. @param serverTime 时间,0为当前时间
  527. @return 消息实体
  528. */
  529. - (WFCCMessage *)insert:(WFCCConversation *)conversation
  530. sender:(NSString *)sender
  531. content:(WFCCMessageContent *)content
  532. status:(WFCCMessageStatus)status
  533. notify:(BOOL)notify
  534. serverTime:(long long)serverTime;
  535. /**
  536. 更新消息内容。只更新本地消息内容,无法更新服务器和远端。
  537. @param messageId 消息ID
  538. @param content 消息内容
  539. */
  540. - (void)updateMessage:(long)messageId
  541. content:(WFCCMessageContent *)content;
  542. /**
  543. 更新消息状态,需要确保状态跟消息的方向相对应。一般情况下协议栈会自动处理好,不建议客户手动操作状态。。只更新本地消息内容,无法更新服务器和远端。
  544. @param messageId 消息ID
  545. @param status 消息状态
  546. @return YES 更新成功。NO 消息不存在,或者状态与消息方向不匹配
  547. */
  548. - (bool)updateMessage:(long)messageId status:(WFCCMessageStatus)status;
  549. /**
  550. 插入消息。只插入到本地,无法更新服务器和远端。
  551. @param message 待插入的消息
  552. @return 插入消息的id
  553. */
  554. - (long)insertMessage:(WFCCMessage *)message;
  555. /**
  556. 获取会话的消息数
  557. @param conversation 会话。
  558. @return 会话的消息数。
  559. */
  560. - (int)getMessageCount:(WFCCConversation *)conversation;
  561. #pragma mark - 用户相关
  562. /**
  563. 获取用户信息
  564. @param userId 用户ID
  565. @param refresh 是否强制从服务器更新,如果本地没有或者强制,会从服务器刷新,然后发出通知kUserInfoUpdated。
  566. @return 本地的用户信息,可能为空
  567. */
  568. - (WFCCUserInfo *)getUserInfo:(NSString *)userId
  569. refresh:(BOOL)refresh;
  570. /**
  571. 获取用户信息
  572. @discussion 获取用户信息,如果在群中有群昵称也一并返回
  573. @param userId 用户ID
  574. @param groupId 群组ID
  575. @param refresh 是否强制从服务器更新,如果本地没有或者强制,会从服务器刷新,然后发出通知kUserInfoUpdated。
  576. @return 本地的用户信息,可能为空
  577. */
  578. - (WFCCUserInfo *)getUserInfo:(NSString *)userId inGroup:(NSString *)groupId refresh:(BOOL)refresh;
  579. /**
  580. 批量获取用户信息
  581. @param userIds 用户ID列表
  582. @param groupId 群组ID
  583. @return 本地的用户信息列表。本地不存在的用户会返回只有id的用户信息,同时会拉取。
  584. */
  585. - (NSArray<WFCCUserInfo *> *)getUserInfos:(NSArray<NSString *> *)userIds inGroup:(NSString *)groupId;
  586. /**
  587. 搜索用户
  588. @param keyword 关键词
  589. @param searchType 搜索类型
  590. @param page page
  591. @param successBlock 成功的回调
  592. @param errorBlock 失败的回调
  593. */
  594. - (void)searchUser:(NSString *)keyword
  595. searchType:(WFCCSearchUserType)searchType
  596. page:(int)page
  597. success:(void(^)(NSArray<WFCCUserInfo *> *machedUsers))successBlock
  598. error:(void(^)(int errorCode))errorBlock;
  599. #pragma mark - 好友相关
  600. /**
  601. 查询用户和当前用户是否是好友关系
  602. @param userId 用户ID
  603. @return 是否是好友
  604. */
  605. - (BOOL)isMyFriend:(NSString *)userId;
  606. /**
  607. 获取当前用户的好友列表
  608. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  609. @return 好友列表的用户ID
  610. */
  611. - (NSArray<NSString *> *)getMyFriendList:(BOOL)refresh;
  612. /**
  613. 搜索好友
  614. @param keyword 关键词
  615. @return 好友用户信息
  616. */
  617. - (NSArray<WFCCUserInfo *> *)searchFriends:(NSString *)keyword;
  618. /**
  619. 搜索群组
  620. @param keyword 关键词
  621. @return 群组搜索结果
  622. */
  623. - (NSArray<WFCCGroupSearchInfo *> *)searchGroups:(NSString *)keyword;
  624. /**
  625. 获取收到的好友请求
  626. @return 好友请求
  627. */
  628. - (NSArray<WFCCFriendRequest *> *)getIncommingFriendRequest;
  629. /**
  630. 获取发出的好友请求
  631. @return 好友请求
  632. */
  633. - (NSArray<WFCCFriendRequest *> *)getOutgoingFriendRequest;
  634. /**
  635. 从服务器更新好友请求
  636. */
  637. - (void)loadFriendRequestFromRemote;
  638. /**
  639. 获取未读的好友请求数
  640. @return 未读的好友请求数
  641. */
  642. - (int)getUnreadFriendRequestStatus;
  643. /**
  644. 清除好友请求的未读数
  645. */
  646. - (void)clearUnreadFriendRequestStatus;
  647. /**
  648. 删除好友
  649. @param userId 用户ID
  650. @param successBlock 成功的回调
  651. @param errorBlock 失败的回调
  652. */
  653. - (void)deleteFriend:(NSString *)userId
  654. success:(void(^)(void))successBlock
  655. error:(void(^)(int error_code))errorBlock;
  656. /**
  657. 发送好友请求
  658. @param userId 用户ID
  659. @param reason 请求说明
  660. @param successBlock 成功的回调
  661. @param errorBlock 失败的回调
  662. */
  663. - (void)sendFriendRequest:(NSString *)userId
  664. reason:(NSString *)reason
  665. success:(void(^)(void))successBlock
  666. error:(void(^)(int error_code))errorBlock;
  667. /**
  668. 处理好友请求
  669. @param userId 用户ID
  670. @param accpet 是否接受
  671. @param extra 附加信息,如果接受,附加信息会添加到好友附加信息中
  672. @param successBlock 成功的回调
  673. @param errorBlock 失败的回调
  674. */
  675. - (void)handleFriendRequest:(NSString *)userId
  676. accept:(BOOL)accpet
  677. extra:(NSString *)extra
  678. success:(void(^)(void))successBlock
  679. error:(void(^)(int error_code))errorBlock;
  680. - (NSString *)getFriendAlias:(NSString *)friendId;
  681. - (void)setFriend:(NSString *)friendId
  682. alias:(NSString *)alias
  683. success:(void(^)(void))successBlock
  684. error:(void(^)(int error_code))errorBlock;
  685. - (NSString *)getFriendExtra:(NSString *)friendId;
  686. /**
  687. 查询用户是否被加入黑名单
  688. @param userId 用户ID
  689. @return 是否被加入黑名单
  690. */
  691. - (BOOL)isBlackListed:(NSString *)userId;
  692. /**
  693. 获取当前用户的黑名单列表
  694. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  695. @return 黑名单列表的用户ID
  696. */
  697. - (NSArray<NSString *> *)getBlackList:(BOOL)refresh;
  698. /**
  699. 设置黑名单
  700. @param userId 用户ID
  701. @param isBlackListed YES 加入黑名单; NO 取消黑名单
  702. @param successBlock 成功的回调
  703. @param errorBlock 失败的回调
  704. */
  705. - (void)setBlackList:(NSString *)userId
  706. isBlackListed:(BOOL)isBlackListed
  707. success:(void(^)(void))successBlock
  708. error:(void(^)(int error_code))errorBlock;
  709. #pragma mark - 群相关
  710. /**
  711. 获取群成员信息
  712. @param groupId 群ID
  713. @param forceUpdate 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  714. @return 群成员信息
  715. */
  716. - (NSArray<WFCCGroupMember *> *)getGroupMembers:(NSString *)groupId
  717. forceUpdate:(BOOL)forceUpdate;
  718. /**
  719. 获取群信息
  720. @param groupId 群ID
  721. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  722. @return 群信息
  723. */
  724. - (WFCCGroupInfo *)getGroupInfo:(NSString *)groupId
  725. refresh:(BOOL)refresh;
  726. /**
  727. 获取群成员信息
  728. @param groupId 群ID
  729. @param memberId 群成员ID
  730. @return 群成员信息
  731. */
  732. - (WFCCGroupMember *)getGroupMember:(NSString *)groupId
  733. memberId:(NSString *)memberId;
  734. /**
  735. 创建群
  736. @param groupId 群ID
  737. @param groupName 群名称
  738. @param groupPortrait 群头像
  739. @param groupMembers 群成员
  740. @param notifyLines 默认传 @[@(0)]
  741. @param notifyContent 通知消息
  742. @param successBlock 成功的回调
  743. @param errorBlock 失败的回调
  744. */
  745. - (void)createGroup:(NSString *)groupId
  746. name:(NSString *)groupName
  747. portrait:(NSString *)groupPortrait
  748. type:(WFCCGroupType)type
  749. members:(NSArray *)groupMembers
  750. notifyLines:(NSArray<NSNumber *> *)notifyLines
  751. notifyContent:(WFCCMessageContent *)notifyContent
  752. success:(void(^)(NSString *groupId))successBlock
  753. error:(void(^)(int error_code))errorBlock;
  754. /**
  755. 添加群成员
  756. @param members 成员的用户ID列表
  757. @param groupId 群ID
  758. @param notifyLines 默认传 @[@(0)]
  759. @param notifyContent 通知消息
  760. @param successBlock 成功的回调
  761. @param errorBlock 失败的回调
  762. */
  763. - (void)addMembers:(NSArray *)members
  764. toGroup:(NSString *)groupId
  765. notifyLines:(NSArray<NSNumber *> *)notifyLines
  766. notifyContent:(WFCCMessageContent *)notifyContent
  767. success:(void(^)(void))successBlock
  768. error:(void(^)(int error_code))errorBlock;
  769. /**
  770. 踢出群成员
  771. @param members 成员的用户ID列表
  772. @param groupId 群ID
  773. @param notifyLines 默认传 @[@(0)]
  774. @param notifyContent 通知消息
  775. @param successBlock 成功的回调
  776. @param errorBlock 失败的回调
  777. */
  778. - (void)kickoffMembers:(NSArray *)members
  779. fromGroup:(NSString *)groupId
  780. notifyLines:(NSArray<NSNumber *> *)notifyLines
  781. notifyContent:(WFCCMessageContent *)notifyContent
  782. success:(void(^)(void))successBlock
  783. error:(void(^)(int error_code))errorBlock;
  784. /**
  785. 退群
  786. @param groupId 群ID
  787. @param notifyLines 默认传 @[@(0)]
  788. @param notifyContent 通知消息
  789. @param successBlock 成功的回调
  790. @param errorBlock 失败的回调
  791. */
  792. - (void)quitGroup:(NSString *)groupId
  793. notifyLines:(NSArray<NSNumber *> *)notifyLines
  794. notifyContent:(WFCCMessageContent *)notifyContent
  795. success:(void(^)(void))successBlock
  796. error:(void(^)(int error_code))errorBlock;
  797. /**
  798. 解散群
  799. @param groupId 群ID
  800. @param notifyLines 默认传 @[@(0)]
  801. @param notifyContent 通知消息
  802. @param successBlock 成功的回调
  803. @param errorBlock 失败的回调
  804. */
  805. - (void)dismissGroup:(NSString *)groupId
  806. notifyLines:(NSArray<NSNumber *> *)notifyLines
  807. notifyContent:(WFCCMessageContent *)notifyContent
  808. success:(void(^)(void))successBlock
  809. error:(void(^)(int error_code))errorBlock;
  810. /**
  811. 修改群信息
  812. @param groupId 群ID
  813. @param type 要修改的群属性
  814. @param newValue 要修改的群属性值
  815. @param notifyLines 默认传 @[@(0)]
  816. @param notifyContent 通知消息
  817. @param successBlock 成功的回调
  818. @param errorBlock 失败的回调
  819. */
  820. - (void)modifyGroupInfo:(NSString *)groupId
  821. type:(ModifyGroupInfoType)type
  822. newValue:(NSString *)newValue
  823. notifyLines:(NSArray<NSNumber *> *)notifyLines
  824. notifyContent:(WFCCMessageContent *)notifyContent
  825. success:(void(^)(void))successBlock
  826. error:(void(^)(int error_code))errorBlock;
  827. /**
  828. 修改群昵称
  829. @param groupId 群ID
  830. @param newAlias 昵称
  831. @param notifyLines 默认传 @[@(0)]
  832. @param notifyContent 通知消息
  833. @param successBlock 成功的回调
  834. @param errorBlock 失败的回调
  835. */
  836. - (void)modifyGroupAlias:(NSString *)groupId
  837. alias:(NSString *)newAlias
  838. notifyLines:(NSArray<NSNumber *> *)notifyLines
  839. notifyContent:(WFCCMessageContent *)notifyContent
  840. success:(void(^)(void))successBlock
  841. error:(void(^)(int error_code))errorBlock;
  842. /**
  843. 转移群主
  844. @param groupId 群ID
  845. @param newOwner 群主的用户ID
  846. @param notifyLines 默认传 @[@(0)]
  847. @param notifyContent 通知消息
  848. @param successBlock 成功的回调
  849. @param errorBlock 失败的回调
  850. */
  851. - (void)transferGroup:(NSString *)groupId
  852. to:(NSString *)newOwner
  853. notifyLines:(NSArray<NSNumber *> *)notifyLines
  854. notifyContent:(WFCCMessageContent *)notifyContent
  855. success:(void(^)(void))successBlock
  856. error:(void(^)(int error_code))errorBlock;
  857. /**
  858. 设置群管理
  859. @param groupId 群ID
  860. @param isSet 设置或取消
  861. @param memberIds 成员ID
  862. @param notifyLines 默认传 @[@(0)]
  863. @param notifyContent 通知消息
  864. @param successBlock 成功的回调
  865. @param errorBlock 失败的回调
  866. */
  867. - (void)setGroupManager:(NSString *)groupId
  868. isSet:(BOOL)isSet
  869. memberIds:(NSArray<NSString *> *)memberIds
  870. notifyLines:(NSArray<NSNumber *> *)notifyLines
  871. notifyContent:(WFCCMessageContent *)notifyContent
  872. success:(void(^)(void))successBlock
  873. error:(void(^)(int error_code))errorBlock;
  874. /**
  875. 设置群成员禁言,仅专业版支持
  876. @param groupId 群ID
  877. @param isSet 设置或取消
  878. @param memberIds 成员ID
  879. @param notifyLines 默认传 @[@(0)]
  880. @param notifyContent 通知消息
  881. @param successBlock 成功的回调
  882. @param errorBlock 失败的回调
  883. */
  884. - (void)muteGroupMember:(NSString *)groupId
  885. isSet:(BOOL)isSet
  886. memberIds:(NSArray<NSString *> *)memberIds
  887. notifyLines:(NSArray<NSNumber *> *)notifyLines
  888. notifyContent:(WFCCMessageContent *)notifyContent
  889. success:(void(^)(void))successBlock
  890. error:(void(^)(int error_code))errorBlock;
  891. /**
  892. 获取当前用户收藏的群组
  893. @return 当前用户收藏的群组ID
  894. */
  895. - (NSArray<NSString *> *)getFavGroups;
  896. /**
  897. 是否是当前用户收藏的群组
  898. @return 是否是当前用户收藏的群组
  899. */
  900. - (BOOL)isFavGroup:(NSString *)groupId;
  901. /**
  902. 设置群组收藏状态
  903. @param groupId 群组ID
  904. @param fav 是否收藏
  905. @param successBlock 成功的回调
  906. @param errorBlock 失败的回调
  907. */
  908. - (void)setFavGroup:(NSString *)groupId fav:(BOOL)fav success:(void(^)(void))successBlock error:(void(^)(int errorCode))errorBlock;
  909. #pragma mark - 个人设置相关
  910. /**
  911. 获取个人设置
  912. @param scope 设置项的scope
  913. @param key 设置项的key
  914. @return 设置值
  915. */
  916. - (NSString *)getUserSetting:(UserSettingScope)scope
  917. key:(NSString *)key;
  918. /**
  919. 获取个人一类设置
  920. @param scope 设置项的scope
  921. @return scope对应的所有设置值
  922. */
  923. - (NSDictionary<NSString *, NSString *> *)getUserSettings:(UserSettingScope)scope;
  924. /**
  925. 设置个人设置项
  926. @param scope 设置项的scope
  927. @param key 设置项的key
  928. @param value 值
  929. @param successBlock 成功的回调
  930. @param errorBlock 失败的回调
  931. */
  932. - (void)setUserSetting:(UserSettingScope)scope
  933. key:(NSString *)key
  934. value:(NSString *)value
  935. success:(void(^)(void))successBlock
  936. error:(void(^)(int error_code))errorBlock;
  937. /**
  938. 修改个人信息
  939. @param values 信息
  940. @param successBlock 成功的回调
  941. @param errorBlock 失败的回调
  942. @discuss 性别属性是int类型,修改时需要转为字符串类型
  943. */
  944. -(void)modifyMyInfo:(NSDictionary<NSNumber */*ModifyMyInfoType*/, NSString *> *)values
  945. success:(void(^)(void))successBlock
  946. error:(void(^)(int error_code))errorBlock;
  947. /**
  948. 是否全局静音
  949. @return YES,当前用户全局静音;NO,没有全局静音
  950. */
  951. - (BOOL)isGlobalSlient;
  952. /**
  953. 修改全局静音状态
  954. @param slient 是否静音
  955. @param successBlock 成功的回调
  956. @param errorBlock 失败的回调
  957. */
  958. - (void)setGlobalSlient:(BOOL)slient
  959. success:(void(^)(void))successBlock
  960. error:(void(^)(int error_code))errorBlock;
  961. /**
  962. 是否隐藏推送详情
  963. @return YES,隐藏推送详情,提示“您收到一条消息”;NO,推送显示消息摘要
  964. */
  965. - (BOOL)isHiddenNotificationDetail;
  966. /**
  967. 修改全局静音状态
  968. @param hidden 是否静音
  969. @param successBlock 成功的回调
  970. @param errorBlock 失败的回调
  971. */
  972. - (void)setHiddenNotificationDetail:(BOOL)hidden
  973. success:(void(^)(void))successBlock
  974. error:(void(^)(int error_code))errorBlock;
  975. /**
  976. 是否隐藏群组会话中群成员昵称显示
  977. @return YES,群组会话中不显示群成员昵称;NO,显示
  978. */
  979. - (BOOL)isHiddenGroupMemberName:(NSString *)groupId;
  980. /**
  981. 修改隐藏群组会话中群成员昵称显示状态
  982. @param hidden 是否隐藏
  983. @param successBlock 成功的回调
  984. @param errorBlock 失败的回调
  985. */
  986. - (void)setHiddenGroupMemberName:(BOOL)hidden
  987. group:(NSString *)groupId
  988. success:(void(^)(void))successBlock
  989. error:(void(^)(int error_code))errorBlock;
  990. /**
  991. 当前用户是否启用消息回执功能,仅专业版有效
  992. @return YES,开启消息回执功能;NO,关闭个人的消息回执功能。
  993. @disscussion 仅当服务器开启这个功能才有效
  994. */
  995. - (BOOL)isUserEnableReceipt;
  996. /**
  997. 修改当前用户是否启用消息回执功能,仅专业版有效
  998. @param enable 是否开启
  999. @param successBlock 成功的回调
  1000. @param errorBlock 失败的回调
  1001. @disscussion 仅当服务器开启这个功能才有效
  1002. */
  1003. - (void)setUserEnableReceipt:(BOOL)enable
  1004. success:(void(^)(void))successBlock
  1005. error:(void(^)(int error_code))errorBlock;
  1006. #pragma mark - 聊天室相关
  1007. - (void)joinChatroom:(NSString *)chatroomId
  1008. success:(void(^)(void))successBlock
  1009. error:(void(^)(int error_code))errorBlock;
  1010. - (void)quitChatroom:(NSString *)chatroomId
  1011. success:(void(^)(void))successBlock
  1012. error:(void(^)(int error_code))errorBlock;
  1013. - (void)getChatroomInfo:(NSString *)chatroomId
  1014. upateDt:(long long)updateDt
  1015. success:(void(^)(WFCCChatroomInfo *chatroomInfo))successBlock
  1016. error:(void(^)(int error_code))errorBlock;
  1017. - (void)getChatroomMemberInfo:(NSString *)chatroomId
  1018. maxCount:(int)maxCount
  1019. success:(void(^)(WFCCChatroomMemberInfo *memberInfo))successBlock
  1020. error:(void(^)(int error_code))errorBlock;
  1021. #pragma mark - 频道相关
  1022. - (void)createChannel:(NSString *)channelName
  1023. portrait:(NSString *)channelPortrait
  1024. status:(int)status
  1025. desc:(NSString *)desc
  1026. extra:(NSString *)extra
  1027. success:(void(^)(WFCCChannelInfo *channelInfo))successBlock
  1028. error:(void(^)(int error_code))errorBlock;
  1029. /**
  1030. 获取频道信息
  1031. @param channelId 频道ID
  1032. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1033. @return 群信息
  1034. */
  1035. - (WFCCChannelInfo *)getChannelInfo:(NSString *)channelId
  1036. refresh:(BOOL)refresh;
  1037. /**
  1038. 修改频道信息
  1039. @param channelId 群ID
  1040. @param type 要修改的群属性
  1041. @param newValue 要修改的群属性值
  1042. @param successBlock 成功的回调
  1043. @param errorBlock 失败的回调
  1044. */
  1045. - (void)modifyChannelInfo:(NSString *)channelId
  1046. type:(ModifyChannelInfoType)type
  1047. newValue:(NSString *)newValue
  1048. success:(void(^)(void))successBlock
  1049. error:(void(^)(int error_code))errorBlock;
  1050. /**
  1051. 搜索频道
  1052. @param keyword 关键词
  1053. @param successBlock 成功的回调
  1054. @param errorBlock 失败的回调
  1055. */
  1056. - (void)searchChannel:(NSString *)keyword success:(void(^)(NSArray<WFCCChannelInfo *> *machedChannels))successBlock error:(void(^)(int errorCode))errorBlock;
  1057. /**
  1058. 是否收听频道
  1059. @param channelId 频道ID
  1060. @return YES,收听;NO,未收听
  1061. */
  1062. - (BOOL)isListenedChannel:(NSString *)channelId;
  1063. /**
  1064. 收听或者取消收听频道
  1065. @param channelId 频道ID
  1066. @param listen 是否收听
  1067. @param successBlock 成功的回调
  1068. @param errorBlock 失败的回调
  1069. */
  1070. - (void)listenChannel:(NSString *)channelId listen:(BOOL)listen success:(void(^)(void))successBlock error:(void(^)(int errorCode))errorBlock;
  1071. /**
  1072. 获取当前用户创建的频道
  1073. @return 当前用户创建的频道ID
  1074. */
  1075. - (NSArray<NSString *> *)getMyChannels;
  1076. /**
  1077. 获取当前用户收听的频道
  1078. @return 当前用户收听的频道ID
  1079. */
  1080. - (NSArray<NSString *> *)getListenedChannels;
  1081. /**
  1082. 销毁频道
  1083. @param channelId 频道ID
  1084. @param successBlock 成功的回调
  1085. @param errorBlock 失败的回调
  1086. */
  1087. - (void)destoryChannel:(NSString *)channelId
  1088. success:(void(^)(void))successBlock
  1089. error:(void(^)(int error_code))errorBlock;
  1090. #pragma mark - 其它接口
  1091. /**
  1092. 获取PC在线信息
  1093. @return PC端在线状态
  1094. */
  1095. - (NSArray<WFCCPCOnlineInfo *> *)getPCOnlineInfos;
  1096. /**
  1097. 踢掉PC或者Web
  1098. @param pcClientId PC或Web端的clientId
  1099. @param successBlock 成功的回调
  1100. @param errorBlock 失败的回调
  1101. */
  1102. - (void)kickoffPCClient:(NSString *)pcClientId
  1103. success:(void(^)(void))successBlock
  1104. error:(void(^)(int error_code))errorBlock;
  1105. /**
  1106. 获取媒体文件授权访问地址
  1107. @param mediaType 媒体类型
  1108. @param mediaPath 媒体Path
  1109. @param successBlock 成功的回调
  1110. @param errorBlock 失败的回调
  1111. */
  1112. - (void)getAuthorizedMediaUrl:(WFCCMediaType)mediaType
  1113. mediaPath:(NSString *)mediaPath
  1114. success:(void(^)(NSString *authorizedUrl))successBlock
  1115. error:(void(^)(int error_code))errorBlock;
  1116. /**
  1117. 获取图片缩略图参数
  1118. @return 图片缩略图参数
  1119. */
  1120. - (NSString *)imageThumbPara;
  1121. /**
  1122. 开启数据库事务。注意:该方法仅仅在做数据迁移时使用,其它情况不要使用;另外开启成功后一定要注意commit,需要配对使用.
  1123. @return 是否开启成功。
  1124. */
  1125. - (BOOL)beginTransaction;
  1126. /**
  1127. 提交数据库事务。注意:该方法仅仅在做数据迁移时使用,其它情况不要使用;需要跟beginTransaction配对使用
  1128. */
  1129. - (void)commitTransaction;
  1130. /**
  1131. 是否是商业版IM服务。
  1132. */
  1133. - (BOOL)isCommercialServer;
  1134. /**
  1135. 是否支持已送达报告和已阅读报告
  1136. */
  1137. - (BOOL)isReceiptEnabled;
  1138. @end