WFCCIMService.h 43 KB

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