WFCCIMService.h 90 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821
  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. #import "WFCCFriend.h"
  24. #import "WFCCSecretChatInfo.h"
  25. #import "WFCCNetworkService.h"
  26. #import "WFCCDomainInfo.h"
  27. #pragma mark - 频道通知定义
  28. //发送消息状态通知
  29. extern NSString *kSendingMessageStatusUpdated;
  30. extern NSString *kUploadMediaMessageProgresse;
  31. extern NSString *kConnectionStatusChanged;
  32. extern NSString *kReceiveMessages;
  33. extern NSString *kRecallMessages;
  34. extern NSString *kDeleteMessages;
  35. extern NSString *kMessageDelivered;
  36. extern NSString *kMessageReaded;
  37. extern NSString *kMessageUpdated;
  38. #pragma mark - 枚举值定义
  39. /**
  40. 修改个人信息的内容
  41. - Modify_DisplayName: 修改显示名
  42. - Modify_Portrait: 修改头像
  43. - Modify_Gender: 修改性别
  44. - Modify_Mobile: 修改手机号
  45. - Modify_Email: 修改邮箱
  46. - Modify_Address: 修改地址
  47. - Modify_Company: 修改公司信息
  48. - Modify_Social: 修改社交信息
  49. - Modify_Extra: 修改扩展信息
  50. */
  51. typedef NS_ENUM(NSInteger, ModifyMyInfoType) {
  52. Modify_DisplayName = 0,
  53. Modify_Portrait = 1,
  54. Modify_Gender = 2,
  55. Modify_Mobile = 3,
  56. Modify_Email = 4,
  57. Modify_Address = 5,
  58. Modify_Company = 6,
  59. Modify_Social = 7,
  60. Modify_Extra = 8
  61. };
  62. typedef NS_ENUM(NSInteger, ModifyGroupInfoType) {
  63. Modify_Group_Name = 0,
  64. Modify_Group_Portrait = 1,
  65. Modify_Group_Extra = 2,
  66. Modify_Group_Mute = 3,
  67. Modify_Group_JoinType = 4,
  68. Modify_Group_PrivateChat = 5,
  69. Modify_Group_Searchable = 6,
  70. Modify_Group_History_Message = 7,
  71. Modify_Group_Max_Member_Count = 8
  72. };
  73. typedef NS_ENUM(NSInteger, ModifyChannelInfoType) {
  74. Modify_Channel_Name = 0,
  75. Modify_Channel_Portrait = 1,
  76. Modify_Channel_Desc = 2,
  77. Modify_Channel_Extra = 3,
  78. Modify_Channel_Secret = 4,
  79. Modify_Channel_Callback = 5
  80. };
  81. /**
  82. 个人设置Scope
  83. @discussion 用户设置,1000以内被系统保留。应用不应该直接使用系统预制的范围。应用可以使用1000以上的值。
  84. */
  85. typedef NS_ENUM(NSInteger, UserSettingScope) {
  86. //不能直接使用,调用setConversation:silent:方法会使用到此值。
  87. UserSettingScope_Conversation_Silent = 1,
  88. //不能直接使用
  89. UserSettingScope_Global_Silent = 2,
  90. //不能直接使用,调用setConversation:top:方法会使用到此值。
  91. UserSettingScope_Conversation_Top = 3,
  92. //不能直接使用
  93. UserSettingScope_Hidden_Notification_Detail = 4,
  94. //不能直接使用
  95. UserSettingScope_Group_Hide_Nickname = 5,
  96. //不能直接使用
  97. UserSettingScope_Favourite_Group = 6,
  98. //不能直接使用,协议栈内会使用此值
  99. UserSettingScope_Conversation_Sync = 7,
  100. //不能直接使用,协议栈内会使用此值
  101. UserSettingScope_My_Channel = 8,
  102. //不能直接使用,协议栈内会使用此值
  103. UserSettingScope_Listened_Channel = 9,
  104. //不能直接使用,协议栈内会使用此值
  105. UserSettingScope_PC_Online = 10,
  106. //不能直接使用,协议栈内会使用此值
  107. UserSettingScope_Conversation_Readed = 11,
  108. //不能直接使用,协议栈内会使用此值
  109. UserSettingScope_WebOnline = 12,
  110. //不能直接使用,协议栈内会使用此值
  111. UserSettingScope_DisableRecipt = 13,
  112. //不能直接使用
  113. UserSettingScope_Favourite_User = 14,
  114. //不能直接使用
  115. UserSettingScope_Mute_When_PC_Online = 15,
  116. //不能直接使用
  117. UserSettingScope_Lines_Readed = 16,
  118. //不能直接使用
  119. UserSettingScope_No_Disturbing = 17,
  120. //不能直接使用,协议栈内会使用此值
  121. UserSettingScope_Conversation_Clear_Message = 18,
  122. //不能直接使用,协议栈内会使用此值
  123. UserSettingScope_Conversation_Draft = 19,
  124. //不能直接使用,协议栈内会使用此值
  125. UserSettingScope_Disable_Sync_Draft = 20,
  126. //不能直接使用,协议栈内会使用此值
  127. UserSettingScope_Voip_Silent = 21,
  128. //不能直接使用,协议栈内会使用此值
  129. UserSettingScope_PTT_Reserved = 22,
  130. //不能直接使用,协议栈内会使用此值
  131. UserSettingScope_Custom_State = 23,
  132. //不能直接使用,协议栈内会使用此值
  133. UserSettingScope_Disable_Secret_Chat = 24,
  134. //不能直接使用,协议栈内会使用此值
  135. UserSettingScope_Ptt_Silent = 25,
  136. //不能直接使用,协议栈内会使用此值
  137. UserSettingScope_Group_Remark = 26,
  138. //不能直接使用,协议栈内会使用此值
  139. UserSettingScope_Privacy_Searchable = 27,
  140. //不能直接使用,协议栈内会使用此值
  141. UserSettingScope_AddFriend_NoVerify = 28,
  142. //自定义用户设置,请使用1000以上的key
  143. UserSettingScope_Custom_Begin = 1000
  144. } ;
  145. /**
  146. 搜索用户类型
  147. - SearchUserType_General: 模糊搜索diaplayName,精确匹配name或电话或用户ID
  148. - SearchUserType_Name_Mobile: 精确匹配name或电话
  149. - SearchUserType_Name: 精确匹配name
  150. - SearchUserType_Mobile: 精确匹配电话
  151. - SearchUserType_UserId: 精确匹配用户ID
  152. - SearchUserType_Name_Mobile_UserId: 精确匹配name或电话或用户ID
  153. */
  154. typedef NS_ENUM(NSInteger, WFCCSearchUserType) {
  155. SearchUserType_General,
  156. SearchUserType_Name_Mobile,
  157. SearchUserType_Name,
  158. SearchUserType_Mobile,
  159. SearchUserType_UserId,
  160. SearchUserType_Name_Mobile_UserId
  161. };
  162. /**
  163. 禁止搜索当前用户的掩码。
  164. - DisableSearch_DisplayName_Mask: 第1位是是否禁止搜索昵称
  165. - DisableSearch_Name_Mask: 第2位是否禁止搜索账户
  166. - DisableSearch_Mobile_Mask: 第3位是否禁止搜索电话号码
  167. - DisableSearch_UserId_Mask: 第4位是否禁止搜索用户ID
  168. */
  169. typedef NS_ENUM(NSInteger, WFCCDisableSearchMask) {
  170. DisableSearch_DisplayName_Mask = 1,
  171. DisableSearch_Name_Mask = 2,
  172. DisableSearch_Mobile_Mask = 4,
  173. DisableSearch_UserId_Mask = 8,
  174. };
  175. typedef NS_ENUM(NSInteger, WFCCPlatformType) {
  176. PlatformType_UNSET = 0,
  177. PlatformType_iOS = 1,
  178. PlatformType_Android = 2,
  179. PlatformType_Windows = 3,
  180. PlatformType_OSX = 4,
  181. PlatformType_WEB = 5,
  182. PlatformType_WX = 6,
  183. PlatformType_Linux = 7,
  184. PlatformType_iPad = 8,
  185. //Android pad
  186. PlatformType_APad = 9,
  187. PlatformType_Harmony = 10,
  188. PlatformType_HarmonyPad = 11,
  189. PlatformType_HarmonyPC = 12
  190. } ;
  191. typedef NS_ENUM(NSInteger, WFCCFileRecordOrder) {
  192. FileRecordOrder_TIME_DESC = 0,
  193. FileRecordOrder_TIME_ASC = 1,
  194. FileRecordOrder_SIZE_DESC = 2,
  195. FileRecordOrder_SIZE_ASC = 3,
  196. } ;
  197. #pragma mark - 用户源
  198. /*
  199. * ChatClient内置支持用户信息托管,但对于很多应用来说都已经拥有自己的用户信息。此时可以实现用户源并设置到IMServer中去。这样ChatClient会从源中读取信息,从而ChatUIKit不用修改代码。
  200. * 对于好友关系,由于页面简单。如果客户有自己的好友关系,建议客户自己修改相关UI。
  201. * 对于群组建议使用我们的托管。
  202. */
  203. @protocol WFCCUserSource <NSObject>
  204. - (WFCCUserInfo *)getUserInfo:(NSString *)userId
  205. refresh:(BOOL)refresh;
  206. - (WFCCUserInfo *)getUserInfo:(NSString *)userId inGroup:(NSString *)groupId refresh:(BOOL)refresh;
  207. - (NSArray<WFCCUserInfo *> *)getUserInfos:(NSArray<NSString *> *)userIds inGroup:(NSString *)groupId;
  208. - (void)getUserInfo:(NSString *)userId
  209. refresh:(BOOL)refresh
  210. success:(void(^)(WFCCUserInfo *userInfo))successBlock
  211. error:(void(^)(int errorCode))errorBlock;
  212. - (void)getUserInfo:(NSString *)userId
  213. groupId:(NSString *)groupId
  214. refresh:(BOOL)refresh
  215. success:(void(^)(WFCCUserInfo *userInfo))successBlock
  216. error:(void(^)(int errorCode))errorBlock;
  217. - (void)getUserInfos:(NSArray<NSString *> *)userIds
  218. groupId:(NSString *)groupId
  219. success:(void(^)(NSArray<WFCCUserInfo *> *userInfos))successBlock
  220. error:(void(^)(int errorCode))errorBlock;
  221. - (void)searchUser:(NSString *)keyword
  222. searchType:(WFCCSearchUserType)searchType
  223. page:(int)page
  224. success:(void(^)(NSArray<WFCCUserInfo *> *machedUsers))successBlock
  225. error:(void(^)(int errorCode))errorBlock;
  226. - (void)searchUser:(NSString *)keyword
  227. domain:(NSString *)domainId
  228. searchType:(WFCCSearchUserType)searchType
  229. page:(int)page
  230. success:(void(^)(NSArray<WFCCUserInfo *> *machedUsers))successBlock
  231. error:(void(^)(int errorCode))errorBlock;
  232. -(void)modifyMyInfo:(NSDictionary<NSNumber */*ModifyMyInfoType*/, NSString *> *)values
  233. success:(void(^)(void))successBlock
  234. error:(void(^)(int error_code))errorBlock;
  235. @end
  236. @protocol ReceiveMessageFilter;
  237. @class WFCCUserOnlineState;
  238. @class WFCCUserCustomState;
  239. @class UIImage;
  240. #pragma mark - IM服务
  241. /**
  242. IM服务
  243. */
  244. @interface WFCCIMService : NSObject <ReceiveMessageFilter>
  245. /**
  246. IM服务单例
  247. @return IM服务单例
  248. */
  249. + (WFCCIMService*)sharedWFCIMService;
  250. /*
  251. 使用raw消息。当client用于uniapp时,messagePayload没有必要decode为messagecontent,使用raw消息,收发消息都是WFCCRawMessageContent。不要调用这个函数,仅仅当client用在uniapp时。
  252. */
  253. - (void)useRawMessage;
  254. /**
  255. 外部用户源
  256. */
  257. @property(nonatomic, weak)id<WFCCUserSource> userSource;
  258. /**
  259. 默认图片,当图片消息或者其他类型需要缩略图消息没有缩略图时,使用次默认图片
  260. */
  261. @property(nonatomic, strong)UIImage *defaultThumbnailImage;
  262. #pragma mark - 会话相关
  263. /**
  264. 获取会话信息
  265. @param conversationTypes 会话类型
  266. @param lines 默认传 @[@(0)]
  267. @return 会话信息
  268. */
  269. - (NSArray<WFCCConversationInfo *> *)getConversationInfos:(NSArray<NSNumber *> *)conversationTypes
  270. lines:(NSArray<NSNumber *> *)lines;
  271. /**
  272. 获取会话信息
  273. @param conversation 会话
  274. @return 会话信息
  275. */
  276. - (WFCCConversationInfo *)getConversationInfo:(WFCCConversation *)conversation;
  277. /**
  278. 搜索会话
  279. @param keyword 关键词
  280. @param conversationTypes 会话类型
  281. @param lines 默认传 @[@(0)]
  282. @return 会话搜索结果信息
  283. */
  284. - (NSArray<WFCCConversationSearchInfo *> *)searchConversation:(NSString *)keyword inConversation:(NSArray<NSNumber *> *)conversationTypes lines:(NSArray<NSNumber *> *)lines;
  285. /**
  286. 搜索会话
  287. @param keyword 关键词
  288. @param conversationTypes 会话类型
  289. @param lines 默认传 @[@(0)]
  290. @param startTime 开始时间,如果不限制开始时间请使用0
  291. @param endTime 结束时间,如果不限制开始时间请使用0
  292. @param desc 是否逆序
  293. @param limit limit
  294. @param offset offset
  295. @return 会话搜索结果信息
  296. */
  297. - (NSArray<WFCCConversationSearchInfo *> *)searchConversation:(NSString *)keyword inConversation:(NSArray<NSNumber *> *)conversationTypes lines:(NSArray<NSNumber *> *)lines startTime:(int64_t)startTime endTime:(int64_t)endTime desc:(BOOL)desc limit:(int)limit offset:(int)offset;
  298. /**
  299. 搜索会话
  300. @param keyword 关键词
  301. @param conversationTypes 会话类型
  302. @param lines 默认传 @[@(0)]
  303. @param cntTypes 消息内容类型
  304. @param startTime 开始时间,如果不限制开始时间请使用0
  305. @param endTime 结束时间,如果不限制开始时间请使用0
  306. @param desc 是否逆序
  307. @param limit limit
  308. @param offset offset
  309. @param onlyMentionedMsg 是否只搜索提醒消息
  310. @return 会话搜索结果信息
  311. */
  312. - (NSArray<WFCCConversationSearchInfo *> *)searchConversation:(NSString *)keyword
  313. inConversation:(NSArray<NSNumber *> *)conversationTypes
  314. lines:(NSArray<NSNumber *> *)lines
  315. cntTypes:(NSArray<NSNumber *> *)cntTypes
  316. startTime:(int64_t)startTime
  317. endTime:(int64_t)endTime
  318. desc:(BOOL)desc
  319. limit:(int)limit
  320. offset:(int)offset
  321. onlyMentionedMsg:(BOOL)onlyMentionedMsg;
  322. /**
  323. 删除会话
  324. @param conversation 会话
  325. @param clearMessage 是否删除会话中的消息
  326. */
  327. - (void)removeConversation:(WFCCConversation *)conversation
  328. clearMessage:(BOOL)clearMessage;
  329. /**
  330. 设置或取消会话置顶
  331. @param conversation 会话
  332. @param top 置顶优先级
  333. */
  334. - (void)setConversation:(WFCCConversation *)conversation
  335. top:(int)top
  336. success:(void(^)(void))successBlock
  337. error:(void(^)(int error_code))errorBlock;
  338. /**
  339. 设置会话免打扰
  340. @param conversation 会话
  341. @param silent 是否免打扰
  342. @param successBlock 成功的回调
  343. @param errorBlock 失败的回调
  344. */
  345. - (void)setConversation:(WFCCConversation *)conversation
  346. silent:(BOOL)silent
  347. success:(void(^)(void))successBlock
  348. error:(void(^)(int error_code))errorBlock;
  349. /**
  350. 获取会话是否免打扰状态
  351. @param conversation 会话
  352. @return 会话是否免打扰
  353. */
  354. - (BOOL)isConversationSilent:(WFCCConversation *)conversation;
  355. /**
  356. 设置会话草稿
  357. @param conversation 会话
  358. @param draft 草稿
  359. */
  360. - (void)setConversation:(WFCCConversation *)conversation
  361. draft:(NSString *)draft;
  362. /**
  363. 更新会话的时间
  364. @param conversation 会话
  365. @param timestamp 时间戳
  366. */
  367. - (void)setConversation:(WFCCConversation *)conversation
  368. timestamp:(long long)timestamp;
  369. /**
  370. 获取会话列表第一条未读消息Id
  371. @param conversation 会话
  372. @return 会话中最早一条未读消息Id
  373. */
  374. - (long)getFirstUnreadMessageId:(WFCCConversation *)conversation;
  375. /**
  376. 清除远端会话消息,仅专业版支持。
  377. @param conversation 会话
  378. @param successBlock 删除成功
  379. @param errorBlock 删除失败
  380. */
  381. - (void)clearRemoteConversationMessage:(WFCCConversation *)conversation
  382. success:(void(^)(void))successBlock
  383. error:(void(^)(int error_code))errorBlock;
  384. #pragma mark - 未读数相关
  385. /**
  386. 获取指定类型会话的未读数
  387. @param conversationTypes 会话类型
  388. @param lines 默认传 @[@(0)]
  389. @return 未读数
  390. */
  391. - (WFCCUnreadCount *)getUnreadCount:(NSArray<NSNumber *> *)conversationTypes
  392. lines:(NSArray<NSNumber *> *)lines;
  393. /**
  394. 获取某个会话的未读数
  395. @param conversation 会话
  396. @return 未读数
  397. */
  398. - (WFCCUnreadCount *)getUnreadCount:(WFCCConversation *)conversation;
  399. /**
  400. 清空会话未读数。
  401. @param conversation 会话
  402. */
  403. - (void)clearUnreadStatus:(WFCCConversation *)conversation;
  404. /**
  405. 清空会话未读数
  406. @param conversationTypes 会话类型
  407. @param lines 线路
  408. */
  409. - (void)clearUnreadStatus:(NSArray<NSNumber *> *)conversationTypes
  410. lines:(NSArray<NSNumber *> *)lines;
  411. /**
  412. 清空所有会话的未读数。仅清理本地消息的未读数,没有同步到其他端,如果多端使用,请避免使用此方法
  413. */
  414. - (void)clearAllUnreadStatus DEPRECATED_MSG_ATTRIBUTE("use clearUnreadStatus:lines: instead");
  415. /**
  416. 清空消息未读。
  417. @param messageId 消息ID
  418. @discuss 这个函数只能清除本地的状态,不能同步到服务器或者其他端。建议一般情况下不要用这个接口。
  419. */
  420. - (void)clearMessageUnreadStatus:(long)messageId;
  421. /**
  422. 清空某条消息之前(包含)所有消息的未读状态。
  423. @param messageId 消息ID
  424. @param conversation 消息所属会话
  425. */
  426. - (void)clearMessageUnreadStatusBefore:(long)messageId conversation:(WFCCConversation *)conversation;
  427. /**
  428. 设置会话的最后一条接收消息为未读状态。
  429. @param conversation 会话
  430. @param sync 是否同步到其它客户端
  431. @return YES设置成功,NO消息不存在或已经存在未读。
  432. */
  433. - (BOOL)markAsUnRead:(WFCCConversation *)conversation syncToOtherClient:(BOOL)sync;
  434. /**
  435. 设置媒体消息已播放(已经放开限制,所有消息都可以设置为已读状态)
  436. @param messageId 消息ID
  437. */
  438. - (void)setMediaMessagePlayed:(long)messageId;
  439. /**
  440. 设置消息的本地附加信息,注意信息不在多端之间同步。
  441. @param messageId 消息ID
  442. @param extra 附加信息
  443. @return YES更新成功,NO消息不存在
  444. */
  445. - (BOOL)setMessage:(long)messageId localExtra:(NSString *)extra;
  446. /**
  447. 获取会话内已读状态
  448. @param conversation 会话
  449. @return 会话的每个用户的已读时间
  450. */
  451. - (NSMutableDictionary<NSString *, NSNumber *> *)getConversationRead:(WFCCConversation *)conversation;
  452. /**
  453. 获取会话内已送达状态
  454. @param conversation 会话
  455. @return 会话的每个用户的已送达时间
  456. */
  457. - (NSMutableDictionary<NSString *, NSNumber *> *)getMessageDelivery:(WFCCConversation *)conversation;
  458. #pragma mark - 消息相关
  459. /**
  460. 获取消息
  461. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  462. @param conversation 会话
  463. @param contentTypes 消息类型
  464. @param fromIndex 起始index
  465. @param count 总数
  466. @return 消息实体
  467. */
  468. - (NSArray<WFCCMessage *> *)getMessages:(WFCCConversation *)conversation
  469. contentTypes:(NSArray<NSNumber *> *)contentTypes
  470. from:(NSUInteger)fromIndex
  471. count:(NSInteger)count
  472. withUser:(NSString *)user DEPRECATED_MSG_ATTRIBUTE("use v2 API instead");
  473. /**
  474. 获取消息
  475. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  476. @param conversation 会话
  477. @param contentTypes 消息类型
  478. @param fromIndex 起始index
  479. @param count 总数
  480. @param successBlock 成功的回调
  481. @param errorBlock 失败的回调
  482. */
  483. - (void)getMessagesV2:(WFCCConversation *)conversation
  484. contentTypes:(NSArray<NSNumber *> *)contentTypes
  485. from:(NSUInteger)fromIndex
  486. count:(NSInteger)count
  487. withUser:(NSString *)user
  488. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  489. error:(void(^)(int error_code))errorBlock;
  490. /**
  491. 获取提醒消息
  492. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  493. @param conversation 会话
  494. @param fromIndex 起始index
  495. @param count 总数
  496. @param successBlock 成功的回调
  497. @param errorBlock 失败的回调
  498. */
  499. - (void)getMentionedMessages:(WFCCConversation *)conversation
  500. from:(NSUInteger)fromIndex
  501. count:(NSInteger)count
  502. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  503. error:(void(^)(int error_code))errorBlock;
  504. /**
  505. 获取消息
  506. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  507. @param conversation 会话
  508. @param messageStatus 消息状态WFCCMessageStatus
  509. @param fromIndex 起始index
  510. @param count 总数
  511. @return 消息实体
  512. */
  513. - (NSArray<WFCCMessage *> *)getMessages:(WFCCConversation *)conversation
  514. messageStatus:(NSArray<NSNumber *> *)messageStatus
  515. from:(NSUInteger)fromIndex
  516. count:(NSInteger)count
  517. withUser:(NSString *)user DEPRECATED_MSG_ATTRIBUTE("use v2 API instead");
  518. /**
  519. 获取消息
  520. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  521. @param conversation 会话
  522. @param messageStatus 消息状态WFCCMessageStatus
  523. @param fromIndex 起始index
  524. @param count 总数
  525. @param successBlock 成功的回调
  526. @param errorBlock 失败的回调
  527. */
  528. - (void)getMessagesV2:(WFCCConversation *)conversation
  529. messageStatus:(NSArray<NSNumber *> *)messageStatus
  530. from:(NSUInteger)fromIndex
  531. count:(NSInteger)count
  532. withUser:(NSString *)user
  533. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  534. error:(void(^)(int error_code))errorBlock;
  535. /**
  536. 获取某类会话信息
  537. @param conversationTypes 会话类型
  538. @param lines 默认传 @[@(0)]
  539. @param contentTypes 消息类型
  540. @param fromIndex 起始index
  541. @param count 总数
  542. @return 消息实体
  543. */
  544. - (NSArray<WFCCMessage *> *)getMessages:(NSArray<NSNumber *> *)conversationTypes
  545. lines:(NSArray<NSNumber *> *)lines
  546. contentTypes:(NSArray<NSNumber *> *)contentTypes
  547. from:(NSUInteger)fromIndex
  548. count:(NSInteger)count
  549. withUser:(NSString *)user DEPRECATED_MSG_ATTRIBUTE("use v2 API instead");
  550. /**
  551. 获取某类会话信息
  552. @param conversationTypes 会话类型
  553. @param lines 默认传 @[@(0)]
  554. @param contentTypes 消息类型
  555. @param fromIndex 起始index
  556. @param count 总数
  557. @param successBlock 成功的回调
  558. @param errorBlock 失败的回调
  559. */
  560. - (void)getMessagesV2:(NSArray<NSNumber *> *)conversationTypes
  561. lines:(NSArray<NSNumber *> *)lines
  562. contentTypes:(NSArray<NSNumber *> *)contentTypes
  563. from:(NSUInteger)fromIndex
  564. count:(NSInteger)count
  565. withUser:(NSString *)user
  566. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  567. error:(void(^)(int error_code))errorBlock;
  568. /**
  569. 获取某类会话信息
  570. @param conversationTypes 会话类型
  571. @param lines 默认传 @[@(0)]
  572. @param messageStatus 消息状态
  573. @param fromIndex 起始index
  574. @param count 总数
  575. @param user 对话用户
  576. @return 消息实体
  577. */
  578. - (NSArray<WFCCMessage *> *)getMessages:(NSArray<NSNumber *> *)conversationTypes
  579. lines:(NSArray<NSNumber *> *)lines
  580. messageStatus:(NSArray<NSNumber *> *)messageStatus
  581. from:(NSUInteger)fromIndex
  582. count:(NSInteger)count
  583. withUser:(NSString *)user DEPRECATED_MSG_ATTRIBUTE("use v2 API instead");
  584. /**
  585. 获取某类会话信息
  586. @param conversationTypes 会话类型
  587. @param lines 默认传 @[@(0)]
  588. @param messageStatus 消息状态
  589. @param fromIndex 起始index
  590. @param count 总数
  591. @param user 对话用户
  592. @param successBlock 成功的回调
  593. @param errorBlock 失败的回调
  594. */
  595. - (void)getMessagesV2:(NSArray<NSNumber *> *)conversationTypes
  596. lines:(NSArray<NSNumber *> *)lines
  597. messageStatus:(NSArray<NSNumber *> *)messageStatus
  598. from:(NSUInteger)fromIndex
  599. count:(NSInteger)count
  600. withUser:(NSString *)user
  601. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  602. error:(void(^)(int error_code))errorBlock;
  603. /**
  604. 获取消息
  605. @discuss 获取从fromTime起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  606. @param conversation 会话
  607. @param contentTypes 消息类型
  608. @param fromTime 起始index
  609. @param count 总数
  610. @return 消息实体
  611. */
  612. - (NSArray<WFCCMessage *> *)getMessages:(WFCCConversation *)conversation
  613. contentTypes:(NSArray<NSNumber *> *)contentTypes
  614. fromTime:(NSUInteger)fromTime
  615. count:(NSInteger)count
  616. withUser:(NSString *)user DEPRECATED_MSG_ATTRIBUTE("use v2 API instead");
  617. /**
  618. 获取消息
  619. @discuss 获取从fromTime起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  620. @param conversation 会话
  621. @param contentTypes 消息类型
  622. @param fromTime 起始index
  623. @param count 总数
  624. @param successBlock 成功的回调
  625. @param errorBlock 失败的回调
  626. */
  627. - (void)getMessagesV2:(WFCCConversation *)conversation
  628. contentTypes:(NSArray<NSNumber *> *)contentTypes
  629. fromTime:(NSUInteger)fromTime
  630. count:(NSInteger)count
  631. withUser:(NSString *)user
  632. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  633. error:(void(^)(int error_code))errorBlock;
  634. /**
  635. 获取用户会话消息
  636. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  637. @param userId 用户ID
  638. @param conversation 会话
  639. @param contentTypes 消息类型
  640. @param fromIndex 起始index
  641. @param count 总数
  642. @return 消息实体
  643. */
  644. - (NSArray<WFCCMessage *> *)getUserMessages:(NSString *)userId
  645. conversation:(WFCCConversation *)conversation
  646. contentTypes:(NSArray<NSNumber *> *)contentTypes
  647. from:(NSUInteger)fromIndex
  648. count:(NSInteger)count DEPRECATED_MSG_ATTRIBUTE("use v2 API instead");
  649. /**
  650. 获取用户会话消息
  651. @discuss 获取从fromIndex起count条旧的消息。如果想要获取比fromIndex新的消息,count传负值。
  652. @param userId 用户ID
  653. @param conversation 会话
  654. @param contentTypes 消息类型
  655. @param fromIndex 起始index
  656. @param count 总数
  657. @param successBlock 成功的回调
  658. @param errorBlock 失败的回调
  659. */
  660. - (void)getUserMessagesV2:(NSString *)userId
  661. conversation:(WFCCConversation *)conversation
  662. contentTypes:(NSArray<NSNumber *> *)contentTypes
  663. from:(NSUInteger)fromIndex
  664. count:(NSInteger)count
  665. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  666. error:(void(^)(int error_code))errorBlock;
  667. /**
  668. 获取用户某类会话信息
  669. @param userId 用户ID
  670. @param conversationTypes 会话类型
  671. @param lines 默认传 @[@(0)]
  672. @param contentTypes 消息类型
  673. @param fromIndex 起始index
  674. @param count 总数
  675. @return 消息实体
  676. */
  677. - (NSArray<WFCCMessage *> *)getUserMessages:(NSString *)userId
  678. conversationTypes:(NSArray<NSNumber *> *)conversationTypes
  679. lines:(NSArray<NSNumber *> *)lines
  680. contentTypes:(NSArray<NSNumber *> *)contentTypes
  681. from:(NSUInteger)fromIndex
  682. count:(NSInteger)count DEPRECATED_MSG_ATTRIBUTE("use v2 API instead");
  683. /**
  684. 获取用户某类会话信息
  685. @param userId 用户ID
  686. @param conversationTypes 会话类型
  687. @param lines 默认传 @[@(0)]
  688. @param contentTypes 消息类型
  689. @param fromIndex 起始index
  690. @param count 总数
  691. @param successBlock 成功的回调
  692. @param errorBlock 失败的回调
  693. */
  694. - (void)getUserMessagesV2:(NSString *)userId
  695. conversationTypes:(NSArray<NSNumber *> *)conversationTypes
  696. lines:(NSArray<NSNumber *> *)lines
  697. contentTypes:(NSArray<NSNumber *> *)contentTypes
  698. from:(NSUInteger)fromIndex
  699. count:(NSInteger)count
  700. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  701. error:(void(^)(int error_code))errorBlock;
  702. /**
  703. 获取服务器消息
  704. @discussion 获取得到的消息数目有可能少于指定的count数,如果count不为0就意味着还有更多的消息可以获取,只有获取到的消息数为0才表示没有更多的消息了。
  705. @param conversation 会话
  706. @param beforeMessageUid 起始index
  707. @param count 总数
  708. @param successBlock 返回消息
  709. @param errorBlock 返回错误码
  710. */
  711. - (void)getRemoteMessages:(WFCCConversation *)conversation
  712. before:(long long)beforeMessageUid
  713. count:(NSUInteger)count
  714. contentTypes:(NSArray<NSNumber *> *)contentTypes
  715. success:(void(^)(NSArray<WFCCMessage *> *messages))successBlock
  716. error:(void(^)(int error_code))errorBlock;
  717. /**
  718. 获取一条远端消息,消息不会存储在数据库中
  719. @param messageUid 消息ID
  720. @param successBlock 返回消息
  721. @param errorBlock 返回错误码
  722. */
  723. - (void)getRemoteMessage:(long long)messageUid
  724. success:(void(^)(WFCCMessage *message))successBlock
  725. error:(void(^)(int error_code))errorBlock;
  726. /**
  727. 获取消息
  728. @param messageId 消息ID
  729. @return 消息实体
  730. */
  731. - (WFCCMessage *)getMessage:(long)messageId;
  732. /**
  733. 获取消息
  734. @param messageUid 消息UID
  735. @return 消息实体
  736. */
  737. - (WFCCMessage *)getMessageByUid:(long long)messageUid;
  738. /**
  739. 搜索消息
  740. @param conversation 会话,如果为空将搜索所有会话
  741. @param keyword 关键词
  742. @param desc order
  743. @param limit limit
  744. @param offset offset
  745. @param withUser 用户ID
  746. @return 命中的消息
  747. */
  748. - (NSArray<WFCCMessage *> *)searchMessage:(WFCCConversation *)conversation
  749. keyword:(NSString *)keyword
  750. order:(BOOL)desc
  751. limit:(int)limit
  752. offset:(int)offset
  753. withUser:(NSString *)withUser;
  754. /**
  755. 搜索消息
  756. @param conversation 会话,如果为空将搜索所有会话
  757. @param keyword 关键词
  758. @param contentTypes 过滤的消息类型
  759. @param desc order
  760. @param offset offset
  761. @param limit limit
  762. @param withUser 用户ID
  763. @return 命中的消息
  764. */
  765. - (NSArray<WFCCMessage *> *)searchMessage:(WFCCConversation *)conversation
  766. keyword:(NSString *)keyword
  767. contentTypes:(NSArray<NSNumber *> *)contentTypes
  768. order:(BOOL)desc
  769. limit:(int)limit
  770. offset:(int)offset
  771. withUser:(NSString *)withUser;
  772. /**
  773. 搜索消息
  774. @param conversation 会话,如果为空将搜索所有会话
  775. @param keyword 关键词
  776. @param contentTypes 过滤的消息类型
  777. @param startTime 消息的开始时间,单位为毫秒,如果不需要开始时间请用0。
  778. @param endTime 消息的结束时间,单位为毫秒,如果不需要结束时间请用0.。
  779. @param desc order
  780. @param offset offset
  781. @param limit limit
  782. @param withUser 用户ID
  783. @return 命中的消息
  784. */
  785. - (NSArray<WFCCMessage *> *)searchMessage:(WFCCConversation *)conversation
  786. keyword:(NSString *)keyword
  787. contentTypes:(NSArray<NSNumber *> *)contentTypes
  788. startTime:(int64_t)startTime
  789. endTime:(int64_t)endTime
  790. order:(BOOL)desc
  791. limit:(int)limit
  792. offset:(int)offset
  793. withUser:(NSString *)withUser;
  794. /**
  795. 搜索提醒消息
  796. @param conversation 会话,如果为空将搜索所有会话
  797. @param keyword 关键词
  798. @param desc order
  799. @param offset offset
  800. @param limit limit
  801. @return 命中的消息
  802. */
  803. - (NSArray<WFCCMessage *> *)searchMentionedMessages:(WFCCConversation *)conversation
  804. keyword:(NSString *)keyword
  805. order:(BOOL)desc
  806. limit:(int)limit
  807. offset:(int)offset;
  808. /**
  809. 获取某类会话信息
  810. @param conversationTypes 会话类型
  811. @param lines 默认传 @[@(0)]
  812. @param contentTypes 消息类型
  813. @param keyword 关键字
  814. @param fromIndex 起始index
  815. @param count 总数
  816. @param withUser 用户ID
  817. @return 消息实体
  818. */
  819. - (NSArray<WFCCMessage *> *)searchMessage:(NSArray<NSNumber *> *)conversationTypes
  820. lines:(NSArray<NSNumber *> *)lines
  821. contentTypes:(NSArray<NSNumber *> *)contentTypes
  822. keyword:(NSString *)keyword
  823. from:(NSUInteger)fromIndex
  824. count:(NSInteger)count
  825. withUser:(NSString *)withUser;
  826. /**
  827. 获取某类会话提醒信息
  828. @param conversationTypes 会话类型
  829. @param lines 默认传 @[@(0)]
  830. @param keyword 关键字
  831. @param desc order
  832. @param offset offset
  833. @param limit limit
  834. @return 消息实体
  835. */
  836. - (NSArray<WFCCMessage *> *)searchMentionedMessage:(NSArray<NSNumber *> *)conversationTypes
  837. lines:(NSArray<NSNumber *> *)lines
  838. keyword:(NSString *)keyword
  839. order:(BOOL)desc
  840. limit:(int)limit
  841. offset:(int)offset;
  842. /**
  843. 发送消息
  844. @param conversation 会话
  845. @param content 消息内容
  846. @param successBlock 成功的回调
  847. @param errorBlock 失败的回调
  848. @return 消息实体
  849. */
  850. - (WFCCMessage *)send:(WFCCConversation *)conversation
  851. content:(WFCCMessageContent *)content
  852. success:(void(^)(long long messageUid, long long timestamp))successBlock
  853. error:(void(^)(int error_code))errorBlock;
  854. /**
  855. 发送媒体消息
  856. @param conversation 会话
  857. @param content 消息内容
  858. @param successBlock 成功的回调
  859. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  860. @param errorBlock 失败的回调
  861. @return 消息实体
  862. */
  863. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  864. content:(WFCCMessageContent *)content
  865. success:(void(^)(long long messageUid, long long timestamp))successBlock
  866. progress:(void(^)(long uploaded, long total))progressBlock
  867. error:(void(^)(int error_code))errorBlock;
  868. /**
  869. 发送消息
  870. @param conversation 会话
  871. @param content 消息内容
  872. @param expireDuration 消息的有效期,0不限期,单位秒
  873. @param successBlock 成功的回调
  874. @param errorBlock 失败的回调
  875. @return 消息实体
  876. */
  877. - (WFCCMessage *)send:(WFCCConversation *)conversation
  878. content:(WFCCMessageContent *)content
  879. expireDuration:(int)expireDuration
  880. success:(void(^)(long long messageUid, long long timestamp))successBlock
  881. error:(void(^)(int error_code))errorBlock;
  882. /**
  883. 发送消息
  884. @param conversation 会话
  885. @param content 消息内容
  886. @param toUsers 在会话中只发给该用户,如果为空则发到会话中
  887. @param expireDuration 消息的有效期,0不限期,单位秒
  888. @param successBlock 成功的回调
  889. @param errorBlock 失败的回调
  890. @return 消息实体
  891. */
  892. - (WFCCMessage *)send:(WFCCConversation *)conversation
  893. content:(WFCCMessageContent *)content
  894. toUsers:(NSArray<NSString *> *)toUsers
  895. expireDuration:(int)expireDuration
  896. success:(void(^)(long long messageUid, long long timestamp))successBlock
  897. error:(void(^)(int error_code))errorBlock;
  898. /**
  899. 发送媒体消息
  900. @param conversation 会话
  901. @param content 消息内容
  902. @param expireDuration 消息的有效期,0不限期,单位秒
  903. @param successBlock 成功的回调
  904. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  905. @param errorBlock 失败的回调
  906. @return 消息实体
  907. */
  908. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  909. content:(WFCCMessageContent *)content
  910. expireDuration:(int)expireDuration
  911. success:(void(^)(long long messageUid, long long timestamp))successBlock
  912. progress:(void(^)(long uploaded, long total))progressBlock
  913. error:(void(^)(int error_code))errorBlock;
  914. /**
  915. 发送媒体消息
  916. @param conversation 会话
  917. @param content 消息内容
  918. @param toUsers 在会话中只发给该用户,如果为空则发到会话中
  919. @param expireDuration 消息的有效期,0不限期,单位秒
  920. @param successBlock 成功的回调
  921. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  922. @param errorBlock 失败的回调
  923. @return 消息实体
  924. */
  925. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  926. content:(WFCCMessageContent *)content
  927. toUsers:(NSArray<NSString *> *)toUsers
  928. expireDuration:(int)expireDuration
  929. success:(void(^)(long long messageUid, long long timestamp))successBlock
  930. progress:(void(^)(long uploaded, long total))progressBlock
  931. error:(void(^)(int error_code))errorBlock;
  932. /**
  933. 发送媒体消息
  934. @param conversation 会话
  935. @param content 消息内容
  936. @param toUsers 在会话中只发给该用户,如果为空则发到会话中
  937. @param expireDuration 消息的有效期,0不限期,单位秒
  938. @param successBlock 成功的回调
  939. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  940. @param mediaUploadedBlock 上传成功的回调
  941. @param errorBlock 失败的回调
  942. @return 消息实体
  943. */
  944. - (WFCCMessage *)sendMedia:(WFCCConversation *)conversation
  945. content:(WFCCMessageContent *)content
  946. toUsers:(NSArray<NSString *> *)toUsers
  947. expireDuration:(int)expireDuration
  948. success:(void(^)(long long messageUid, long long timestamp))successBlock
  949. progress:(void(^)(long uploaded, long total))progressBlock
  950. mediaUploaded:(void(^)(NSString *remoteUrl))mediaUploadedBlock
  951. error:(void(^)(int error_code))errorBlock;
  952. /**
  953. 发送已保存消息,消息状态必须是发送中或者发送失败
  954. @param message 已经存储在本地待发送的消息
  955. @param expireDuration 消息的有效期,0不限期,单位秒
  956. @param successBlock 成功的回调
  957. @param errorBlock 失败的回调
  958. @return 协议栈是否可以发送
  959. */
  960. - (BOOL)sendSavedMessage:(WFCCMessage *)message
  961. expireDuration:(int)expireDuration
  962. success:(void(^)(long long messageUid, long long timestamp))successBlock
  963. error:(void(^)(int error_code))errorBlock;
  964. /**
  965. 取消发送消息,只有发送媒体类消息才可以取消
  966. @param messageId 消息Id
  967. @return 是否取消成功
  968. */
  969. - (BOOL)cancelSendingMessage:(long)messageId;
  970. /**
  971. 撤回消息
  972. @param message 待撤回的消息
  973. @param successBlock 成功的回调
  974. @param errorBlock 失败的回调
  975. @discuss 服务器不检查可撤回时间,应用逻辑来处理。
  976. */
  977. - (void)recall:(WFCCMessage *)message
  978. success:(void(^)(void))successBlock
  979. error:(void(^)(int error_code))errorBlock;
  980. /**
  981. 上传媒体(图片、语音、文件等)数据
  982. @param fileName 文件名,可为空
  983. @param mediaData 媒体信息
  984. @param mediaType 媒体类型
  985. @param successBlock 成功的回调
  986. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  987. @param errorBlock 失败的回调
  988. */
  989. - (void)uploadMedia:(NSString *)fileName
  990. mediaData:(NSData *)mediaData
  991. mediaType:(WFCCMediaType)mediaType
  992. success:(void(^)(NSString *remoteUrl))successBlock
  993. progress:(void(^)(long uploaded, long total))progressBlock
  994. error:(void(^)(int error_code))errorBlock;
  995. /**
  996. 上传媒体(图片、语音、文件等)文件
  997. @param filePath 文件名,可为空
  998. @param mediaType 媒体类型
  999. @param successBlock 成功的回调
  1000. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  1001. @param errorBlock 失败的回调
  1002. */
  1003. - (void)uploadMediaFile:(NSString *)filePath
  1004. mediaType:(WFCCMediaType)mediaType
  1005. success:(void(^)(NSString *remoteUrl))successBlock
  1006. progress:(void(^)(long uploaded, long total))progressBlock
  1007. error:(void(^)(int error_code))errorBlock;
  1008. /**
  1009. 同步上传媒体(图片、语音、文件等),成功或者失败之后才会返回
  1010. @param fileName 文件名,可为空
  1011. @param mediaData 媒体信息
  1012. @param mediaType 媒体类型
  1013. @param successBlock 成功的回调
  1014. @param progressBlock 上传进度的回调,注意仅当媒体内容大于300K才会有回调
  1015. @param errorBlock 失败的回调
  1016. @return 是否上传成功
  1017. */
  1018. - (BOOL)syncUploadMedia:(NSString *)fileName
  1019. mediaData:(NSData *)mediaData
  1020. mediaType:(WFCCMediaType)mediaType
  1021. success:(void(^)(NSString *remoteUrl))successBlock
  1022. progress:(void(^)(long uploaded, long total))progressBlock
  1023. error:(void(^)(int error_code))errorBlock;
  1024. /**
  1025. 获取上传接口,用来上传大文件。只有专业版才支持,使用前先调用isSupportBigFilesUpload检查是否支持
  1026. @param fileName 文件名
  1027. @param mediaType 媒体类型
  1028. @param contentType Http的ContentType header,为空时默认为"application/octet-stream"
  1029. @param successBlock 成功的回调
  1030. @param errorBlock 失败的回调
  1031. */
  1032. - (void)getUploadUrl:(NSString *)fileName
  1033. mediaType:(WFCCMediaType)mediaType
  1034. contentType:(NSString *)contentType
  1035. success:(void(^)(NSString *uploadUrl, NSString *downloadUrl, NSString *backupUploadUrl, int type))successBlock
  1036. error:(void(^)(int error_code))errorBlock;
  1037. /**
  1038. 是否支持大文件上传
  1039. @return YES支持大文件上传,调用getUploadUrl:getUploadUrl:success:error:方法获取到上传url,然后再在应用层上传。
  1040. */
  1041. - (BOOL)isSupportBigFilesUpload;
  1042. /**
  1043. 删除本地消息
  1044. @param messageId 消息ID
  1045. @return 是否删除成功
  1046. */
  1047. - (BOOL)deleteMessage:(long)messageId;
  1048. /**
  1049. 批量删除本地消息
  1050. @param messageUids 消息UID列表
  1051. @return 是否删除成功
  1052. */
  1053. - (BOOL)batchDeleteMessages:(NSArray<NSNumber *> *)messageUids;
  1054. /**
  1055. 删除远端消息,仅专业版支持。
  1056. @param messageUid 消息UID
  1057. @param successBlock 删除成功
  1058. @param errorBlock 删除失败
  1059. */
  1060. - (void)deleteRemoteMessage:(long long)messageUid
  1061. success:(void(^)(void))successBlock
  1062. error:(void(^)(int error_code))errorBlock;
  1063. /**
  1064. 更新远端消息,仅专业版支持。
  1065. @discussion 客户端仅能更新自己发送的消息,更新的消息类型不能变,更新的消息类型是服务配置允许更新的内容。Server API更新则没有限制。
  1066. @param messageUid 消息UID
  1067. @param content 更新消息内容
  1068. @param distribute 是否分发到其他客户端
  1069. @param updateLocal 是否更新本地消息内容
  1070. @param successBlock 删除成功
  1071. @param errorBlock 删除失败
  1072. */
  1073. - (void)updateRemoteMessage:(long long)messageUid
  1074. content:(WFCCMessageContent *)content
  1075. distribute:(BOOL)distribute
  1076. updateLocal:(BOOL)updateLocal
  1077. success:(void(^)(void))successBlock
  1078. error:(void(^)(int error_code))errorBlock;
  1079. /**
  1080. 删除会话中的消息
  1081. @param conversation 会话
  1082. */
  1083. - (void)clearMessages:(WFCCConversation *)conversation;
  1084. /**
  1085. 删除会话中的before之前的旧消息。
  1086. @param conversation 会话,如果conversation为nil,则清除所有会话的消息。
  1087. @param before 时间点,单位是毫秒
  1088. */
  1089. - (void)clearMessages:(WFCCConversation *)conversation before:(int64_t)before;
  1090. /**
  1091. 删除会话中的消息,只保留最近指定条数的消息。
  1092. @param conversation 会话,如果conversation为nil,则清除所有会话的消息。
  1093. @param keepCount 保留的条数
  1094. */
  1095. - (void)clearMessages:(WFCCConversation *)conversation keepLatest:(int)keepCount;
  1096. /**
  1097. 删除指定用户指定时间段的消息
  1098. @param userId 指定用户
  1099. @param start 消息开始时间,如果为0忽略开始时间
  1100. @param end 消息结束时间,如果为0忽略结束时间
  1101. */
  1102. - (void)clearMessages:(NSString *)userId start:(int64_t)start end:(int64_t)end;
  1103. /**
  1104. 删除所有消息。
  1105. @param removeConversation 是否同时删除会话信息
  1106. */
  1107. - (void)clearAllMessages:(BOOL)removeConversation;
  1108. /**
  1109. 注册自定义消息类型
  1110. @param contentClass 自定义消息
  1111. */
  1112. - (void)registerMessageContent:(Class)contentClass;
  1113. /**
  1114. 注册自定义消息flag。此方法仅供给uniapp使用。
  1115. @param contentType 自定义消息类型
  1116. @param contentFlag 自定义消息flag
  1117. */
  1118. - (void)registerMessageFlag:(int)contentType flag:(int)contentFlag;
  1119. /**
  1120. 消息解码
  1121. @param payload 消息Payload
  1122. @return 消息内容
  1123. */
  1124. - (WFCCMessageContent *)messageContentFromPayload:(WFCCMessagePayload *)payload;
  1125. /**
  1126. 插入消息
  1127. @param conversation 会话
  1128. @param content 消息内容
  1129. @param status 消息状态,注意消息状态会影响消息方向
  1130. @param serverTime 时间,0为当前时间
  1131. @return 消息实体
  1132. */
  1133. - (WFCCMessage *)insert:(WFCCConversation *)conversation
  1134. sender:(NSString *)sender
  1135. content:(WFCCMessageContent *)content
  1136. status:(WFCCMessageStatus)status
  1137. notify:(BOOL)notify
  1138. toUsers:(NSArray<NSString *> *)toUsers
  1139. serverTime:(long long)serverTime;
  1140. /**
  1141. 更新消息内容。只更新本地消息内容,无法更新服务器和远端。
  1142. @param messageId 消息ID
  1143. @param content 消息内容
  1144. */
  1145. - (void)updateMessage:(long)messageId
  1146. content:(WFCCMessageContent *)content;
  1147. /**
  1148. 更新消息内容及时间。只更新本地消息内容,无法更新服务器和远端。
  1149. @param messageId 消息ID
  1150. @param content 消息内容
  1151. @param timestamp 消息时间戳
  1152. */
  1153. - (void)updateMessage:(long)messageId
  1154. content:(WFCCMessageContent *)content
  1155. timestamp:(long long)timestamp;
  1156. /**
  1157. 更新消息状态,需要确保状态跟消息的方向相对应。一般情况下协议栈会自动处理好,不建议客户手动操作状态。。只更新本地消息内容,无法更新服务器和远端。
  1158. @param messageId 消息ID
  1159. @param status 消息状态
  1160. @return YES 更新成功。NO 消息不存在,或者状态与消息方向不匹配
  1161. */
  1162. - (BOOL)updateMessage:(long)messageId status:(WFCCMessageStatus)status;
  1163. /**
  1164. 插入消息。只插入到本地,无法更新服务器和远端。
  1165. @param message 待插入的消息
  1166. @return 插入消息的id
  1167. */
  1168. - (long)insertMessage:(WFCCMessage *)message;
  1169. /**
  1170. 获取会话的消息数
  1171. @param conversation 会话。
  1172. @return 会话的消息数。
  1173. */
  1174. - (int)getMessageCount:(WFCCConversation *)conversation;
  1175. /**
  1176. 获取会话消息数量
  1177. @param conversationTypes 会话类型
  1178. @param lines 默认传 @[@(0)]
  1179. @return 会话信息
  1180. */
  1181. - (int)getConversationMessageCount:(NSArray<NSNumber *> *)conversationTypes
  1182. lines:(NSArray<NSNumber *> *)lines;
  1183. #pragma mark - 用户相关
  1184. /**
  1185. 获取用户信息
  1186. @discussion refresh 为true会导致一次网络同步,代价特别大,应该尽量避免使用true,仅当在进入此人的单聊会话中时或者此人的用户信息页面使用一次true。
  1187. @param userId 用户ID
  1188. @param refresh 是否强制从服务器更新,如果本地没有或者强制,会从服务器刷新,然后发出通知kUserInfoUpdated。
  1189. @return 本地的用户信息,可能为空
  1190. */
  1191. - (WFCCUserInfo *)getUserInfo:(NSString *)userId
  1192. refresh:(BOOL)refresh;
  1193. /**
  1194. 获取用户信息
  1195. @discussion 获取用户信息,如果在群中有群昵称也一并返回
  1196. @discussion refresh 为true会导致一次网络同步,代价特别大,应该尽量避免使用true,仅当在进入此人的单聊会话中时或者此人的用户信息页面使用一次true。
  1197. @param userId 用户ID
  1198. @param groupId 群组ID
  1199. @param refresh 是否强制从服务器更新,如果本地没有或者强制,会从服务器刷新,然后发出通知kUserInfoUpdated。
  1200. @return 本地的用户信息,可能为空
  1201. */
  1202. - (WFCCUserInfo *)getUserInfo:(NSString *)userId inGroup:(NSString *)groupId refresh:(BOOL)refresh;
  1203. /**
  1204. 批量获取用户信息
  1205. @param userIds 用户ID列表
  1206. @param groupId 群组ID
  1207. @return 本地的用户信息列表。本地不存在的用户会返回只有id的用户信息,同时会拉取。
  1208. */
  1209. - (NSArray<WFCCUserInfo *> *)getUserInfos:(NSArray<NSString *> *)userIds inGroup:(NSString *)groupId;
  1210. /**
  1211. 搜索用户
  1212. @param keyword 关键词
  1213. @param searchType 搜索类型
  1214. @param page page
  1215. @param successBlock 成功的回调
  1216. @param errorBlock 失败的回调
  1217. */
  1218. - (void)searchUser:(NSString *)keyword
  1219. searchType:(WFCCSearchUserType)searchType
  1220. page:(int)page
  1221. success:(void(^)(NSArray<WFCCUserInfo *> *machedUsers))successBlock
  1222. error:(void(^)(int errorCode))errorBlock;
  1223. /**
  1224. 搜索用户
  1225. @param keyword 关键词
  1226. @param domainId 域ID
  1227. @param searchType 搜索类型
  1228. @param page page
  1229. @param successBlock 成功的回调
  1230. @param errorBlock 失败的回调
  1231. */
  1232. - (void)searchUser:(NSString *)keyword
  1233. domain:(NSString *)domainId
  1234. searchType:(WFCCSearchUserType)searchType
  1235. page:(int)page
  1236. success:(void(^)(NSArray<WFCCUserInfo *> *machedUsers))successBlock
  1237. error:(void(^)(int errorCode))errorBlock;
  1238. /**
  1239. 获取用户信息
  1240. @discussion refresh 为true会导致一次网络同步,代价特别大,应该尽量避免使用true,仅当在进入此人的单聊会话中时或者此人的用户信息页面使用true
  1241. @param userId 用户ID
  1242. @param refresh 是否强制从服务器更新,如果本地没有或者强制,会从服务器刷新,然后发出通知kUserInfoUpdated。
  1243. @param successBlock 成功的回调
  1244. @param errorBlock 失败的回调
  1245. */
  1246. - (void)getUserInfo:(NSString *)userId
  1247. refresh:(BOOL)refresh
  1248. success:(void(^)(WFCCUserInfo *userInfo))successBlock
  1249. error:(void(^)(int errorCode))errorBlock;
  1250. /**
  1251. 获取用户信息
  1252. @discussion refresh 为true会导致一次网络同步,代价特别大,应该尽量避免使用true,仅当在进入此人的单聊会话中时或者此人的用户信息页面使用true
  1253. @param userId 用户ID
  1254. @param groupId 群组ID,可以为nil
  1255. @param refresh 是否强制从服务器更新,如果本地没有或者强制,会从服务器刷新,然后发出通知kUserInfoUpdated。
  1256. @param successBlock 成功的回调
  1257. @param errorBlock 失败的回调
  1258. */
  1259. - (void)getUserInfo:(NSString *)userId
  1260. groupId:(NSString *)groupId
  1261. refresh:(BOOL)refresh
  1262. success:(void(^)(WFCCUserInfo *userInfo))successBlock
  1263. error:(void(^)(int errorCode))errorBlock;
  1264. /**
  1265. 批量获取用户信息
  1266. @discussion 当本地有部分或者全部不存在时,会从服务器加载这些缺失的用户信息。
  1267. @param userIds 用户ID列表
  1268. @param groupId 群组ID,可以为nil
  1269. @param successBlock 成功的回调
  1270. @param errorBlock 失败的回调
  1271. */
  1272. - (void)getUserInfos:(NSArray<NSString *> *)userIds
  1273. groupId:(NSString *)groupId
  1274. success:(void(^)(NSArray<WFCCUserInfo *> *userInfo))successBlock
  1275. error:(void(^)(int errorCode))errorBlock;
  1276. #pragma mark - 好友相关
  1277. /**
  1278. 查询用户和当前用户是否是好友关系
  1279. @param userId 用户ID
  1280. @return 是否是好友
  1281. */
  1282. - (BOOL)isMyFriend:(NSString *)userId;
  1283. /**
  1284. 获取当前用户的好友列表
  1285. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1286. @return 好友列表的用户ID
  1287. */
  1288. - (NSArray<NSString *> *)getMyFriendList:(BOOL)refresh;
  1289. /**
  1290. 获取当前用户的好友列表
  1291. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1292. @return 好友列表
  1293. */
  1294. - (NSArray<WFCCFriend *> *)getFriendList:(BOOL)refresh;
  1295. /**
  1296. 搜索好友
  1297. @param keyword 关键词
  1298. @return 好友用户信息
  1299. */
  1300. - (NSArray<WFCCUserInfo *> *)searchFriends:(NSString *)keyword;
  1301. /**
  1302. 搜索群组
  1303. @param keyword 关键词
  1304. @return 群组搜索结果
  1305. */
  1306. - (NSArray<WFCCGroupSearchInfo *> *)searchGroups:(NSString *)keyword;
  1307. /**
  1308. 获取收到的好友请求
  1309. @return 好友请求
  1310. */
  1311. - (NSArray<WFCCFriendRequest *> *)getIncommingFriendRequest;
  1312. /**
  1313. 获取发出的好友请求
  1314. @return 好友请求
  1315. */
  1316. - (NSArray<WFCCFriendRequest *> *)getOutgoingFriendRequest;
  1317. /**
  1318. 获取所有的好友请求
  1319. @return 好友请求
  1320. */
  1321. - (NSArray<WFCCFriendRequest *> *)getAllFriendRequest;
  1322. /**
  1323. 获取某一条好友请求记录
  1324. @param uerId 对方用户ID
  1325. @param direction 0 发送的好友请求;1 收到的好友请求。
  1326. @return 好友请求
  1327. */
  1328. - (WFCCFriendRequest *)getFriendRequest:(NSString *)uerId direction:(int)direction;
  1329. /**
  1330. 清理好友请求
  1331. @param direction 好友请求的方向,0发送;1收到。
  1332. @param beforeTime 清理时间之前的请求,单位是毫秒。如果清理所有用0
  1333. @return 返回true表示清理成功,返回false表示没有符合条件的请求
  1334. */
  1335. - (BOOL)clearFriendRequest:(int)direction beforeTime:(int64_t)beforeTime;
  1336. /**
  1337. 删除好友请求
  1338. @param direction 好友请求的方向,0发送;1收到。
  1339. @param userId 用户ID
  1340. @return 返回true表示删除成功,返回false表示找到请求
  1341. */
  1342. - (BOOL)deleteFriendRequest:(NSString *)userId direction:(int)direction;
  1343. /**
  1344. 从服务器更新好友请求
  1345. */
  1346. - (void)loadFriendRequestFromRemote;
  1347. /**
  1348. 获取未读的好友请求数
  1349. @return 未读的好友请求数
  1350. */
  1351. - (int)getUnreadFriendRequestStatus;
  1352. /**
  1353. 清除好友请求的未读数
  1354. */
  1355. - (void)clearUnreadFriendRequestStatus;
  1356. /**
  1357. 删除好友
  1358. @param userId 用户ID
  1359. @param successBlock 成功的回调
  1360. @param errorBlock 失败的回调
  1361. */
  1362. - (void)deleteFriend:(NSString *)userId
  1363. success:(void(^)(void))successBlock
  1364. error:(void(^)(int error_code))errorBlock;
  1365. /**
  1366. 发送好友请求
  1367. @param userId 用户ID
  1368. @param reason 请求说明
  1369. @param extra 扩展信息
  1370. @param successBlock 成功的回调
  1371. @param errorBlock 失败的回调
  1372. */
  1373. - (void)sendFriendRequest:(NSString *)userId
  1374. reason:(NSString *)reason
  1375. extra:(NSString *)extra
  1376. success:(void(^)(void))successBlock
  1377. error:(void(^)(int error_code))errorBlock;
  1378. /**
  1379. 处理好友请求
  1380. @param userId 用户ID
  1381. @param accpet 是否接受
  1382. @param extra 附加信息,如果接受,附加信息会添加到好友附加信息中
  1383. @param successBlock 成功的回调
  1384. @param errorBlock 失败的回调
  1385. */
  1386. - (void)handleFriendRequest:(NSString *)userId
  1387. accept:(BOOL)accpet
  1388. extra:(NSString *)extra
  1389. success:(void(^)(void))successBlock
  1390. error:(void(^)(int error_code))errorBlock;
  1391. - (NSString *)getFriendAlias:(NSString *)friendId;
  1392. - (void)setFriend:(NSString *)friendId
  1393. alias:(NSString *)alias
  1394. success:(void(^)(void))successBlock
  1395. error:(void(^)(int error_code))errorBlock;
  1396. - (NSString *)getFriendExtra:(NSString *)friendId;
  1397. /**
  1398. 查询用户是否被加入黑名单
  1399. @param userId 用户ID
  1400. @return 是否被加入黑名单
  1401. */
  1402. - (BOOL)isBlackListed:(NSString *)userId;
  1403. /**
  1404. 获取当前用户的黑名单列表
  1405. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1406. @return 黑名单列表的用户ID
  1407. */
  1408. - (NSArray<NSString *> *)getBlackList:(BOOL)refresh;
  1409. /**
  1410. 设置黑名单
  1411. @param userId 用户ID
  1412. @param isBlackListed YES 加入黑名单; NO 取消黑名单
  1413. @param successBlock 成功的回调
  1414. @param errorBlock 失败的回调
  1415. */
  1416. - (void)setBlackList:(NSString *)userId
  1417. isBlackListed:(BOOL)isBlackListed
  1418. success:(void(^)(void))successBlock
  1419. error:(void(^)(int error_code))errorBlock;
  1420. #pragma mark - 群相关
  1421. /**
  1422. 获取群成员信息
  1423. @discussion refresh 为true会导致一次网络同步,代价特别大,应该尽量避免使用true,仅当在进入此人的群聊会话详情中时使用一次true。
  1424. @param groupId 群ID
  1425. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1426. @return 群成员信息列表
  1427. */
  1428. - (NSArray<WFCCGroupMember *> *)getGroupMembers:(NSString *)groupId
  1429. forceUpdate:(BOOL)refresh;
  1430. /**
  1431. 根据成员类型获取群成员信息
  1432. @param groupId 群ID
  1433. @param memberType 群成员类型
  1434. @return 群成员信息列表
  1435. */
  1436. - (NSArray<WFCCGroupMember *> *)getGroupMembers:(NSString *)groupId
  1437. type:(WFCCGroupMemberType)memberType;
  1438. /**
  1439. 获取指定数目群成员信息
  1440. @param groupId 群ID
  1441. @param count 群成员类型个数
  1442. @return 群成员信息列表
  1443. */
  1444. - (NSArray<WFCCGroupMember *> *)getGroupMembers:(NSString *)groupId
  1445. count:(int)count;
  1446. /**
  1447. 获取群成员信息
  1448. @discussion refresh 为true会导致一次网络同步,代价特别大,应该尽量避免使用true,仅当在进入此人的群聊会话详情中时使用一次true。
  1449. @param groupId 群ID
  1450. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1451. @param successBlock 成功的回调
  1452. @param errorBlock 失败的回调
  1453. */
  1454. - (void)getGroupMembers:(NSString *)groupId
  1455. refresh:(BOOL)refresh
  1456. success:(void(^)(NSString *groupId, NSArray<WFCCGroupMember *> *))successBlock
  1457. error:(void(^)(int errorCode))errorBlock;
  1458. /**
  1459. 获取群信息
  1460. @discussion refresh 为true会导致一次网络同步,代价特别大,应该尽量避免使用true,仅当在进入此人的群聊会话中时使用一次true。
  1461. @param groupId 群ID
  1462. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1463. @return 群信息
  1464. */
  1465. - (WFCCGroupInfo *)getGroupInfo:(NSString *)groupId
  1466. refresh:(BOOL)refresh;
  1467. /**
  1468. 批量获取群信息
  1469. @discussion refresh 为true会导致一次网络同步,代价特别大,应该尽量避免使用true,仅当在进入此人的群聊会话中时使用一次true。
  1470. @param groupIds 群ID列表
  1471. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1472. @return 群信息
  1473. */
  1474. - (NSArray<WFCCGroupInfo *> *)getGroupInfos:(NSArray<NSString *> *)groupIds
  1475. refresh:(BOOL)refresh;
  1476. /**
  1477. 获取群信息
  1478. @discussion refresh 为true会导致一次网络同步,代价特别大,应该尽量避免使用true,仅当在进入此人的群聊会话中时使用一次true。
  1479. @param groupId 群ID
  1480. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1481. @param successBlock 成功的回调
  1482. @param errorBlock 失败的回调
  1483. */
  1484. - (void)getGroupInfo:(NSString *)groupId
  1485. refresh:(BOOL)refresh
  1486. success:(void(^)(WFCCGroupInfo *groupInfo))successBlock
  1487. error:(void(^)(int errorCode))errorBlock;
  1488. /**
  1489. 获取群成员信息
  1490. @param groupId 群ID
  1491. @param memberId 群成员ID
  1492. @return 群成员信息
  1493. */
  1494. - (WFCCGroupMember *)getGroupMember:(NSString *)groupId
  1495. memberId:(NSString *)memberId;
  1496. /**
  1497. 创建群
  1498. @param groupId 群ID
  1499. @param groupName 群名称
  1500. @param groupPortrait 群头像
  1501. @param groupMembers 群成员
  1502. @param notifyLines 默认传 @[@(0)]
  1503. @param notifyContent 通知消息
  1504. @param successBlock 成功的回调
  1505. @param errorBlock 失败的回调
  1506. */
  1507. - (void)createGroup:(NSString *)groupId
  1508. name:(NSString *)groupName
  1509. portrait:(NSString *)groupPortrait
  1510. type:(WFCCGroupType)type
  1511. groupExtra:(NSString *)groupExtra
  1512. members:(NSArray *)groupMembers
  1513. memberExtra:(NSString *)memberExtra
  1514. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1515. notifyContent:(WFCCMessageContent *)notifyContent
  1516. success:(void(^)(NSString *groupId))successBlock
  1517. error:(void(^)(int error_code))errorBlock;
  1518. /**
  1519. 添加群成员
  1520. @param members 成员的用户ID列表
  1521. @param groupId 群ID
  1522. @param notifyLines 默认传 @[@(0)]
  1523. @param notifyContent 通知消息
  1524. @param successBlock 成功的回调
  1525. @param errorBlock 失败的回调
  1526. */
  1527. - (void)addMembers:(NSArray *)members
  1528. toGroup:(NSString *)groupId
  1529. memberExtra:(NSString *)memberExtra
  1530. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1531. notifyContent:(WFCCMessageContent *)notifyContent
  1532. success:(void(^)(void))successBlock
  1533. error:(void(^)(int error_code))errorBlock;
  1534. /**
  1535. 踢出群成员
  1536. @param members 成员的用户ID列表
  1537. @param groupId 群ID
  1538. @param notifyLines 默认传 @[@(0)]
  1539. @param notifyContent 通知消息
  1540. @param successBlock 成功的回调
  1541. @param errorBlock 失败的回调
  1542. */
  1543. - (void)kickoffMembers:(NSArray *)members
  1544. fromGroup:(NSString *)groupId
  1545. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1546. notifyContent:(WFCCMessageContent *)notifyContent
  1547. success:(void(^)(void))successBlock
  1548. error:(void(^)(int error_code))errorBlock;
  1549. /**
  1550. 退群
  1551. @param groupId 群ID
  1552. @param notifyLines 默认传 @[@(0)]
  1553. @param notifyContent 通知消息
  1554. @param successBlock 成功的回调
  1555. @param errorBlock 失败的回调
  1556. */
  1557. - (void)quitGroup:(NSString *)groupId
  1558. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1559. notifyContent:(WFCCMessageContent *)notifyContent
  1560. success:(void(^)(void))successBlock
  1561. error:(void(^)(int error_code))errorBlock;
  1562. /**
  1563. 退群
  1564. @param groupId 群ID
  1565. @param keepMessage 是否保留消息
  1566. @param notifyLines 默认传 @[@(0)]
  1567. @param notifyContent 通知消息
  1568. @param successBlock 成功的回调
  1569. @param errorBlock 失败的回调
  1570. */
  1571. - (void)quitGroup:(NSString *)groupId
  1572. keepMessage:(BOOL)keepMessage
  1573. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1574. notifyContent:(WFCCMessageContent *)notifyContent
  1575. success:(void(^)(void))successBlock
  1576. error:(void(^)(int error_code))errorBlock;
  1577. /**
  1578. 解散群
  1579. @param groupId 群ID
  1580. @param notifyLines 默认传 @[@(0)]
  1581. @param notifyContent 通知消息
  1582. @param successBlock 成功的回调
  1583. @param errorBlock 失败的回调
  1584. */
  1585. - (void)dismissGroup:(NSString *)groupId
  1586. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1587. notifyContent:(WFCCMessageContent *)notifyContent
  1588. success:(void(^)(void))successBlock
  1589. error:(void(^)(int error_code))errorBlock;
  1590. /**
  1591. 修改群信息
  1592. @param groupId 群ID
  1593. @param type 要修改的群属性
  1594. @param newValue 要修改的群属性值
  1595. @param notifyLines 默认传 @[@(0)]
  1596. @param notifyContent 通知消息
  1597. @param successBlock 成功的回调
  1598. @param errorBlock 失败的回调
  1599. */
  1600. - (void)modifyGroupInfo:(NSString *)groupId
  1601. type:(ModifyGroupInfoType)type
  1602. newValue:(NSString *)newValue
  1603. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1604. notifyContent:(WFCCMessageContent *)notifyContent
  1605. success:(void(^)(void))successBlock
  1606. error:(void(^)(int error_code))errorBlock;
  1607. /**
  1608. 修改自己的群昵称
  1609. @param groupId 群ID
  1610. @param newAlias 昵称
  1611. @param notifyLines 默认传 @[@(0)]
  1612. @param notifyContent 通知消息
  1613. @param successBlock 成功的回调
  1614. @param errorBlock 失败的回调
  1615. */
  1616. - (void)modifyGroupAlias:(NSString *)groupId
  1617. alias:(NSString *)newAlias
  1618. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1619. notifyContent:(WFCCMessageContent *)notifyContent
  1620. success:(void(^)(void))successBlock
  1621. error:(void(^)(int error_code))errorBlock;
  1622. /**
  1623. 修改群成员的昵称,群主可以修改所有人,群管理员可以修改普通成员的群昵称
  1624. @param groupId 群ID
  1625. @param newAlias 昵称
  1626. @param notifyLines 默认传 @[@(0)]
  1627. @param notifyContent 通知消息
  1628. @param successBlock 成功的回调
  1629. @param errorBlock 失败的回调
  1630. */
  1631. - (void)modifyGroupMemberAlias:(NSString *)groupId
  1632. memberId:(NSString *)memberId
  1633. alias:(NSString *)newAlias
  1634. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1635. notifyContent:(WFCCMessageContent *)notifyContent
  1636. success:(void(^)(void))successBlock
  1637. error:(void(^)(int error_code))errorBlock;
  1638. /**
  1639. 修改自己的群成员附加信息
  1640. @param groupId 群ID
  1641. @param extra 附加信息
  1642. @param notifyLines 默认传 @[@(0)]
  1643. @param notifyContent 通知消息
  1644. @param successBlock 成功的回调
  1645. @param errorBlock 失败的回调
  1646. */
  1647. - (void)modifyGroupMemberExtra:(NSString *)groupId
  1648. extra:(NSString *)extra
  1649. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1650. notifyContent:(WFCCMessageContent *)notifyContent
  1651. success:(void(^)(void))successBlock
  1652. error:(void(^)(int error_code))errorBlock;
  1653. /**
  1654. 修改群成员的附加信息,群主可以修改所有人,群管理员可以修改普通成员的附加信息
  1655. @param groupId 群ID
  1656. @param extra 附加信息
  1657. @param notifyLines 默认传 @[@(0)]
  1658. @param notifyContent 通知消息
  1659. @param successBlock 成功的回调
  1660. @param errorBlock 失败的回调
  1661. */
  1662. - (void)modifyGroupMemberExtra:(NSString *)groupId
  1663. memberId:(NSString *)memberId
  1664. extra:(NSString *)extra
  1665. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1666. notifyContent:(WFCCMessageContent *)notifyContent
  1667. success:(void(^)(void))successBlock
  1668. error:(void(^)(int error_code))errorBlock;
  1669. /**
  1670. 转移群主
  1671. @param groupId 群ID
  1672. @param newOwner 群主的用户ID
  1673. @param notifyLines 默认传 @[@(0)]
  1674. @param notifyContent 通知消息
  1675. @param successBlock 成功的回调
  1676. @param errorBlock 失败的回调
  1677. */
  1678. - (void)transferGroup:(NSString *)groupId
  1679. to:(NSString *)newOwner
  1680. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1681. notifyContent:(WFCCMessageContent *)notifyContent
  1682. success:(void(^)(void))successBlock
  1683. error:(void(^)(int error_code))errorBlock;
  1684. /**
  1685. 设置群管理
  1686. @param groupId 群ID
  1687. @param isSet 设置或取消
  1688. @param memberIds 成员ID
  1689. @param notifyLines 默认传 @[@(0)]
  1690. @param notifyContent 通知消息
  1691. @param successBlock 成功的回调
  1692. @param errorBlock 失败的回调
  1693. */
  1694. - (void)setGroupManager:(NSString *)groupId
  1695. isSet:(BOOL)isSet
  1696. memberIds:(NSArray<NSString *> *)memberIds
  1697. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1698. notifyContent:(WFCCMessageContent *)notifyContent
  1699. success:(void(^)(void))successBlock
  1700. error:(void(^)(int error_code))errorBlock;
  1701. /**
  1702. 设置群成员禁言,仅专业版支持
  1703. @param groupId 群ID
  1704. @param isSet 设置或取消
  1705. @param memberIds 成员ID
  1706. @param notifyLines 默认传 @[@(0)]
  1707. @param notifyContent 通知消息
  1708. @param successBlock 成功的回调
  1709. @param errorBlock 失败的回调
  1710. */
  1711. - (void)muteGroupMember:(NSString *)groupId
  1712. isSet:(BOOL)isSet
  1713. memberIds:(NSArray<NSString *> *)memberIds
  1714. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1715. notifyContent:(WFCCMessageContent *)notifyContent
  1716. success:(void(^)(void))successBlock
  1717. error:(void(^)(int error_code))errorBlock;
  1718. /**
  1719. 设置群成员允许名单,当设置群全局禁言时,仅群主/群管理/运行名单成员可以发言,仅专业版支持
  1720. @param groupId 群ID
  1721. @param isSet 设置或取消
  1722. @param memberIds 成员ID
  1723. @param notifyLines 默认传 @[@(0)]
  1724. @param notifyContent 通知消息
  1725. @param successBlock 成功的回调
  1726. @param errorBlock 失败的回调
  1727. */
  1728. - (void)allowGroupMember:(NSString *)groupId
  1729. isSet:(BOOL)isSet
  1730. memberIds:(NSArray<NSString *> *)memberIds
  1731. notifyLines:(NSArray<NSNumber *> *)notifyLines
  1732. notifyContent:(WFCCMessageContent *)notifyContent
  1733. success:(void(^)(void))successBlock
  1734. error:(void(^)(int error_code))errorBlock;
  1735. /**
  1736. 获取群备注
  1737. @param groupId 群ID
  1738. @return 群备注
  1739. */
  1740. - (NSString *)getGroupRemark:(NSString *)groupId;
  1741. /**
  1742. 设置群备注
  1743. @param groupId 群ID
  1744. @param remark 群备注
  1745. @param successBlock 成功的回调
  1746. @param errorBlock 失败的回调
  1747. */
  1748. - (void)setGroup:(NSString *)groupId
  1749. remark:(NSString *)remark
  1750. success:(void(^)(void))successBlock
  1751. error:(void(^)(int error_code))errorBlock;
  1752. /**
  1753. 获取当前用户收藏的群组
  1754. @return 当前用户收藏的群组ID
  1755. */
  1756. - (NSArray<NSString *> *)getFavGroups;
  1757. /**
  1758. 是否是当前用户收藏的群组
  1759. @return 是否是当前用户收藏的群组
  1760. */
  1761. - (BOOL)isFavGroup:(NSString *)groupId;
  1762. /**
  1763. 设置群组收藏状态
  1764. @param groupId 群组ID
  1765. @param fav 是否收藏
  1766. @param successBlock 成功的回调
  1767. @param errorBlock 失败的回调
  1768. */
  1769. - (void)setFavGroup:(NSString *)groupId fav:(BOOL)fav success:(void(^)(void))successBlock error:(void(^)(int errorCode))errorBlock;
  1770. #pragma mark - 个人设置相关
  1771. /**
  1772. 获取个人设置
  1773. @param scope 设置项的scope
  1774. @param key 设置项的key
  1775. @return 设置值
  1776. */
  1777. - (NSString *)getUserSetting:(UserSettingScope)scope
  1778. key:(NSString *)key;
  1779. /**
  1780. 获取个人一类设置
  1781. @param scope 设置项的scope
  1782. @return scope对应的所有设置值
  1783. */
  1784. - (NSDictionary<NSString *, NSString *> *)getUserSettings:(UserSettingScope)scope;
  1785. /**
  1786. 设置个人设置项
  1787. @param scope 设置项的scope
  1788. @param key 设置项的key
  1789. @param value 值
  1790. @param successBlock 成功的回调
  1791. @param errorBlock 失败的回调
  1792. */
  1793. - (void)setUserSetting:(UserSettingScope)scope
  1794. key:(NSString *)key
  1795. value:(NSString *)value
  1796. success:(void(^)(void))successBlock
  1797. error:(void(^)(int error_code))errorBlock;
  1798. /**
  1799. 修改个人信息
  1800. @param values 信息
  1801. @param successBlock 成功的回调
  1802. @param errorBlock 失败的回调
  1803. @discuss 性别属性是int类型,修改时需要转为字符串类型
  1804. */
  1805. -(void)modifyMyInfo:(NSDictionary<NSNumber */*ModifyMyInfoType*/, NSString *> *)values
  1806. success:(void(^)(void))successBlock
  1807. error:(void(^)(int error_code))errorBlock;
  1808. /**
  1809. 是否全局静音
  1810. @return YES,当前用户全局静音;NO,没有全局静音
  1811. */
  1812. - (BOOL)isGlobalSilent;
  1813. /**
  1814. 修改全局静音状态
  1815. @param silent 是否静音
  1816. @param successBlock 成功的回调
  1817. @param errorBlock 失败的回调
  1818. */
  1819. - (void)setGlobalSilent:(BOOL)silent
  1820. success:(void(^)(void))successBlock
  1821. error:(void(^)(int error_code))errorBlock;
  1822. /**
  1823. 是否实时音视频通知面打扰。服务器端2021.9.20后支持分别设置通知免打扰和实时音视频免打扰
  1824. @return YES,当前用户音视频不通知;NO,当前用户音视频通知
  1825. */
  1826. - (BOOL)isVoipNotificationSilent;
  1827. /**
  1828. 修改实时音视频通知面打扰。服务器端2021.9.20后支持分别设置通知免打扰和实时音视频免打扰
  1829. @param silent 是否静音
  1830. @param successBlock 成功的回调
  1831. @param errorBlock 失败的回调
  1832. */
  1833. - (void)setVoipNotificationSilent:(BOOL)silent
  1834. success:(void(^)(void))successBlock
  1835. error:(void(^)(int error_code))errorBlock;
  1836. /**
  1837. 是否开启草稿同步
  1838. @return YES,同步;NO,不同步
  1839. */
  1840. - (BOOL)isEnableSyncDraft;
  1841. /**
  1842. 修改是否开启草稿同步
  1843. @param enable 是否同步
  1844. @param successBlock 成功的回调
  1845. @param errorBlock 失败的回调
  1846. */
  1847. - (void)setEnableSyncDraft:(BOOL)enable
  1848. success:(void(^)(void))successBlock
  1849. error:(void(^)(int error_code))errorBlock;
  1850. /**
  1851. 获取免打扰时间
  1852. @param resultBlock 免打扰时间回调,时间为UTC 0点开始的分钟数,需要转换成当地时间。
  1853. @param errorBlock 不存在时调用,error_code为-1
  1854. */
  1855. - (void)getNoDisturbingTimes:(void(^)(int startMins, int endMins))resultBlock
  1856. error:(void(^)(int error_code))errorBlock;
  1857. /**
  1858. 修改免打扰时间
  1859. @param startMins 起始时间,一天中的分钟数,时间为UTC,需要转换成当地时间。
  1860. @param endMins 结束时间,一天中的分钟数。可以小于startMins,如果小于表示隔夜。
  1861. @param successBlock 成功的回调
  1862. @param errorBlock 失败的回调
  1863. */
  1864. - (void)setNoDisturbingTimes:(int)startMins
  1865. endMins:(int)endMins
  1866. success:(void(^)(void))successBlock
  1867. error:(void(^)(int error_code))errorBlock;
  1868. /**
  1869. 取消免打扰时间
  1870. @param successBlock 成功的回调
  1871. @param errorBlock 失败的回调
  1872. */
  1873. - (void)clearNoDisturbingTimes:(void(^)(void))successBlock
  1874. error:(void(^)(int error_code))errorBlock;
  1875. /**
  1876. 当前时间是否是免打扰
  1877. */
  1878. - (BOOL)isNoDisturbing;
  1879. /**
  1880. 是否隐藏推送详情
  1881. @return YES,隐藏推送详情,提示“您收到一条消息”;NO,推送显示消息摘要
  1882. */
  1883. - (BOOL)isHiddenNotificationDetail;
  1884. /**
  1885. 修改全局静音状态
  1886. @param hidden 是否静音
  1887. @param successBlock 成功的回调
  1888. @param errorBlock 失败的回调
  1889. */
  1890. - (void)setHiddenNotificationDetail:(BOOL)hidden
  1891. success:(void(^)(void))successBlock
  1892. error:(void(^)(int error_code))errorBlock;
  1893. /**
  1894. 是否隐藏群组会话中群成员昵称显示
  1895. @return YES,群组会话中不显示群成员昵称;NO,显示
  1896. */
  1897. - (BOOL)isHiddenGroupMemberName:(NSString *)groupId;
  1898. /**
  1899. 修改隐藏群组会话中群成员昵称显示状态
  1900. @param hidden 是否隐藏
  1901. @param successBlock 成功的回调
  1902. @param errorBlock 失败的回调
  1903. */
  1904. - (void)setHiddenGroupMemberName:(BOOL)hidden
  1905. group:(NSString *)groupId
  1906. success:(void(^)(void))successBlock
  1907. error:(void(^)(int error_code))errorBlock;
  1908. /**
  1909. 获取当前用户的所有群组,注意这个方法的代价比较大,不建议高频使用
  1910. @param successBlock 成功的回调
  1911. @param errorBlock 失败的回调
  1912. */
  1913. -(void)getMyGroups:(void(^)(NSArray<NSString *> *groupIds))successBlock
  1914. error:(void(^)(int error_code))errorBlock;
  1915. /**
  1916. 获取某个用户的共同群组,注意这个方法的代价比较大,不建议高频使用
  1917. @param userId 用户ID
  1918. @param successBlock 成功的回调
  1919. @param errorBlock 失败的回调
  1920. */
  1921. - (void)getCommonGroups:(NSString *)userId
  1922. success:(void(^)(NSArray<NSString *> *groupIds))successBlock
  1923. error:(void(^)(int error_code))errorBlock;
  1924. /**
  1925. 当前用户是否启用消息回执功能,仅专业版有效
  1926. @return YES,开启消息回执功能;NO,关闭个人的消息回执功能。
  1927. @disscussion 仅当服务器开启这个功能才有效
  1928. */
  1929. - (BOOL)isUserEnableReceipt;
  1930. /**
  1931. 修改当前用户是否启用消息回执功能,仅专业版有效
  1932. @param enable 是否开启
  1933. @param successBlock 成功的回调
  1934. @param errorBlock 失败的回调
  1935. @disscussion 仅当服务器开启这个功能才有效
  1936. */
  1937. - (void)setUserEnableReceipt:(BOOL)enable
  1938. success:(void(^)(void))successBlock
  1939. error:(void(^)(int error_code))errorBlock;
  1940. /**
  1941. 获取当前用户星标用户
  1942. @return 当前用户星标用户
  1943. */
  1944. - (NSArray<NSString *> *)getFavUsers;
  1945. /**
  1946. 是否是星标用户
  1947. @return 是否是星标用户
  1948. */
  1949. - (BOOL)isFavUser:(NSString *)userId;
  1950. /**
  1951. 设置星标用户
  1952. @param userId 用户ID
  1953. @param fav 是否星标
  1954. @param successBlock 成功的回调
  1955. @param errorBlock 失败的回调
  1956. */
  1957. - (void)setFavUser:(NSString *)userId fav:(BOOL)fav success:(void(^)(void))successBlock error:(void(^)(int errorCode))errorBlock;
  1958. #pragma mark - 聊天室相关
  1959. - (void)joinChatroom:(NSString *)chatroomId
  1960. success:(void(^)(void))successBlock
  1961. error:(void(^)(int error_code))errorBlock;
  1962. - (void)quitChatroom:(NSString *)chatroomId
  1963. success:(void(^)(void))successBlock
  1964. error:(void(^)(int error_code))errorBlock;
  1965. - (void)getChatroomInfo:(NSString *)chatroomId
  1966. upateDt:(long long)updateDt
  1967. success:(void(^)(WFCCChatroomInfo *chatroomInfo))successBlock
  1968. error:(void(^)(int error_code))errorBlock;
  1969. - (void)getChatroomMemberInfo:(NSString *)chatroomId
  1970. maxCount:(int)maxCount
  1971. success:(void(^)(WFCCChatroomMemberInfo *memberInfo))successBlock
  1972. error:(void(^)(int error_code))errorBlock;
  1973. - (NSString *)getJoinedChatroomId;
  1974. #pragma mark - 频道相关
  1975. - (void)createChannel:(NSString *)channelName
  1976. portrait:(NSString *)channelPortrait
  1977. desc:(NSString *)desc
  1978. extra:(NSString *)extra
  1979. success:(void(^)(WFCCChannelInfo *channelInfo))successBlock
  1980. error:(void(^)(int error_code))errorBlock;
  1981. /**
  1982. 获取频道信息
  1983. @param channelId 频道ID
  1984. @param refresh 是否强制从服务器更新,如果不刷新则从本地缓存中读取
  1985. @return 群信息
  1986. */
  1987. - (WFCCChannelInfo *)getChannelInfo:(NSString *)channelId
  1988. refresh:(BOOL)refresh;
  1989. /**
  1990. 修改频道信息
  1991. @param channelId 群ID
  1992. @param type 要修改的群属性
  1993. @param newValue 要修改的群属性值
  1994. @param successBlock 成功的回调
  1995. @param errorBlock 失败的回调
  1996. */
  1997. - (void)modifyChannelInfo:(NSString *)channelId
  1998. type:(ModifyChannelInfoType)type
  1999. newValue:(NSString *)newValue
  2000. success:(void(^)(void))successBlock
  2001. error:(void(^)(int error_code))errorBlock;
  2002. /**
  2003. 搜索频道
  2004. @param keyword 关键词
  2005. @param successBlock 成功的回调
  2006. @param errorBlock 失败的回调
  2007. */
  2008. - (void)searchChannel:(NSString *)keyword success:(void(^)(NSArray<WFCCChannelInfo *> *machedChannels))successBlock error:(void(^)(int errorCode))errorBlock;
  2009. /**
  2010. 是否收听频道
  2011. @param channelId 频道ID
  2012. @return YES,收听;NO,未收听
  2013. */
  2014. - (BOOL)isListenedChannel:(NSString *)channelId;
  2015. /**
  2016. 收听或者取消收听频道
  2017. @param channelId 频道ID
  2018. @param listen 是否收听
  2019. @param successBlock 成功的回调
  2020. @param errorBlock 失败的回调
  2021. */
  2022. - (void)listenChannel:(NSString *)channelId listen:(BOOL)listen success:(void(^)(void))successBlock error:(void(^)(int errorCode))errorBlock;
  2023. /**
  2024. 获取当前用户创建的频道
  2025. @return 当前用户创建的频道ID
  2026. */
  2027. - (NSArray<NSString *> *)getMyChannels;
  2028. /**
  2029. 获取当前用户收听的频道
  2030. @return 当前用户收听的频道ID
  2031. */
  2032. - (NSArray<NSString *> *)getListenedChannels DEPRECATED_MSG_ATTRIBUTE("use getRemoteListenedChannels: instead");
  2033. /**
  2034. 获取当前用户收听的频道
  2035. @param successBlock 成功返回关注的频道id列表
  2036. @param errorBlock 失败
  2037. */
  2038. - (void)getRemoteListenedChannels:(void(^)(NSArray<NSString *> *))successBlock error:(void(^)(int errorCode))errorBlock;
  2039. /**
  2040. 销毁频道
  2041. @param channelId 频道ID
  2042. @param successBlock 成功的回调
  2043. @param errorBlock 失败的回调
  2044. */
  2045. - (void)destoryChannel:(NSString *)channelId
  2046. success:(void(^)(void))successBlock
  2047. error:(void(^)(int error_code))errorBlock;
  2048. #pragma mark - Mesh 接口
  2049. /**
  2050. 获取域信息
  2051. @param domainId 域ID
  2052. @param refresh 是否从服务器刷新
  2053. @return 域信息
  2054. */
  2055. - (WFCCDomainInfo *)getDomainInfo:(NSString *)domainId refresh:(BOOL)refresh;
  2056. /**
  2057. 获取所有的域
  2058. @param successBlock 成功回调
  2059. @param errorBlock 错误回调
  2060. */
  2061. - (void)getRemoteDomains:(void (^)(NSArray<WFCCDomainInfo *> *))successBlock error:(void (^)(int))errorBlock;
  2062. #pragma mark - Secret Chat 接口
  2063. /**
  2064. 发起密聊
  2065. @param userId 对方用户ID
  2066. @param successBlock 成功的回调,回调返回密聊ID
  2067. @param errorBlock 失败的回调
  2068. */
  2069. - (void)createSecretChat:(NSString *)userId
  2070. success:(void(^)(NSString *targetId, int line))successBlock
  2071. error:(void(^)(int error_code))errorBlock;
  2072. /**
  2073. 销毁密聊
  2074. @param targetId 密聊ID
  2075. @param successBlock 成功的回调
  2076. @param errorBlock 失败的回调
  2077. */
  2078. - (void)destroySecretChat:(NSString *)targetId
  2079. success:(void(^)(void))successBlock
  2080. error:(void(^)(int error_code))errorBlock;
  2081. /**
  2082. 获取密聊用户ID
  2083. @param targetId 密聊ID
  2084. @return 密聊对方用户ID
  2085. */
  2086. - (WFCCSecretChatInfo *)getSecretChatInfo:(NSString *)targetId;
  2087. /**
  2088. 解密密聊会话中加密的媒体数据
  2089. @param targetId 密聊会话
  2090. @param encryptData 密聊中的加密过的媒体数据,需要下载下来本地保存。
  2091. @return 解密过的数据,注意只放到内存中,不要保存。
  2092. */
  2093. - (NSData *)decodeSecretChat:(NSString *)targetId mediaData:(NSData *)encryptData;
  2094. /**
  2095. 设置密聊会话阅后即焚时间
  2096. @param targetId 密聊会话
  2097. @param millisecond 时间
  2098. */
  2099. - (void)setSecretChat:(NSString *)targetId burnTime:(int)millisecond;
  2100. /**
  2101. 当前系统是否支持密聊。
  2102. @return t是否支持密聊
  2103. */
  2104. - (BOOL)isEnableSecretChat;
  2105. /**
  2106. 当前用户是否启用密聊
  2107. @return YES,开启密聊功能;NO,关闭密聊功能。
  2108. @disscussion 仅影响密聊的创建,已经创建的密聊不受影响
  2109. */
  2110. - (BOOL)isUserEnableSecretChat;
  2111. /**
  2112. 修改当前用户是否启用密聊功能
  2113. @param enable 是否开启
  2114. @param successBlock 成功的回调
  2115. @param errorBlock 失败的回调
  2116. @disscussion 仅影响密聊的创建,已经创建的密聊不受影响
  2117. */
  2118. - (void)setUserEnableSecretChat:(BOOL)enable
  2119. success:(void(^)(void))successBlock
  2120. error:(void(^)(int error_code))errorBlock;
  2121. /**
  2122. 当前用户是否开启添加好友需要验证,默认为开启
  2123. @return YES,需要验证;NO,不需验证
  2124. */
  2125. - (BOOL)isAddFriendNeedVerify;
  2126. /**
  2127. 修改当前用户是否开启添加好友需要验证功能
  2128. @param enable 是否开启
  2129. @param successBlock 成功的回调
  2130. @param errorBlock 失败的回调
  2131. */
  2132. - (void)setAddFriendNeedVerify:(BOOL)enable
  2133. success:(void(^)(void))successBlock
  2134. error:(void(^)(int error_code))errorBlock;
  2135. #pragma mark - 其它接口
  2136. /**
  2137. 获取PC在线信息
  2138. @return PC端在线状态
  2139. */
  2140. - (NSArray<WFCCPCOnlineInfo *> *)getPCOnlineInfos;
  2141. /**
  2142. 踢掉PC或者Web
  2143. @param pcClientId PC或Web端的clientId
  2144. @param successBlock 成功的回调
  2145. @param errorBlock 失败的回调
  2146. */
  2147. - (void)kickoffPCClient:(NSString *)pcClientId
  2148. success:(void(^)(void))successBlock
  2149. error:(void(^)(int error_code))errorBlock;
  2150. /**
  2151. PC/Web在线时,是否停止通知
  2152. @return 是否停止通知
  2153. */
  2154. - (BOOL)isMuteNotificationWhenPcOnline;
  2155. /**
  2156. 设置PC/Web在线时,手机是否默认静音。缺省值为YES,只有在IM服务配置server.mobile_default_silent_when_pc_online 为false时,才需要调用此函数设置为NO,此时静音状态意义翻转。其它请求千万不要调用此函数,否则会引起状态错乱。
  2157. 设置当PC在线时是否通知的方法是 muteNotificationWhenPcOnline:success:error
  2158. @param defaultSilent 缺省值是否为静音。
  2159. */
  2160. - (void)setDefaultSilentWhenPcOnline:(BOOL)defaultSilent;
  2161. /**
  2162. 设置PC/Web在线时,是否发送通知
  2163. @param isMute 是否通知
  2164. @param successBlock 成功的回调
  2165. @param errorBlock 失败的回调
  2166. */
  2167. - (void)muteNotificationWhenPcOnline:(BOOL)isMute
  2168. success:(void(^)(void))successBlock
  2169. error:(void(^)(int error_code))errorBlock;
  2170. /**
  2171. 获取会话文件。conversation不为空时,获取该会话内的文件记录;当conversation为空时,获取用户收到的所有文件记录。
  2172. @param conversation 会话
  2173. @param fromUser 该用户发送的文件,如果为空返回所有文件
  2174. @param messageUid 起始记录的UID
  2175. @param order 文件列表排序
  2176. @param count count
  2177. @param successBlock 成功的回调
  2178. @param errorBlock 失败的回调
  2179. */
  2180. - (void)getConversationFiles:(WFCCConversation *)conversation
  2181. fromUser:(NSString *)fromUser
  2182. beforeMessageUid:(long long)messageUid
  2183. order:(WFCCFileRecordOrder)order
  2184. count:(int)count
  2185. success:(void(^)(NSArray<WFCCFileRecord *> *files))successBlock
  2186. error:(void(^)(int error_code))errorBlock;
  2187. /**
  2188. 获取当前用户发送的文件。
  2189. @param beforeMessageUid 起始记录的UID
  2190. @param order 文件列表排序
  2191. @param count count
  2192. @param successBlock 成功的回调
  2193. @param errorBlock 失败的回调
  2194. */
  2195. - (void)getMyFiles:(long long)beforeMessageUid
  2196. order:(WFCCFileRecordOrder)order
  2197. count:(int)count
  2198. success:(void(^)(NSArray<WFCCFileRecord *> *files))successBlock
  2199. error:(void(^)(int error_code))errorBlock;
  2200. /**
  2201. 删除文件记录。发送者可以删除,另外如果在群里,群主和管理员也可以删除。
  2202. @param messageUid 起始记录的UID
  2203. @param successBlock 成功的回调
  2204. @param errorBlock 失败的回调
  2205. */
  2206. - (void)deleteFileRecord:(long long)messageUid
  2207. success:(void(^)(void))successBlock
  2208. error:(void(^)(int error_code))errorBlock;
  2209. /**
  2210. 搜索文件。conversation不为空时,搜索该会话内的文件记录;当conversation为空时,搜索用户收到的所有文件记录。
  2211. @param keyword 关键字
  2212. @param conversation 会话
  2213. @param fromUser 该用户发送的文件,如果为空返回所有文件
  2214. @param messageUid 起始记录的UID
  2215. @param order 文件列表排序
  2216. @param count count
  2217. @param successBlock 成功的回调
  2218. @param errorBlock 失败的回调
  2219. */
  2220. - (void)searchFiles:(NSString *)keyword
  2221. conversation:(WFCCConversation *)conversation
  2222. fromUser:(NSString *)fromUser
  2223. beforeMessageUid:(long long)messageUid
  2224. order:(WFCCFileRecordOrder)order
  2225. count:(int)count
  2226. success:(void(^)(NSArray<WFCCFileRecord *> *files))successBlock
  2227. error:(void(^)(int error_code))errorBlock;
  2228. /**
  2229. 搜索当前用户发送的文件。
  2230. @param keyword 关键字
  2231. @param beforeMessageUid 起始记录的UID
  2232. @param order 文件列表排序
  2233. @param count count
  2234. @param successBlock 成功的回调
  2235. @param errorBlock 失败的回调
  2236. */
  2237. - (void)searchMyFiles:(NSString *)keyword
  2238. beforeMessageUid:(long long)beforeMessageUid
  2239. order:(WFCCFileRecordOrder)order
  2240. count:(int)count
  2241. success:(void(^)(NSArray<WFCCFileRecord *> *files))successBlock
  2242. error:(void(^)(int error_code))errorBlock;
  2243. /**
  2244. 获取媒体文件授权访问地址
  2245. @param messageUid 消息Uid
  2246. @param mediaType 媒体类型
  2247. @param mediaPath 媒体Path
  2248. @param successBlock 成功的回调,backupAuthorizedUrl仅当支持双网环境才有意义
  2249. @param errorBlock 失败的回调
  2250. */
  2251. - (void)getAuthorizedMediaUrl:(long long)messageUid
  2252. mediaType:(WFCCMediaType)mediaType
  2253. mediaPath:(NSString *)mediaPath
  2254. success:(void(^)(NSString *authorizedUrl, NSString *backupAuthorizedUrl))successBlock
  2255. error:(void(^)(int error_code))errorBlock;
  2256. /**
  2257. 获取应用的auth code,用于应用的免密登录
  2258. */
  2259. - (void)getAuthCode:(NSString *)applicationId
  2260. type:(int)type
  2261. host:(NSString *)host
  2262. success:(void(^)(NSString *authCode))successBlock
  2263. error:(void(^)(int error_code))errorBlock;
  2264. /**
  2265. config应用
  2266. */
  2267. - (void)configApplication:(NSString *)applicationId
  2268. type:(int)type
  2269. timestamp:(int64_t)timestamp
  2270. nonce:(NSString *)nonce
  2271. signature:(NSString *)signature
  2272. success:(void(^)(void))successBlock
  2273. error:(void(^)(int error_code))errorBlock;
  2274. /**
  2275. amr文件转成wav数据
  2276. @param amrPath amr文件路径
  2277. @return wav数据
  2278. */
  2279. - (NSData *)getWavData:(NSString *)amrPath;
  2280. /**
  2281. 获取图片缩略图参数
  2282. @return 图片缩略图参数
  2283. */
  2284. - (NSString *)imageThumbPara;
  2285. /**
  2286. 开启数据库事务。注意:该方法仅仅在做数据迁移时使用,其它情况不要使用;另外开启成功后一定要注意commit,需要配对使用.
  2287. @return 是否开启成功。
  2288. */
  2289. - (BOOL)beginTransaction;
  2290. /**
  2291. 提交数据库事务。注意:该方法仅仅在做数据迁移时使用,其它情况不要使用;需要跟beginTransaction配对使用
  2292. */
  2293. - (BOOL)commitTransaction;
  2294. /**
  2295. 回滚数据库事务。注意:该方法仅仅在做数据迁移时使用,其它情况不要使用;需要跟beginTransaction配对使用
  2296. */
  2297. - (BOOL)rollbackTransaction;
  2298. /**
  2299. 是否是商业版IM服务。
  2300. */
  2301. - (BOOL)isCommercialServer;
  2302. /**
  2303. 是否支持已阅读报告
  2304. */
  2305. - (BOOL)isReceiptEnabled;
  2306. /**
  2307. 群组是否支持已阅读报告
  2308. */
  2309. - (BOOL)isGroupReceiptEnabled;
  2310. /*
  2311. 是否应用关闭草稿同步功能
  2312. */
  2313. - (BOOL)isGlobalDisableSyncDraft;
  2314. /*
  2315. 是否应用开启了Mesh功能
  2316. */
  2317. - (BOOL)isMeshEnabled;
  2318. /*
  2319. 获取用户的在线状态
  2320. */
  2321. - (WFCCUserOnlineState *)getUserOnlineState:(NSString *)userId;
  2322. - (WFCCUserCustomState *)getMyCustomState;
  2323. - (void)setMyCustomState:(WFCCUserCustomState *)state
  2324. success:(void(^)(void))successBlock
  2325. error:(void(^)(int error_code))errorBlock;
  2326. - (void)watchOnlineState:(WFCCConversationType)conversationType
  2327. targets:(NSArray<NSString *> *)targets
  2328. duration:(int)watchDuration
  2329. success:(void(^)(NSArray<WFCCUserOnlineState *> *states))successBlock
  2330. error:(void(^)(int error_code))errorBlock;
  2331. - (void)unwatchOnlineState:(WFCCConversationType)conversationType
  2332. targets:(NSArray<NSString *> *)targets
  2333. success:(void(^)(void))successBlock
  2334. error:(void(^)(int error_code))errorBlock;
  2335. - (BOOL)isEnableUserOnlineState;
  2336. /*
  2337. 音视频会议相关
  2338. */
  2339. - (void)sendConferenceRequest:(long long)sessionId
  2340. room:(NSString *)roomId
  2341. request:(NSString *)request
  2342. data:(NSString *)data
  2343. success:(void(^)(NSString *authorizedUrl))successBlock
  2344. error:(void(^)(int error_code))errorBlock;
  2345. - (void)sendConferenceRequest:(long long)sessionId
  2346. room:(NSString *)roomId
  2347. request:(NSString *)request
  2348. advanced:(BOOL)advanced
  2349. data:(NSString *)data
  2350. success:(void(^)(NSString *authorizedUrl))successBlock
  2351. error:(void(^)(int error_code))errorBlock;
  2352. - (void)requireLock:(NSString *)lockId
  2353. duration:(NSUInteger)duration
  2354. success:(void(^)(void))successBlock
  2355. error:(void(^)(int error_code))errorBlock;
  2356. - (void)releaseLock:(NSString *)lockId
  2357. success:(void(^)(void))successBlock
  2358. error:(void(^)(int error_code))errorBlock;
  2359. //内部调用,请勿使用
  2360. - (void)putUseOnlineStates:(NSArray<WFCCUserOnlineState *> *)states;
  2361. @end