WFCCIMService.h 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552
  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. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  297. @param conversation 会话
  298. @param messageStatus 消息状态WFCCMessageStatus
  299. @param fromIndex 起始index
  300. @param count 总数
  301. @return 消息实体
  302. */
  303. - (NSArray<WFCCMessage *> *)getMessages:(WFCCConversation *)conversation
  304. messageStatus:(NSArray<NSNumber *> *)messageStatus
  305. from:(NSUInteger)fromIndex
  306. count:(NSInteger)count
  307. withUser:(NSString *)user;
  308. /**
  309. 获取某类会话信息
  310. @param conversationTypes 会话类型
  311. @param lines 默认传 @[@(0)]
  312. @param contentTypes 消息类型
  313. @param fromIndex 起始index
  314. @param count 总数
  315. @return 消息实体
  316. */
  317. - (NSArray<WFCCMessage *> *)getMessages:(NSArray<NSNumber *> *)conversationTypes
  318. lines:(NSArray<NSNumber *> *)lines
  319. contentTypes:(NSArray<NSNumber *> *)contentTypes
  320. from:(NSUInteger)fromIndex
  321. count:(NSInteger)count
  322. withUser:(NSString *)user;
  323. /**
  324. 获取某类会话信息
  325. @param conversationTypes 会话类型
  326. @param lines 默认传 @[@(0)]
  327. @param messageStatus 消息状态
  328. @param fromIndex 起始index
  329. @param count 总数
  330. @param user 对话用户
  331. @return 消息实体
  332. */
  333. - (NSArray<WFCCMessage *> *)getMessages:(NSArray<NSNumber *> *)conversationTypes
  334. lines:(NSArray<NSNumber *> *)lines
  335. messageStatus:(NSArray<NSNumber *> *)messageStatus
  336. from:(NSUInteger)fromIndex
  337. count:(NSInteger)count
  338. withUser:(NSString *)user;
  339. /**
  340. 获取用户会话消息
  341. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  342. @param userId 用户ID
  343. @param conversation 会话
  344. @param contentTypes 消息类型
  345. @param fromIndex 起始index
  346. @param count 总数
  347. @return 消息实体
  348. */
  349. - (NSArray<WFCCMessage *> *)getUserMessages:(NSString *)userId
  350. conversation:(WFCCConversation *)conversation
  351. contentTypes:(NSArray<NSNumber *> *)contentTypes
  352. from:(NSUInteger)fromIndex
  353. count:(NSInteger)count;
  354. /**
  355. 获取用户某类会话信息
  356. @param userId 用户ID
  357. @param conversationTypes 会话类型
  358. @param lines 默认传 @[@(0)]
  359. @param contentTypes 消息类型
  360. @param fromIndex 起始index
  361. @param count 总数
  362. @return 消息实体
  363. */
  364. - (NSArray<WFCCMessage *> *)getUserMessages:(NSString *)userId
  365. conversationTypes:(NSArray<NSNumber *> *)conversationTypes
  366. lines:(NSArray<NSNumber *> *)lines
  367. contentTypes:(NSArray<NSNumber *> *)contentTypes
  368. from:(NSUInteger)fromIndex
  369. count:(NSInteger)count;
  370. /**
  371. 获取服务器消息
  372. @param conversation 会话
  373. @param beforeMessageUid 起始index
  374. @param count 总数
  375. @param successBlock 返回消息
  376. @param errorBlock 返回错误码
  377. */
  378. - (void)getRemoteMessages:(WFCCConversation *)conversation
  379. before:(long long)beforeMessageUid
  380. count:(NSUInteger)count
  381. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  382. error:(void(^)(int error_code))errorBlock;
  383. /**
  384. 获取消息
  385. @param messageId 消息ID
  386. @return 消息实体
  387. */
  388. - (WFCCMessage *)getMessage:(long)messageId;
  389. /**
  390. 获取消息
  391. @param messageUid 消息UID
  392. @return 消息实体
  393. */
  394. - (WFCCMessage *)getMessageByUid:(long long)messageUid;
  395. /**
  396. 搜索消息
  397. @param conversation 会话,如果为空将搜索所有会话
  398. @param keyword 关键词
  399. @param desc order
  400. @param offset offset
  401. @param limit limit
  402. @return 命中的消息
  403. */
  404. - (NSArray<WFCCMessage *> *)searchMessage:(WFCCConversation *)conversation
  405. keyword:(NSString *)keyword
  406. order:(BOOL)desc
  407. limit:(int)limit
  408. offset:(int)offset;
  409. /**
  410. 获取某类会话信息
  411. @param conversationTypes 会话类型
  412. @param lines 默认传 @[@(0)]
  413. @param contentTypes 消息类型
  414. @param keyword 关键字
  415. @param fromIndex 起始index
  416. @param count 总数
  417. @return 消息实体
  418. */
  419. - (NSArray<WFCCMessage *> *)searchMessage:(NSArray<NSNumber *> *)conversationTypes
  420. lines:(NSArray<NSNumber *> *)lines
  421. contentTypes:(NSArray<NSNumber *> *)contentTypes
  422. keyword:(NSString *)keyword
  423. from:(NSUInteger)fromIndex
  424. count:(NSInteger)count;
  425. /**
  426. 发送消息
  427. @param conversation 会话
  428. @param content 消息内容
  429. @param successBlock 成功的回调
  430. @param errorBlock 失败的回调
  431. @return 消息实体
  432. */
  433. - (WFCCMessage *)send:(WFCCConversation *)conversation
  434. content:(WFCCMessageContent *)content
  435. success:(void(^)(long long messageUid, long long timestamp))successBlock
  436. error:(void(^)(int error_code))errorBlock;
  437. /**
  438. 发送媒体消息
  439. @param conversation 会话
  440. @param content 消息内容
  441. @param successBlock 成功的回调
  442. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  443. @param errorBlock 失败的回调
  444. @return 消息实体
  445. */
  446. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  447. content:(WFCCMessageContent *)content
  448. success:(void(^)(long long messageUid, long long timestamp))successBlock
  449. progress:(void(^)(long uploaded, long total))progressBlock
  450. error:(void(^)(int error_code))errorBlock;
  451. /**
  452. 发送消息
  453. @param conversation 会话
  454. @param content 消息内容
  455. @param expireDuration 消息的有效期,0不限期,单位秒
  456. @param successBlock 成功的回调
  457. @param errorBlock 失败的回调
  458. @return 消息实体
  459. */
  460. - (WFCCMessage *)send:(WFCCConversation *)conversation
  461. content:(WFCCMessageContent *)content
  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 conversation 会话
  468. @param content 消息内容
  469. @param toUsers 在会话中只发给该用户,如果为空则发到会话中
  470. @param expireDuration 消息的有效期,0不限期,单位秒
  471. @param successBlock 成功的回调
  472. @param errorBlock 失败的回调
  473. @return 消息实体
  474. */
  475. - (WFCCMessage *)send:(WFCCConversation *)conversation
  476. content:(WFCCMessageContent *)content
  477. toUsers:(NSArray<NSString *> *)toUsers
  478. expireDuration:(int)expireDuration
  479. success:(void(^)(long long messageUid, long long timestamp))successBlock
  480. error:(void(^)(int error_code))errorBlock;
  481. /**
  482. 发送媒体消息
  483. @param conversation 会话
  484. @param content 消息内容
  485. @param expireDuration 消息的有效期,0不限期,单位秒
  486. @param successBlock 成功的回调
  487. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  488. @param errorBlock 失败的回调
  489. @return 消息实体
  490. */
  491. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  492. content:(WFCCMessageContent *)content
  493. expireDuration:(int)expireDuration
  494. success:(void(^)(long long messageUid, long long timestamp))successBlock
  495. progress:(void(^)(long uploaded, long total))progressBlock
  496. error:(void(^)(int error_code))errorBlock;
  497. /**
  498. 发送媒体消息
  499. @param conversation 会话
  500. @param content 消息内容
  501. @param toUsers 在会话中只发给该用户,如果为空则发到会话中
  502. @param expireDuration 消息的有效期,0不限期,单位秒
  503. @param successBlock 成功的回调
  504. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  505. @param errorBlock 失败的回调
  506. @return 消息实体
  507. */
  508. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  509. content:(WFCCMessageContent *)content
  510. toUsers:(NSArray<NSString *> *)toUsers
  511. expireDuration:(int)expireDuration
  512. success:(void(^)(long long messageUid, long long timestamp))successBlock
  513. progress:(void(^)(long uploaded, long total))progressBlock
  514. error:(void(^)(int error_code))errorBlock;
  515. /**
  516. 发送已保存消息,消息状态必须是发送中或者发送失败
  517. @param message 已经存储在本地待发送的消息
  518. @param expireDuration 消息的有效期,0不限期,单位秒
  519. @param successBlock 成功的回调
  520. @param errorBlock 失败的回调
  521. @return 协议栈是否可以发送
  522. */
  523. - (BOOL)sendSavedMessage:(WFCCMessage *)message
  524. expireDuration:(int)expireDuration
  525. success:(void(^)(long long messageUid, long long timestamp))successBlock
  526. error:(void(^)(int error_code))errorBlock;
  527. /**
  528. 撤回消息
  529. @param message 待撤回的消息
  530. @param successBlock 成功的回调
  531. @param errorBlock 失败的回调
  532. @discuss 服务器不检查可撤回时间,应用逻辑来处理。
  533. */
  534. - (void)recall:(WFCCMessage *)message
  535. success:(void(^)(void))successBlock
  536. error:(void(^)(int error_code))errorBlock;
  537. /**
  538. 上传媒体(图片、语音、文件等)
  539. @param fileName 文件名,可为空
  540. @param mediaData 媒体信息
  541. @param mediaType 媒体类型
  542. @param successBlock 成功的回调
  543. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  544. @param errorBlock 失败的回调
  545. */
  546. - (void)uploadMedia:(NSString *)fileName
  547. mediaData:(NSData *)mediaData
  548. mediaType:(WFCCMediaType)mediaType
  549. success:(void(^)(NSString *remoteUrl))successBlock
  550. progress:(void(^)(long uploaded, long total))progressBlock
  551. error:(void(^)(int error_code))errorBlock;
  552. /**
  553. 同步上传媒体(图片、语音、文件等),成功或者失败之后才会返回
  554. @param fileName 文件名,可为空
  555. @param mediaData 媒体信息
  556. @param mediaType 媒体类型
  557. @param successBlock 成功的回调
  558. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  559. @param errorBlock 失败的回调
  560. @return 是否上传成功
  561. */
  562. - (BOOL)syncUploadMedia:(NSString *)fileName
  563. mediaData:(NSData *)mediaData
  564. mediaType:(WFCCMediaType)mediaType
  565. success:(void(^)(NSString *remoteUrl))successBlock
  566. progress:(void(^)(long uploaded, long total))progressBlock
  567. error:(void(^)(int error_code))errorBlock;
  568. /**
  569. 删除消息
  570. @param messageId 消息ID
  571. @return 是否删除成功
  572. */
  573. - (BOOL)deleteMessage:(long)messageId;
  574. /**
  575. 删除会话中的消息
  576. @param conversation 会话
  577. */
  578. - (void)clearMessages:(WFCCConversation *)conversation;
  579. /**
  580. 删除会话中的before之前的旧消息。
  581. @param conversation 会话,如果conversation为nil,则清除所有会话的消息。
  582. @param before 时间点,单位是毫秒
  583. */
  584. - (void)clearMessages:(WFCCConversation *)conversation before:(int64_t)before;
  585. /**
  586. 注册自定义消息类型
  587. @param contentClass 自定义消息
  588. */
  589. - (void)registerMessageContent:(Class)contentClass;
  590. /**
  591. 消息解码
  592. @param payload 消息Payload
  593. @return 消息内容
  594. */
  595. - (WFCCMessageContent *)messageContentFromPayload:(WFCCMessagePayload *)payload;
  596. /**
  597. 插入消息
  598. @param conversation 会话
  599. @param content 消息内容
  600. @param status 消息状态,注意消息状态会影响消息方向
  601. @param serverTime 时间,0为当前时间
  602. @return 消息实体
  603. */
  604. - (WFCCMessage *)insert:(WFCCConversation *)conversation
  605. sender:(NSString *)sender
  606. content:(WFCCMessageContent *)content
  607. status:(WFCCMessageStatus)status
  608. notify:(BOOL)notify
  609. serverTime:(long long)serverTime;
  610. /**
  611. 更新消息内容。只更新本地消息内容,无法更新服务器和远端。
  612. @param messageId 消息ID
  613. @param content 消息内容
  614. */
  615. - (void)updateMessage:(long)messageId
  616. content:(WFCCMessageContent *)content;
  617. /**
  618. 更新消息状态,需要确保状态跟消息的方向相对应。一般情况下协议栈会自动处理好,不建议客户手动操作状态。。只更新本地消息内容,无法更新服务器和远端。
  619. @param messageId 消息ID
  620. @param status 消息状态
  621. @return YES 更新成功。NO 消息不存在,或者状态与消息方向不匹配
  622. */
  623. - (bool)updateMessage:(long)messageId status:(WFCCMessageStatus)status;
  624. /**
  625. 插入消息。只插入到本地,无法更新服务器和远端。
  626. @param message 待插入的消息
  627. @return 插入消息的id
  628. */
  629. - (long)insertMessage:(WFCCMessage *)message;
  630. /**
  631. 获取会话的消息数
  632. @param conversation 会话。
  633. @return 会话的消息数。
  634. */
  635. - (int)getMessageCount:(WFCCConversation *)conversation;
  636. #pragma mark - 用户相关
  637. /**
  638. 获取用户信息
  639. @param userId 用户ID
  640. @param refresh 是否强制从服务器更新,如果本地没有或者强制,会从服务器刷新,然后发出通知kUserInfoUpdated。
  641. @return 本地的用户信息,可能为空
  642. */
  643. - (WFCCUserInfo *)getUserInfo:(NSString *)userId
  644. refresh:(BOOL)refresh;
  645. /**
  646. 获取用户信息
  647. @discussion 获取用户信息,如果在群中有群昵称也一并返回
  648. @param userId 用户ID
  649. @param groupId 群组ID
  650. @param refresh 是否强制从服务器更新,如果本地没有或者强制,会从服务器刷新,然后发出通知kUserInfoUpdated。
  651. @return 本地的用户信息,可能为空
  652. */
  653. - (WFCCUserInfo *)getUserInfo:(NSString *)userId inGroup:(NSString *)groupId refresh:(BOOL)refresh;
  654. /**
  655. 批量获取用户信息
  656. @param userIds 用户ID列表
  657. @param groupId 群组ID
  658. @return 本地的用户信息列表。本地不存在的用户会返回只有id的用户信息,同时会拉取。
  659. */
  660. - (NSArray<WFCCUserInfo *> *)getUserInfos:(NSArray<NSString *> *)userIds inGroup:(NSString *)groupId;
  661. /**
  662. 搜索用户
  663. @param keyword 关键词
  664. @param searchType 搜索类型
  665. @param page page
  666. @param successBlock 成功的回调
  667. @param errorBlock 失败的回调
  668. */
  669. - (void)searchUser:(NSString *)keyword
  670. searchType:(WFCCSearchUserType)searchType
  671. page:(int)page
  672. success:(void(^)(NSArray<WFCCUserInfo *> *machedUsers))successBlock
  673. error:(void(^)(int errorCode))errorBlock;
  674. /**
  675. 获取用户信息
  676. @param userId 用户ID
  677. @param refresh 是否强制从服务器更新,如果本地没有或者强制,会从服务器刷新,然后发出通知kUserInfoUpdated。
  678. @param successBlock 成功的回调
  679. @param errorBlock 失败的回调
  680. */
  681. - (void)getUserInfo:(NSString *)userId
  682. refresh:(BOOL)refresh
  683. success:(void(^)(WFCCUserInfo *userInfo))successBlock
  684. error:(void(^)(int errorCode))errorBlock;
  685. #pragma mark - 好友相关
  686. /**
  687. 查询用户和当前用户是否是好友关系
  688. @param userId 用户ID
  689. @return 是否是好友
  690. */
  691. - (BOOL)isMyFriend:(NSString *)userId;
  692. /**
  693. 获取当前用户的好友列表
  694. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  695. @return 好友列表的用户ID
  696. */
  697. - (NSArray<NSString *> *)getMyFriendList:(BOOL)refresh;
  698. /**
  699. 搜索好友
  700. @param keyword 关键词
  701. @return 好友用户信息
  702. */
  703. - (NSArray<WFCCUserInfo *> *)searchFriends:(NSString *)keyword;
  704. /**
  705. 搜索群组
  706. @param keyword 关键词
  707. @return 群组搜索结果
  708. */
  709. - (NSArray<WFCCGroupSearchInfo *> *)searchGroups:(NSString *)keyword;
  710. /**
  711. 获取收到的好友请求
  712. @return 好友请求
  713. */
  714. - (NSArray<WFCCFriendRequest *> *)getIncommingFriendRequest;
  715. /**
  716. 获取发出的好友请求
  717. @return 好友请求
  718. */
  719. - (NSArray<WFCCFriendRequest *> *)getOutgoingFriendRequest;
  720. /**
  721. 从服务器更新好友请求
  722. */
  723. - (void)loadFriendRequestFromRemote;
  724. /**
  725. 获取未读的好友请求数
  726. @return 未读的好友请求数
  727. */
  728. - (int)getUnreadFriendRequestStatus;
  729. /**
  730. 清除好友请求的未读数
  731. */
  732. - (void)clearUnreadFriendRequestStatus;
  733. /**
  734. 删除好友
  735. @param userId 用户ID
  736. @param successBlock 成功的回调
  737. @param errorBlock 失败的回调
  738. */
  739. - (void)deleteFriend:(NSString *)userId
  740. success:(void(^)(void))successBlock
  741. error:(void(^)(int error_code))errorBlock;
  742. /**
  743. 发送好友请求
  744. @param userId 用户ID
  745. @param reason 请求说明
  746. @param successBlock 成功的回调
  747. @param errorBlock 失败的回调
  748. */
  749. - (void)sendFriendRequest:(NSString *)userId
  750. reason:(NSString *)reason
  751. success:(void(^)(void))successBlock
  752. error:(void(^)(int error_code))errorBlock;
  753. /**
  754. 处理好友请求
  755. @param userId 用户ID
  756. @param accpet 是否接受
  757. @param extra 附加信息,如果接受,附加信息会添加到好友附加信息中
  758. @param successBlock 成功的回调
  759. @param errorBlock 失败的回调
  760. */
  761. - (void)handleFriendRequest:(NSString *)userId
  762. accept:(BOOL)accpet
  763. extra:(NSString *)extra
  764. success:(void(^)(void))successBlock
  765. error:(void(^)(int error_code))errorBlock;
  766. - (NSString *)getFriendAlias:(NSString *)friendId;
  767. - (void)setFriend:(NSString *)friendId
  768. alias:(NSString *)alias
  769. success:(void(^)(void))successBlock
  770. error:(void(^)(int error_code))errorBlock;
  771. - (NSString *)getFriendExtra:(NSString *)friendId;
  772. /**
  773. 查询用户是否被加入黑名单
  774. @param userId 用户ID
  775. @return 是否被加入黑名单
  776. */
  777. - (BOOL)isBlackListed:(NSString *)userId;
  778. /**
  779. 获取当前用户的黑名单列表
  780. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  781. @return 黑名单列表的用户ID
  782. */
  783. - (NSArray<NSString *> *)getBlackList:(BOOL)refresh;
  784. /**
  785. 设置黑名单
  786. @param userId 用户ID
  787. @param isBlackListed YES 加入黑名单; NO 取消黑名单
  788. @param successBlock 成功的回调
  789. @param errorBlock 失败的回调
  790. */
  791. - (void)setBlackList:(NSString *)userId
  792. isBlackListed:(BOOL)isBlackListed
  793. success:(void(^)(void))successBlock
  794. error:(void(^)(int error_code))errorBlock;
  795. #pragma mark - 群相关
  796. /**
  797. 获取群成员信息
  798. @param groupId 群ID
  799. @param forceUpdate 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  800. @return 群成员信息列表
  801. */
  802. - (NSArray<WFCCGroupMember *> *)getGroupMembers:(NSString *)groupId
  803. forceUpdate:(BOOL)forceUpdate;
  804. /**
  805. 根据成员类型获取群成员信息
  806. @param groupId 群ID
  807. @param type 群成员类型
  808. @return 群成员信息列表
  809. */
  810. - (NSArray<WFCCGroupMember *> *)getGroupMembers:(NSString *)groupId
  811. type:(WFCCGroupMemberType)memberType;
  812. /**
  813. 获取群成员信息
  814. @param groupId 群ID
  815. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  816. @param successBlock 成功的回调
  817. @param errorBlock 失败的回调
  818. */
  819. - (void)getGroupMembers:(NSString *)groupId
  820. refresh:(BOOL)refresh
  821. success:(void(^)(NSString *groupId, NSArray<WFCCGroupMember *> *))successBlock
  822. error:(void(^)(int errorCode))errorBlock;
  823. /**
  824. 获取群信息
  825. @param groupId 群ID
  826. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  827. @return 群信息
  828. */
  829. - (WFCCGroupInfo *)getGroupInfo:(NSString *)groupId
  830. refresh:(BOOL)refresh;
  831. /**
  832. 获取群信息
  833. @param groupId 群ID
  834. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  835. @param successBlock 成功的回调
  836. @param errorBlock 失败的回调
  837. */
  838. - (void)getGroupInfo:(NSString *)groupId
  839. refresh:(BOOL)refresh
  840. success:(void(^)(WFCCGroupInfo *groupInfo))successBlock
  841. error:(void(^)(int errorCode))errorBlock;
  842. /**
  843. 获取群成员信息
  844. @param groupId 群ID
  845. @param memberId 群成员ID
  846. @return 群成员信息
  847. */
  848. - (WFCCGroupMember *)getGroupMember:(NSString *)groupId
  849. memberId:(NSString *)memberId;
  850. /**
  851. 创建群
  852. @param groupId 群ID
  853. @param groupName 群名称
  854. @param groupPortrait 群头像
  855. @param groupMembers 群成员
  856. @param notifyLines 默认传 @[@(0)]
  857. @param notifyContent 通知消息
  858. @param successBlock 成功的回调
  859. @param errorBlock 失败的回调
  860. */
  861. - (void)createGroup:(NSString *)groupId
  862. name:(NSString *)groupName
  863. portrait:(NSString *)groupPortrait
  864. type:(WFCCGroupType)type
  865. members:(NSArray *)groupMembers
  866. notifyLines:(NSArray<NSNumber *> *)notifyLines
  867. notifyContent:(WFCCMessageContent *)notifyContent
  868. success:(void(^)(NSString *groupId))successBlock
  869. error:(void(^)(int error_code))errorBlock;
  870. /**
  871. 添加群成员
  872. @param members 成员的用户ID列表
  873. @param groupId 群ID
  874. @param notifyLines 默认传 @[@(0)]
  875. @param notifyContent 通知消息
  876. @param successBlock 成功的回调
  877. @param errorBlock 失败的回调
  878. */
  879. - (void)addMembers:(NSArray *)members
  880. toGroup:(NSString *)groupId
  881. notifyLines:(NSArray<NSNumber *> *)notifyLines
  882. notifyContent:(WFCCMessageContent *)notifyContent
  883. success:(void(^)(void))successBlock
  884. error:(void(^)(int error_code))errorBlock;
  885. /**
  886. 踢出群成员
  887. @param members 成员的用户ID列表
  888. @param groupId 群ID
  889. @param notifyLines 默认传 @[@(0)]
  890. @param notifyContent 通知消息
  891. @param successBlock 成功的回调
  892. @param errorBlock 失败的回调
  893. */
  894. - (void)kickoffMembers:(NSArray *)members
  895. fromGroup:(NSString *)groupId
  896. notifyLines:(NSArray<NSNumber *> *)notifyLines
  897. notifyContent:(WFCCMessageContent *)notifyContent
  898. success:(void(^)(void))successBlock
  899. error:(void(^)(int error_code))errorBlock;
  900. /**
  901. 退群
  902. @param groupId 群ID
  903. @param notifyLines 默认传 @[@(0)]
  904. @param notifyContent 通知消息
  905. @param successBlock 成功的回调
  906. @param errorBlock 失败的回调
  907. */
  908. - (void)quitGroup:(NSString *)groupId
  909. notifyLines:(NSArray<NSNumber *> *)notifyLines
  910. notifyContent:(WFCCMessageContent *)notifyContent
  911. success:(void(^)(void))successBlock
  912. error:(void(^)(int error_code))errorBlock;
  913. /**
  914. 解散群
  915. @param groupId 群ID
  916. @param notifyLines 默认传 @[@(0)]
  917. @param notifyContent 通知消息
  918. @param successBlock 成功的回调
  919. @param errorBlock 失败的回调
  920. */
  921. - (void)dismissGroup:(NSString *)groupId
  922. notifyLines:(NSArray<NSNumber *> *)notifyLines
  923. notifyContent:(WFCCMessageContent *)notifyContent
  924. success:(void(^)(void))successBlock
  925. error:(void(^)(int error_code))errorBlock;
  926. /**
  927. 修改群信息
  928. @param groupId 群ID
  929. @param type 要修改的群属性
  930. @param newValue 要修改的群属性值
  931. @param notifyLines 默认传 @[@(0)]
  932. @param notifyContent 通知消息
  933. @param successBlock 成功的回调
  934. @param errorBlock 失败的回调
  935. */
  936. - (void)modifyGroupInfo:(NSString *)groupId
  937. type:(ModifyGroupInfoType)type
  938. newValue:(NSString *)newValue
  939. notifyLines:(NSArray<NSNumber *> *)notifyLines
  940. notifyContent:(WFCCMessageContent *)notifyContent
  941. success:(void(^)(void))successBlock
  942. error:(void(^)(int error_code))errorBlock;
  943. /**
  944. 修改群昵称
  945. @param groupId 群ID
  946. @param newAlias 昵称
  947. @param notifyLines 默认传 @[@(0)]
  948. @param notifyContent 通知消息
  949. @param successBlock 成功的回调
  950. @param errorBlock 失败的回调
  951. */
  952. - (void)modifyGroupAlias:(NSString *)groupId
  953. alias:(NSString *)newAlias
  954. notifyLines:(NSArray<NSNumber *> *)notifyLines
  955. notifyContent:(WFCCMessageContent *)notifyContent
  956. success:(void(^)(void))successBlock
  957. error:(void(^)(int error_code))errorBlock;
  958. /**
  959. 转移群主
  960. @param groupId 群ID
  961. @param newOwner 群主的用户ID
  962. @param notifyLines 默认传 @[@(0)]
  963. @param notifyContent 通知消息
  964. @param successBlock 成功的回调
  965. @param errorBlock 失败的回调
  966. */
  967. - (void)transferGroup:(NSString *)groupId
  968. to:(NSString *)newOwner
  969. notifyLines:(NSArray<NSNumber *> *)notifyLines
  970. notifyContent:(WFCCMessageContent *)notifyContent
  971. success:(void(^)(void))successBlock
  972. error:(void(^)(int error_code))errorBlock;
  973. /**
  974. 设置群管理
  975. @param groupId 群ID
  976. @param isSet 设置或取消
  977. @param memberIds 成员ID
  978. @param notifyLines 默认传 @[@(0)]
  979. @param notifyContent 通知消息
  980. @param successBlock 成功的回调
  981. @param errorBlock 失败的回调
  982. */
  983. - (void)setGroupManager:(NSString *)groupId
  984. isSet:(BOOL)isSet
  985. memberIds:(NSArray<NSString *> *)memberIds
  986. notifyLines:(NSArray<NSNumber *> *)notifyLines
  987. notifyContent:(WFCCMessageContent *)notifyContent
  988. success:(void(^)(void))successBlock
  989. error:(void(^)(int error_code))errorBlock;
  990. /**
  991. 设置群成员禁言,仅专业版支持
  992. @param groupId 群ID
  993. @param isSet 设置或取消
  994. @param memberIds 成员ID
  995. @param notifyLines 默认传 @[@(0)]
  996. @param notifyContent 通知消息
  997. @param successBlock 成功的回调
  998. @param errorBlock 失败的回调
  999. */
  1000. - (void)muteGroupMember:(NSString *)groupId
  1001. isSet:(BOOL)isSet
  1002. memberIds:(NSArray<NSString *> *)memberIds
  1003. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1004. notifyContent:(WFCCMessageContent *)notifyContent
  1005. success:(void(^)(void))successBlock
  1006. error:(void(^)(int error_code))errorBlock;
  1007. /**
  1008. 设置群成员允许名单,当设置群全局禁言时,仅群主/群管理/运行名单成员可以发言,仅专业版支持
  1009. @param groupId 群ID
  1010. @param isSet 设置或取消
  1011. @param memberIds 成员ID
  1012. @param notifyLines 默认传 @[@(0)]
  1013. @param notifyContent 通知消息
  1014. @param successBlock 成功的回调
  1015. @param errorBlock 失败的回调
  1016. */
  1017. - (void)allowGroupMember:(NSString *)groupId
  1018. isSet:(BOOL)isSet
  1019. memberIds:(NSArray<NSString *> *)memberIds
  1020. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1021. notifyContent:(WFCCMessageContent *)notifyContent
  1022. success:(void(^)(void))successBlock
  1023. error:(void(^)(int error_code))errorBlock;
  1024. /**
  1025. 获取当前用户收藏的群组
  1026. @return 当前用户收藏的群组ID
  1027. */
  1028. - (NSArray<NSString *> *)getFavGroups;
  1029. /**
  1030. 是否是当前用户收藏的群组
  1031. @return 是否是当前用户收藏的群组
  1032. */
  1033. - (BOOL)isFavGroup:(NSString *)groupId;
  1034. /**
  1035. 设置群组收藏状态
  1036. @param groupId 群组ID
  1037. @param fav 是否收藏
  1038. @param successBlock 成功的回调
  1039. @param errorBlock 失败的回调
  1040. */
  1041. - (void)setFavGroup:(NSString *)groupId fav:(BOOL)fav success:(void(^)(void))successBlock error:(void(^)(int errorCode))errorBlock;
  1042. #pragma mark - 个人设置相关
  1043. /**
  1044. 获取个人设置
  1045. @param scope 设置项的scope
  1046. @param key 设置项的key
  1047. @return 设置值
  1048. */
  1049. - (NSString *)getUserSetting:(UserSettingScope)scope
  1050. key:(NSString *)key;
  1051. /**
  1052. 获取个人一类设置
  1053. @param scope 设置项的scope
  1054. @return scope对应的所有设置值
  1055. */
  1056. - (NSDictionary<NSString *, NSString *> *)getUserSettings:(UserSettingScope)scope;
  1057. /**
  1058. 设置个人设置项
  1059. @param scope 设置项的scope
  1060. @param key 设置项的key
  1061. @param value 值
  1062. @param successBlock 成功的回调
  1063. @param errorBlock 失败的回调
  1064. */
  1065. - (void)setUserSetting:(UserSettingScope)scope
  1066. key:(NSString *)key
  1067. value:(NSString *)value
  1068. success:(void(^)(void))successBlock
  1069. error:(void(^)(int error_code))errorBlock;
  1070. /**
  1071. 修改个人信息
  1072. @param values 信息
  1073. @param successBlock 成功的回调
  1074. @param errorBlock 失败的回调
  1075. @discuss 性别属性是int类型,修改时需要转为字符串类型
  1076. */
  1077. -(void)modifyMyInfo:(NSDictionary<NSNumber */*ModifyMyInfoType*/, NSString *> *)values
  1078. success:(void(^)(void))successBlock
  1079. error:(void(^)(int error_code))errorBlock;
  1080. /**
  1081. 是否全局静音
  1082. @return YES,当前用户全局静音;NO,没有全局静音
  1083. */
  1084. - (BOOL)isGlobalSlient;
  1085. /**
  1086. 修改全局静音状态
  1087. @param slient 是否静音
  1088. @param successBlock 成功的回调
  1089. @param errorBlock 失败的回调
  1090. */
  1091. - (void)setGlobalSlient:(BOOL)slient
  1092. success:(void(^)(void))successBlock
  1093. error:(void(^)(int error_code))errorBlock;
  1094. /**
  1095. 是否隐藏推送详情
  1096. @return YES,隐藏推送详情,提示“您收到一条消息”;NO,推送显示消息摘要
  1097. */
  1098. - (BOOL)isHiddenNotificationDetail;
  1099. /**
  1100. 修改全局静音状态
  1101. @param hidden 是否静音
  1102. @param successBlock 成功的回调
  1103. @param errorBlock 失败的回调
  1104. */
  1105. - (void)setHiddenNotificationDetail:(BOOL)hidden
  1106. success:(void(^)(void))successBlock
  1107. error:(void(^)(int error_code))errorBlock;
  1108. /**
  1109. 是否隐藏群组会话中群成员昵称显示
  1110. @return YES,群组会话中不显示群成员昵称;NO,显示
  1111. */
  1112. - (BOOL)isHiddenGroupMemberName:(NSString *)groupId;
  1113. /**
  1114. 修改隐藏群组会话中群成员昵称显示状态
  1115. @param hidden 是否隐藏
  1116. @param successBlock 成功的回调
  1117. @param errorBlock 失败的回调
  1118. */
  1119. - (void)setHiddenGroupMemberName:(BOOL)hidden
  1120. group:(NSString *)groupId
  1121. success:(void(^)(void))successBlock
  1122. error:(void(^)(int error_code))errorBlock;
  1123. /**
  1124. 当前用户是否启用消息回执功能,仅专业版有效
  1125. @return YES,开启消息回执功能;NO,关闭个人的消息回执功能。
  1126. @disscussion 仅当服务器开启这个功能才有效
  1127. */
  1128. - (BOOL)isUserEnableReceipt;
  1129. /**
  1130. 修改当前用户是否启用消息回执功能,仅专业版有效
  1131. @param enable 是否开启
  1132. @param successBlock 成功的回调
  1133. @param errorBlock 失败的回调
  1134. @disscussion 仅当服务器开启这个功能才有效
  1135. */
  1136. - (void)setUserEnableReceipt:(BOOL)enable
  1137. success:(void(^)(void))successBlock
  1138. error:(void(^)(int error_code))errorBlock;
  1139. #pragma mark - 聊天室相关
  1140. - (void)joinChatroom:(NSString *)chatroomId
  1141. success:(void(^)(void))successBlock
  1142. error:(void(^)(int error_code))errorBlock;
  1143. - (void)quitChatroom:(NSString *)chatroomId
  1144. success:(void(^)(void))successBlock
  1145. error:(void(^)(int error_code))errorBlock;
  1146. - (void)getChatroomInfo:(NSString *)chatroomId
  1147. upateDt:(long long)updateDt
  1148. success:(void(^)(WFCCChatroomInfo *chatroomInfo))successBlock
  1149. error:(void(^)(int error_code))errorBlock;
  1150. - (void)getChatroomMemberInfo:(NSString *)chatroomId
  1151. maxCount:(int)maxCount
  1152. success:(void(^)(WFCCChatroomMemberInfo *memberInfo))successBlock
  1153. error:(void(^)(int error_code))errorBlock;
  1154. #pragma mark - 频道相关
  1155. - (void)createChannel:(NSString *)channelName
  1156. portrait:(NSString *)channelPortrait
  1157. status:(int)status
  1158. desc:(NSString *)desc
  1159. extra:(NSString *)extra
  1160. success:(void(^)(WFCCChannelInfo *channelInfo))successBlock
  1161. error:(void(^)(int error_code))errorBlock;
  1162. /**
  1163. 获取频道信息
  1164. @param channelId 频道ID
  1165. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1166. @return 群信息
  1167. */
  1168. - (WFCCChannelInfo *)getChannelInfo:(NSString *)channelId
  1169. refresh:(BOOL)refresh;
  1170. /**
  1171. 修改频道信息
  1172. @param channelId 群ID
  1173. @param type 要修改的群属性
  1174. @param newValue 要修改的群属性值
  1175. @param successBlock 成功的回调
  1176. @param errorBlock 失败的回调
  1177. */
  1178. - (void)modifyChannelInfo:(NSString *)channelId
  1179. type:(ModifyChannelInfoType)type
  1180. newValue:(NSString *)newValue
  1181. success:(void(^)(void))successBlock
  1182. error:(void(^)(int error_code))errorBlock;
  1183. /**
  1184. 搜索频道
  1185. @param keyword 关键词
  1186. @param successBlock 成功的回调
  1187. @param errorBlock 失败的回调
  1188. */
  1189. - (void)searchChannel:(NSString *)keyword success:(void(^)(NSArray<WFCCChannelInfo *> *machedChannels))successBlock error:(void(^)(int errorCode))errorBlock;
  1190. /**
  1191. 是否收听频道
  1192. @param channelId 频道ID
  1193. @return YES,收听;NO,未收听
  1194. */
  1195. - (BOOL)isListenedChannel:(NSString *)channelId;
  1196. /**
  1197. 收听或者取消收听频道
  1198. @param channelId 频道ID
  1199. @param listen 是否收听
  1200. @param successBlock 成功的回调
  1201. @param errorBlock 失败的回调
  1202. */
  1203. - (void)listenChannel:(NSString *)channelId listen:(BOOL)listen success:(void(^)(void))successBlock error:(void(^)(int errorCode))errorBlock;
  1204. /**
  1205. 获取当前用户创建的频道
  1206. @return 当前用户创建的频道ID
  1207. */
  1208. - (NSArray<NSString *> *)getMyChannels;
  1209. /**
  1210. 获取当前用户收听的频道
  1211. @return 当前用户收听的频道ID
  1212. */
  1213. - (NSArray<NSString *> *)getListenedChannels;
  1214. /**
  1215. 销毁频道
  1216. @param channelId 频道ID
  1217. @param successBlock 成功的回调
  1218. @param errorBlock 失败的回调
  1219. */
  1220. - (void)destoryChannel:(NSString *)channelId
  1221. success:(void(^)(void))successBlock
  1222. error:(void(^)(int error_code))errorBlock;
  1223. #pragma mark - 其它接口
  1224. /**
  1225. 获取PC在线信息
  1226. @return PC端在线状态
  1227. */
  1228. - (NSArray<WFCCPCOnlineInfo *> *)getPCOnlineInfos;
  1229. /**
  1230. 踢掉PC或者Web
  1231. @param pcClientId PC或Web端的clientId
  1232. @param successBlock 成功的回调
  1233. @param errorBlock 失败的回调
  1234. */
  1235. - (void)kickoffPCClient:(NSString *)pcClientId
  1236. success:(void(^)(void))successBlock
  1237. error:(void(^)(int error_code))errorBlock;
  1238. - (void)getConversationFiles:(WFCCConversation *)conversation
  1239. beforeMessageUid:(long long)messageUid
  1240. count:(int)count
  1241. success:(void(^)(NSArray<WFCCFileRecord *> *files))successBlock
  1242. error:(void(^)(int error_code))errorBlock;
  1243. - (void)getMyFiles:(long long)beforeMessageUid
  1244. count:(int)count
  1245. success:(void(^)(NSArray<WFCCFileRecord *> *files))successBlock
  1246. error:(void(^)(int error_code))errorBlock;
  1247. - (void)deleteFileRecord:(long long)messageUid
  1248. success:(void(^)(void))successBlock
  1249. error:(void(^)(int error_code))errorBlock;
  1250. /**
  1251. 获取媒体文件授权访问地址
  1252. @param messageUid 消息Uid
  1253. @param mediaType 媒体类型
  1254. @param mediaPath 媒体Path
  1255. @param successBlock 成功的回调
  1256. @param errorBlock 失败的回调
  1257. */
  1258. - (void)getAuthorizedMediaUrl:(long long)messageUid
  1259. mediaType:(WFCCMediaType)mediaType
  1260. mediaPath:(NSString *)mediaPath
  1261. success:(void(^)(NSString *authorizedUrl))successBlock
  1262. error:(void(^)(int error_code))errorBlock;
  1263. /**
  1264. 获取图片缩略图参数
  1265. @return 图片缩略图参数
  1266. */
  1267. - (NSString *)imageThumbPara;
  1268. /**
  1269. 开启数据库事务。注意:该方法仅仅在做数据迁移时使用,其它情况不要使用;另外开启成功后一定要注意commit,需要配对使用.
  1270. @return 是否开启成功。
  1271. */
  1272. - (BOOL)beginTransaction;
  1273. /**
  1274. 提交数据库事务。注意:该方法仅仅在做数据迁移时使用,其它情况不要使用;需要跟beginTransaction配对使用
  1275. */
  1276. - (void)commitTransaction;
  1277. /**
  1278. 是否是商业版IM服务。
  1279. */
  1280. - (BOOL)isCommercialServer;
  1281. /**
  1282. 是否支持已送达报告和已阅读报告
  1283. */
  1284. - (BOOL)isReceiptEnabled;
  1285. - (void)sendConferenceRequest:(long long)sessionId
  1286. room:(NSString *)roomId
  1287. request:(NSString *)request
  1288. data:(NSString *)data
  1289. success:(void(^)(NSString *authorizedUrl))successBlock
  1290. error:(void(^)(int error_code))errorBlock;
  1291. @end