EMClient.h 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161
  1. /*!
  2. * @header EMClient.h
  3. * @abstract SDK Client
  4. * @author Hyphenate
  5. * @version 3.00
  6. */
  7. #import <Foundation/Foundation.h>
  8. #import "EMClientDelegate.h"
  9. #import "EMMultiDevicesDelegate.h"
  10. #import "EMOptions.h"
  11. #import "EMPushOptions.h"
  12. #import "EMError.h"
  13. #import "IEMChatManager.h"
  14. #import "IEMContactManager.h"
  15. #import "IEMGroupManager.h"
  16. #import "IEMChatroomManager.h"
  17. #import "EMDeviceConfig.h"
  18. /*!
  19. * \~chinese
  20. * 服务检查类型
  21. *
  22. * \~english
  23. * Type of server check
  24. */
  25. typedef enum {
  26. EMServerCheckAccountValidation = 0, /*! \~chinese 账号检查 \~english Valid account */
  27. EMServerCheckGetDNSListFromServer, /*! \~chinese 获取服务列表检查 \~english Check get dns from server */
  28. EMServerCheckGetTokenFromServer, /*! \~chinese 获取token检查 \~english Check get token from server */
  29. EMServerCheckDoLogin, /*! \~chinese 登录检查 \~english Check login mode */
  30. EMServerCheckDoLogout, /*! \~chinese 登出检查 \~english Check logout mode */
  31. } EMServerCheckType;
  32. /*!
  33. * SDK Client
  34. */
  35. @interface EMClient : NSObject
  36. {
  37. EMPushOptions *_pushOptions;
  38. }
  39. /*!
  40. * \~chinese
  41. * SDK版本号
  42. *
  43. * \~english
  44. * SDK version
  45. */
  46. @property (nonatomic, strong, readonly) NSString *version;
  47. /*!
  48. * \~chinese
  49. * 当前登录账号
  50. *
  51. * \~english
  52. * Current logged in user's username
  53. */
  54. @property (nonatomic, strong, readonly) NSString *currentUsername;
  55. /*!
  56. * \~chinese
  57. * SDK属性
  58. *
  59. * \~english
  60. * SDK setting options
  61. */
  62. @property (nonatomic, strong, readonly) EMOptions *options;
  63. /*!
  64. * \~chinese
  65. * 推送设置
  66. *
  67. * \~english
  68. * Apple Push Notification Service setting
  69. */
  70. @property (nonatomic, strong, readonly) EMPushOptions *pushOptions;
  71. /*!
  72. * \~chinese
  73. * 聊天模块
  74. *
  75. * \~english
  76. * Chat Management
  77. */
  78. @property (nonatomic, strong, readonly) id<IEMChatManager> chatManager;
  79. /*!
  80. * \~chinese
  81. * 好友模块
  82. *
  83. * \~english
  84. * Contact Management
  85. */
  86. @property (nonatomic, strong, readonly) id<IEMContactManager> contactManager;
  87. /*!
  88. * \~chinese
  89. * 群组模块
  90. *
  91. * \~english
  92. * Group Management
  93. */
  94. @property (nonatomic, strong, readonly) id<IEMGroupManager> groupManager;
  95. /*!
  96. * \~chinese
  97. * 聊天室模块
  98. *
  99. * \~english
  100. * Chat Room Management
  101. */
  102. @property (nonatomic, strong, readonly) id<IEMChatroomManager> roomManager;
  103. /*!
  104. * \~chinese
  105. * SDK是否自动登录上次登录的账号
  106. *
  107. * \~english
  108. * If SDK will automatically log into with previously logged in session. If the current login failed, then isAutoLogin attribute will be reset to NO, you need to set it back to YES in order to allow automatic login
  109. * 1. password changed
  110. * 2. deactivate, forced logout, etc
  111. */
  112. @property (nonatomic, readonly) BOOL isAutoLogin;
  113. /*!
  114. * \~chinese
  115. * 用户是否已登录
  116. *
  117. * \~english
  118. * If a user logged in
  119. */
  120. @property (nonatomic, readonly) BOOL isLoggedIn;
  121. /*!
  122. * \~chinese
  123. * 是否连上聊天服务器
  124. *
  125. * \~english
  126. * Connection status to Hyphenate IM server
  127. */
  128. @property (nonatomic, readonly) BOOL isConnected;
  129. /*!
  130. * \~chinese
  131. * 当前用户访问环信服务器使用的token
  132. *
  133. * \~english
  134. * Current user hyphenate token
  135. */
  136. @property (nonatomic, readonly) NSString *accessUserToken;
  137. /*!
  138. * \~chinese
  139. * 获取SDK实例
  140. *
  141. * \~english
  142. * Get SDK singleton instance
  143. */
  144. + (instancetype)sharedClient;
  145. #pragma mark - Delegate
  146. /*!
  147. * \~chinese
  148. * 添加回调代理
  149. *
  150. * @param aDelegate 要添加的代理
  151. * @param aQueue 执行代理方法的队列
  152. *
  153. * \~english
  154. * Add delegate
  155. *
  156. * @param aDelegate Delegate
  157. * @param aQueue (optional) The queue of calling delegate methods. Pass in nil to run on main thread.
  158. */
  159. - (void)addDelegate:(id<EMClientDelegate>)aDelegate
  160. delegateQueue:(dispatch_queue_t)aQueue;
  161. /*!
  162. * \~chinese
  163. * 移除回调代理
  164. *
  165. * @param aDelegate 要移除的代理
  166. *
  167. * \~english
  168. * Remove delegate
  169. *
  170. * @param aDelegate Delegate
  171. */
  172. - (void)removeDelegate:(id)aDelegate;
  173. /*!
  174. * \~chinese
  175. * 注册多设备回调代理
  176. *
  177. * @param aDelegate 要添加的代理
  178. * @param aQueue 执行代理方法的队列
  179. *
  180. * \~english
  181. * Add multi-device delegate
  182. *
  183. * @param aDelegate Delegate
  184. * @param aQueue The queue of calling delegate methods
  185. */
  186. - (void)addMultiDevicesDelegate:(id<EMMultiDevicesDelegate>)aDelegate
  187. delegateQueue:(dispatch_queue_t)aQueue;
  188. /*!
  189. * \~chinese
  190. * 移除多设备回调代理
  191. *
  192. * @param aDelegate 要移除的代理
  193. *
  194. * \~english
  195. * Remove multi devices delegate
  196. *
  197. * @param aDelegate Delegate
  198. */
  199. - (void)removeMultiDevicesDelegate:(id<EMMultiDevicesDelegate>)aDelegate;
  200. #pragma mark - Initialize SDK
  201. /*!
  202. * \~chinese
  203. * 初始化sdk
  204. *
  205. * @param aOptions SDK配置项
  206. *
  207. * @result 错误信息
  208. *
  209. * \~english
  210. * Initialize the SDK
  211. *
  212. * @param aOptions SDK setting options
  213. *
  214. * @result Error
  215. */
  216. - (EMError *)initializeSDKWithOptions:(EMOptions *)aOptions;
  217. #pragma mark - Change AppKey
  218. /*!
  219. * \~chinese
  220. * 修改appkey,注意只有在未登录状态才能修改appkey
  221. *
  222. * @param aAppkey appkey
  223. *
  224. * @result 错误信息
  225. *
  226. * \~english
  227. * Change appkey. Can only change appkey when the user is logged out
  228. *
  229. * @param aAppkey appkey
  230. *
  231. * @result Error
  232. */
  233. - (EMError *)changeAppkey:(NSString *)aAppkey;
  234. #pragma mark - User Registeration
  235. /*!
  236. * \~chinese
  237. * 注册用户
  238. *
  239. * 同步方法,会阻塞当前线程. 不推荐使用,建议后台通过REST注册
  240. *
  241. * @param aUsername 用户名
  242. * @param aPassword 密码
  243. *
  244. * @result 错误信息
  245. *
  246. * \~english
  247. * Register a new IM user
  248. *
  249. * To ensure good reliability, registering new IM user via REST API from developer backend is highly recommended
  250. *
  251. * @param aUsername Username
  252. * @param aPassword Password
  253. *
  254. * @result Error
  255. */
  256. - (EMError *)registerWithUsername:(NSString *)aUsername
  257. password:(NSString *)aPassword;
  258. /*!
  259. * \~chinese
  260. * 注册用户
  261. *
  262. * 不推荐使用,建议后台通过REST注册
  263. *
  264. * @param aUsername 用户名
  265. * @param aPassword 密码
  266. * @param aCompletionBlock 完成的回调
  267. *
  268. * \~english
  269. * Register a new IM user
  270. *
  271. * To ensure good reliability, registering new IM user via REST API from developer backend is highly recommended
  272. *
  273. * @param aUsername Username
  274. * @param aPassword Password
  275. * @param aCompletionBlock The callback of completion block
  276. *
  277. */
  278. - (void)registerWithUsername:(NSString *)aUsername
  279. password:(NSString *)aPassword
  280. completion:(void (^)(NSString *aUsername, EMError *aError))aCompletionBlock;
  281. #pragma mark - Login
  282. /*!
  283. * \~chinese
  284. * 从服务器获取token
  285. *
  286. * @param aUsername 用户名
  287. * @param aPassword 密码
  288. * @param aCompletionBlock 完成的回调
  289. *
  290. * \~english
  291. * Get the token from the server
  292. *
  293. * @param aUsername Username
  294. * @param aPassword Password
  295. * @param aCompletionBlock The callback of completion block
  296. *
  297. */
  298. - (void)fetchTokenWithUsername:(NSString *)aUsername
  299. password:(NSString *)aPassword
  300. completion:(void (^)(NSString *aToken, EMError *aError))aCompletionBlock;
  301. /*!
  302. * \~chinese
  303. * 密码登录
  304. *
  305. * 同步方法,会阻塞当前线程
  306. *
  307. * @param aUsername 用户名
  308. * @param aPassword 密码
  309. *
  310. * @result 错误信息
  311. *
  312. * \~english
  313. * Login with password
  314. *
  315. * Synchronization method will block the current thread
  316. *
  317. * @param aUsername Username
  318. * @param aPassword Password
  319. *
  320. * @result Error
  321. */
  322. - (EMError *)loginWithUsername:(NSString *)aUsername
  323. password:(NSString *)aPassword;
  324. /*!
  325. * \~chinese
  326. * 密码登录
  327. *
  328. * @param aUsername 用户名
  329. * @param aPassword 密码
  330. * @param aCompletionBlock 完成的回调
  331. *
  332. * \~english
  333. * Login with password
  334. *
  335. * @param aUsername Username
  336. * @param aPassword Password
  337. * @param aCompletionBlock The callback of completion block
  338. *
  339. */
  340. - (void)loginWithUsername:(NSString *)aUsername
  341. password:(NSString *)aPassword
  342. completion:(void (^)(NSString *aUsername, EMError *aError))aCompletionBlock;
  343. /*!
  344. * \~chinese
  345. * token登录,不支持自动登录
  346. *
  347. * 同步方法,会阻塞当前线程
  348. *
  349. * @param aUsername 用户名
  350. * @param aToken Token
  351. *
  352. * @result 错误信息
  353. *
  354. * \~english
  355. * Login with token. Does not support automatic login
  356. *
  357. * Synchronization method will block the current thread
  358. *
  359. * @param aUsername Username
  360. * @param aToken Token
  361. *
  362. * @result Error
  363. */
  364. - (EMError *)loginWithUsername:(NSString *)aUsername
  365. token:(NSString *)aToken;
  366. /*!
  367. * \~chinese
  368. * token登录,不支持自动登录
  369. *
  370. * @param aUsername 用户名
  371. * @param aToken Token
  372. * @param aCompletionBlock 完成的回调
  373. *
  374. * \~english
  375. * Login with token. Does not support automatic login
  376. *
  377. * @param aUsername Username
  378. * @param aToken Token
  379. * @param aCompletionBlock The callback of completion block
  380. *
  381. */
  382. - (void)loginWithUsername:(NSString *)aUsername
  383. token:(NSString *)aToken
  384. completion:(void (^)(NSString *aUsername, EMError *aError))aCompletionBlock;
  385. #pragma mark - Logout
  386. /*!
  387. * \~chinese
  388. * 退出
  389. *
  390. * 同步方法,会阻塞当前线程
  391. *
  392. * @param aIsUnbindDeviceToken 是否解除device token的绑定,解除绑定后设备不会再收到消息推送
  393. * 如果传入YES, 解除绑定失败,将返回error
  394. *
  395. * @result 错误信息
  396. *
  397. * \~english
  398. * Logout
  399. *
  400. * Synchronization method will block the current thread
  401. *
  402. * @param aIsUnbindDeviceToken Unbind device token to disable Apple Push Notification Service
  403. *
  404. * @result Error
  405. */
  406. - (EMError *)logout:(BOOL)aIsUnbindDeviceToken;
  407. /*!
  408. * \~chinese
  409. * 退出
  410. *
  411. * @param aIsUnbindDeviceToken 是否解除device token的绑定,解除绑定后设备不会再收到消息推送
  412. * 如果传入YES, 解除绑定失败,将返回error
  413. * @param aCompletionBlock 完成的回调
  414. *
  415. * \~english
  416. * Logout
  417. *
  418. * @param aIsUnbindDeviceToken Unbind device token to disable the Apple Push Notification Service
  419. * @param aCompletionBlock The callback of completion block
  420. *
  421. */
  422. - (void)logout:(BOOL)aIsUnbindDeviceToken
  423. completion:(void (^)(EMError *aError))aCompletionBlock;
  424. #pragma mark - APNs
  425. /*!
  426. * \~chinese
  427. * 绑定device token
  428. *
  429. * 同步方法,会阻塞当前线程
  430. *
  431. * @param aDeviceToken 要绑定的token
  432. *
  433. * @result 错误信息
  434. *
  435. * \~english
  436. * Device token binding is required to enable Apple Push Notification Service
  437. *
  438. * Synchronization method will block the current thread
  439. *
  440. * @param aDeviceToken Device token to bind
  441. *
  442. * @result Error
  443. */
  444. - (EMError *)bindDeviceToken:(NSData *)aDeviceToken;
  445. /*!
  446. * \~chinese
  447. * 绑定device token
  448. *
  449. * @param aDeviceToken 要绑定的token
  450. * @param aCompletionBlock 完成的回调
  451. *
  452. * \~english
  453. * Device token binding is required to enable Apple push notification service
  454. *
  455. * @param aDeviceToken Device token to bind
  456. * @param aCompletionBlock The callback block of completion
  457. */
  458. - (void)registerForRemoteNotificationsWithDeviceToken:(NSData *)aDeviceToken
  459. completion:(void (^)(EMError *aError))aCompletionBlock;
  460. /*!
  461. * \~chinese
  462. * 设置推送消息显示的昵称
  463. *
  464. * 同步方法,会阻塞当前线程
  465. *
  466. * @param aNickname 要设置的昵称
  467. *
  468. * @result 错误信息
  469. *
  470. * \~english
  471. * Set display name for Apple Push Notification message
  472. *
  473. * Synchronization method will block the current thread
  474. *
  475. * @param aNickname Display name
  476. *
  477. * @result Error
  478. */
  479. - (EMError *)setApnsNickname:(NSString *)aNickname;
  480. /*!
  481. * \~chinese
  482. * 设置推送的显示名
  483. *
  484. * @param aDisplayName 推送显示名
  485. * @param aCompletionBlock 完成的回调
  486. *
  487. * \~english
  488. * Set display name for the push notification
  489. *
  490. * @param aDisplayName Display name of push
  491. * @param aCompletionBlock The callback block of completion
  492. *
  493. */
  494. - (void)updatePushNotifiationDisplayName:(NSString *)aDisplayName
  495. completion:(void (^)(NSString *aDisplayName, EMError *aError))aCompletionBlock;
  496. /*!
  497. * \~chinese
  498. * 从服务器获取推送属性
  499. *
  500. * 同步方法,会阻塞当前线程
  501. *
  502. * @param pError 错误信息
  503. *
  504. * @result 推送属性
  505. *
  506. * \~english
  507. * Get Apple Push Notification Service options from the server
  508. *
  509. * Synchronization method will block the current thread
  510. *
  511. * @param pError Error
  512. *
  513. * @result Apple Push Notification Service options
  514. */
  515. - (EMPushOptions *)getPushOptionsFromServerWithError:(EMError **)pError;
  516. /*!
  517. * \~chinese
  518. * 从服务器获取推送属性
  519. *
  520. * @param aCompletionBlock 完成的回调
  521. *
  522. * \~english
  523. * Get Apple Push Notification Service options from the server
  524. *
  525. * @param aCompletionBlock The callback of completion block
  526. */
  527. - (void)getPushNotificationOptionsFromServerWithCompletion:(void (^)(EMPushOptions *aOptions, EMError *aError))aCompletionBlock;
  528. /*!
  529. * \~chinese
  530. * 更新推送设置到服务器
  531. *
  532. * 同步方法,会阻塞当前线程
  533. *
  534. * @result 错误信息
  535. *
  536. * \~english
  537. * Update Apple Push Notification Service options to the server
  538. *
  539. * Synchronization method will block the current thread
  540. *
  541. * @result Error
  542. */
  543. - (EMError *)updatePushOptionsToServer;
  544. /*!
  545. * \~chinese
  546. * 更新推送设置到服务器
  547. *
  548. * @param aCompletionBlock 完成的回调
  549. *
  550. * \~english
  551. * Update Apple Push Notification Service options to the server
  552. *
  553. * @param aCompletionBlock The callback block of completion
  554. */
  555. - (void)updatePushNotificationOptionsToServerWithCompletion:(void (^)(EMError *aError))aCompletionBlock;
  556. #pragma mark - Log
  557. /*!
  558. * \~chinese
  559. * 上传日志到服务器
  560. *
  561. * 同步方法,会阻塞当前线程
  562. *
  563. * @result 错误信息
  564. *
  565. * \~english
  566. * Upload debugging log to server
  567. *
  568. * Synchronization method will block the current thread
  569. *
  570. * @result Error
  571. */
  572. - (EMError *)uploadLogToServer;
  573. /*!
  574. * \~chinese
  575. * 上传日志到服务器
  576. *
  577. * @param aCompletionBlock 完成的回调
  578. *
  579. * \~english
  580. * Upload debugging log to server
  581. *
  582. * @param aCompletionBlock The callback of completion block
  583. */
  584. - (void)uploadDebugLogToServerWithCompletion:(void (^)(EMError *aError))aCompletionBlock;
  585. /*!
  586. * \~chinese
  587. * 将日志文件压缩成.gz文件,返回gz文件路径。强烈建议方法完成之后删除该压缩文件
  588. *
  589. * 同步方法,会阻塞当前线程
  590. *
  591. * @param pError 错误信息
  592. *
  593. * @result 文件路径
  594. *
  595. * \~english
  596. * Compress the log file into a .gz file and return the gz file path. Recommend delete the gz file if file is no longer used
  597. *
  598. * Synchronization method will block the current thread
  599. *
  600. * @param pError Error
  601. *
  602. * @result File path
  603. */
  604. - (NSString *)getLogFilesPath:(EMError **)pError;
  605. /*!
  606. * \~chinese
  607. * 将日志文件压缩成.gz文件,返回gz文件路径。强烈建议方法完成之后删除该压缩文件
  608. *
  609. * @param aCompletionBlock 完成的回调
  610. *
  611. * \~english
  612. * Compress the log file into a .gz file and return the gz file path. Recommend delete the gz file if file is no longer used
  613. *
  614. * @param aCompletionBlock The callback of completion block
  615. */
  616. - (void)getLogFilesPathWithCompletion:(void (^)(NSString *aPath, EMError *aError))aCompletionBlock;
  617. #pragma mark - Multi Devices
  618. /*!
  619. * \~chinese
  620. * 从服务器获取所有已经登录的设备信息
  621. *
  622. * 同步方法,会阻塞当前线程
  623. *
  624. * @param aUsername 用户名
  625. * @param aPassword 密码
  626. * @param pError 错误信息
  627. *
  628. * @result 所有已经登录的设备信息<EMDeviceConfig>
  629. *
  630. * \~english
  631. * Get all the device information <EMDeviceConfig> that logged in to the server
  632. *
  633. * Synchronization method will block the current thread
  634. *
  635. * @param aUsername Username
  636. * @param aPassword Password
  637. * @param pError Error
  638. *
  639. * @result Information of logged in device <EMDeviceConfig>
  640. */
  641. - (NSArray *)getLoggedInDevicesFromServerWithUsername:(NSString *)aUsername
  642. password:(NSString *)aPassword
  643. error:(EMError **)pError;
  644. /*!
  645. * \~chinese
  646. * 从服务器获取所有已经登录的设备信息
  647. *
  648. * @param aUsername 用户名
  649. * @param aPassword 密码
  650. * @param aCompletionBlock 完成的回调
  651. *
  652. * \~english
  653. * Get all the device information <EMDeviceConfig> that logged in to the server
  654. *
  655. * @param aUsername Username
  656. * @param aPassword Password
  657. * @param aCompletionBlock The callback block of completion
  658. *
  659. * @result aList Information of logged in device <EMDeviceConfig>
  660. */
  661. - (void)getLoggedInDevicesFromServerWithUsername:(NSString *)aUsername
  662. password:(NSString *)aPassword
  663. completion:(void (^)(NSArray *aList, EMError *aError))aCompletionBlock;
  664. /*!
  665. * \~chinese
  666. * 强制指定的设备退出
  667. *
  668. * 同步方法,会阻塞当前线程
  669. *
  670. * @param aUsername 用户名
  671. * @param aPassword 密码
  672. * @param aDevice 设备信息
  673. *
  674. * @result 错误信息
  675. *
  676. * \~english
  677. * Force logout the specified device
  678. *
  679. * device information can be obtained from getLoggedInDevicesFromServerWithUsername:password:error:
  680. *
  681. * Synchronization method will block the current thread
  682. *
  683. * @param aUsername Username
  684. * @param aPassword Password
  685. * @param aResource device resource
  686. *
  687. * @result Error
  688. */
  689. - (EMError *)kickDeviceWithUsername:(NSString *)aUsername
  690. password:(NSString *)aPassword
  691. resource:(NSString *)aResource;
  692. /*!
  693. * \~chinese
  694. * 强制指定的设备退出
  695. *
  696. * @param aUsername 用户名
  697. * @param aPassword 密码
  698. * @param aDevice 设备信息
  699. * @param aCompletionBlock 完成的回调
  700. *
  701. * \~english
  702. * Force logout the specified device
  703. *
  704. * device information can be obtained from getLoggedInDevicesFromServerWithUsername:password:error:
  705. *
  706. * @param aUsername Username
  707. * @param aPassword Password
  708. * @param aResource device resource
  709. * @param aCompletionBlock The callback block of completion
  710. */
  711. - (void)kickDeviceWithUsername:(NSString *)aUsername
  712. password:(NSString *)aPassword
  713. resource:(NSString *)aResource
  714. completion:(void (^)(EMError *aError))aCompletionBlock;
  715. /*!
  716. * \~chinese
  717. * 强制所有的登录设备退出
  718. *
  719. * 同步方法,会阻塞当前线程
  720. *
  721. * @param aUsername 用户名
  722. * @param aPassword 密码
  723. *
  724. * @result 错误信息
  725. *
  726. * \~english
  727. * Force logout all logged in device for the specified user
  728. *
  729. * Synchronization method will block the current thread
  730. *
  731. * @param aUsername Username
  732. * @param aPassword Password
  733. *
  734. * @result Error
  735. */
  736. - (EMError *)kickAllDevicesWithUsername:(NSString *)aUsername
  737. password:(NSString *)aPassword;
  738. /*!
  739. * \~chinese
  740. * 强制所有的登录设备退出
  741. *
  742. * @param aUsername 用户名
  743. * @param aPassword 密码
  744. * @param aCompletionBlock 完成的回调
  745. *
  746. * \~english
  747. * Force all logged in device to logout.
  748. *
  749. * @param aUsername Username
  750. * @param aPassword Password
  751. * @param aCompletionBlock The callback block of completion
  752. */
  753. - (void)kickAllDevicesWithUsername:(NSString *)aUsername
  754. password:(NSString *)aPassword
  755. completion:(void (^)(EMError *aError))aCompletionBlock;
  756. #pragma mark - iOS
  757. /*!
  758. * \~chinese
  759. * iOS专用,数据迁移到SDK3.0
  760. *
  761. * 同步方法,会阻塞当前线程
  762. *
  763. * 升级到SDK3.0版本需要调用该方法,开发者需要等该方法执行完后再进行数据库相关操作
  764. *
  765. * @result 是否迁移成功
  766. *
  767. * \~english
  768. * Migrate the IM database to the latest SDK version
  769. *
  770. * Synchronization method will block the current thread
  771. *
  772. * @result Return YES for success
  773. */
  774. - (BOOL)migrateDatabaseToLatestSDK;
  775. /*!
  776. * \~chinese
  777. * iOS专用,程序进入后台时,需要调用此方法断开连接
  778. *
  779. * @param aApplication UIApplication
  780. *
  781. * \~english
  782. * Disconnect from server when app enters background
  783. *
  784. * @param aApplication UIApplication
  785. */
  786. - (void)applicationDidEnterBackground:(id)aApplication;
  787. /*!
  788. * \~chinese
  789. * iOS专用,程序进入前台时,需要调用此方法进行重连
  790. *
  791. * @param aApplication UIApplication
  792. *
  793. * \~english
  794. * Reconnect to server when app enters foreground
  795. *
  796. * @param aApplication UIApplication
  797. */
  798. - (void)applicationWillEnterForeground:(id)aApplication;
  799. /*!
  800. * \~chinese
  801. * iOS专用,程序在前台收到APNs时,需要调用此方法
  802. *
  803. * @param application UIApplication
  804. * @param userInfo 推送内容
  805. *
  806. * \~english
  807. * Invoked when receiving APNs in foreground
  808. *
  809. * @param application UIApplication
  810. * @param userInfo Push content
  811. */
  812. - (void)application:(id)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
  813. #pragma mark - Service Check
  814. /*!
  815. * \~chinese
  816. * 服务诊断接口,根据EMServerCheckType枚举的顺序依次诊断当前服务,并回调给开发者
  817. * 如果已经登录,默认使用登录账号
  818. *
  819. * @param aUsername 用户名
  820. * @param aPassword 密码
  821. * @param aCompletionBlock 完成的回调
  822. *
  823. * \~english
  824. * Make a diagnose for service, Diagnosis of current services according to the order of EMServerCheckType enumeration, and callback for the developer
  825. * If you have logged in, use the default login account
  826. *
  827. * @param aUsername username
  828. * @param aPassword password
  829. * @param aCompletionBlock The callback block of completion
  830. */
  831. - (void)serviceCheckWithUsername:(NSString *)aUsername
  832. password:(NSString *)aPassword
  833. completion:(void (^)(EMServerCheckType aType, EMError *aError))aCompletionBlock;
  834. #pragma mark - EM_DEPRECATED_IOS 3.2.3
  835. /*!
  836. * \~chinese
  837. * 添加回调代理
  838. *
  839. * @param aDelegate 要添加的代理
  840. *
  841. * \~english
  842. * Add delegate
  843. *
  844. * @param aDelegate Delegate
  845. */
  846. - (void)addDelegate:(id<EMClientDelegate>)aDelegate EM_DEPRECATED_IOS(3_1_0, 3_2_2, "Use -[IEMCallManager addDelegate:delegateQueue:]");
  847. #pragma mark - EM_DEPRECATED_IOS < 3.2.3
  848. /*!
  849. * \~chinese
  850. * 注册用户
  851. *
  852. * 不推荐使用,建议后台通过REST注册
  853. *
  854. * @param aUsername 用户名
  855. * @param aPassword 密码
  856. * @param aSuccessBlock 成功的回调
  857. * @param aFailureBlock 失败的回调
  858. *
  859. * \~english
  860. * Register a new user
  861. *
  862. * To enhance the reliability, registering new IM user through REST API from backend is highly recommended
  863. *
  864. * @param aUsername Username
  865. * @param aPassword Password
  866. * @param aSuccessBlock The callback block of success
  867. * @param aFailureBlock The callback block of failure
  868. *
  869. */
  870. - (void)asyncRegisterWithUsername:(NSString *)aUsername
  871. password:(NSString *)aPassword
  872. success:(void (^)())aSuccessBlock
  873. failure:(void (^)(EMError *aError))aFailureBlock __deprecated_msg("Use -registerWithUsername:password:completion:");
  874. /*!
  875. * \~chinese
  876. * 登录
  877. *
  878. * @param aUsername 用户名
  879. * @param aPassword 密码
  880. * @param aSuccessBlock 成功的回调
  881. * @param aFailureBlock 失败的回调
  882. *
  883. * \~english
  884. * Login
  885. *
  886. * @param aUsername Username
  887. * @param aPassword Password
  888. * @param aSuccessBlock The callback block of success
  889. * @param aFailureBlock The callback block of failure
  890. *
  891. */
  892. - (void)asyncLoginWithUsername:(NSString *)aUsername
  893. password:(NSString *)aPassword
  894. success:(void (^)())aSuccessBlock
  895. failure:(void (^)(EMError *aError))aFailureBlock __deprecated_msg("Use -loginWithUsername:password:completion");
  896. /*!
  897. * \~chinese
  898. * 退出
  899. *
  900. * @param aIsUnbindDeviceToken 是否解除device token的绑定,解除绑定后设备不会再收到消息推送
  901. * 如果传入YES, 解除绑定失败,将返回error
  902. *
  903. * @result 错误信息
  904. *
  905. * \~english
  906. * Logout
  907. *
  908. * @param aIsUnbindDeviceToken Unbind device token to disable the Apple Push Notification Service
  909. *
  910. * @result Error
  911. */
  912. - (void)asyncLogout:(BOOL)aIsUnbindDeviceToken
  913. success:(void (^)())aSuccessBlock
  914. failure:(void (^)(EMError *aError))aFailureBlock __deprecated_msg("Use -logout:completion:");
  915. /*!
  916. * \~chinese
  917. * 绑定device token
  918. *
  919. * @param aDeviceToken 要绑定的token
  920. * @param aSuccessBlock 成功的回调
  921. * @param aFailureBlock 失败的回调
  922. *
  923. * \~english
  924. * Bind device token
  925. *
  926. * @param aDeviceToken Device token to bind
  927. * @param aSuccessBlock The callback block of success
  928. * @param aFailureBlock The callback block of failure
  929. */
  930. - (void)asyncBindDeviceToken:(NSData *)aDeviceToken
  931. success:(void (^)())aSuccessBlock
  932. failure:(void (^)(EMError *aError))aFailureBlock __deprecated_msg("Use -registerForRemoteNotificationsWithDeviceToken:completion:");
  933. /*!
  934. * \~chinese
  935. * 设置推送消息显示的昵称
  936. *
  937. * @param aNickname 要设置的昵称
  938. * @param aSuccessBlock 成功的回调
  939. * @param aFailureBlock 失败的回调
  940. *
  941. * \~english
  942. * Set display name for push notification
  943. *
  944. * @param aNickname Push Notification display name
  945. * @param aSuccessBlock The callback block of success
  946. * @param aFailureBlock The callback block of failure
  947. *
  948. */
  949. - (void)asyncSetApnsNickname:(NSString *)aNickname
  950. success:(void (^)())aSuccessBlock
  951. failure:(void (^)(EMError *aError))aFailureBlock __deprecated_msg("Use -updatePushNotifiationDisplayName:copletion");
  952. /*!
  953. * \~chinese
  954. * 从服务器获取推送属性
  955. *
  956. * @param aSuccessBlock 成功的回调
  957. * @param aFailureBlock 失败的回调
  958. *
  959. * \~english
  960. * Get apns options from the server
  961. *
  962. * @param aSuccessBlock The callback block of success
  963. * @param aFailureBlock The callback block of failure
  964. */
  965. - (void)asyncGetPushOptionsFromServer:(void (^)(EMPushOptions *aOptions))aSuccessBlock
  966. failure:(void (^)(EMError *aError))aFailureBlock __deprecated_msg("Use -getPushOptionsFromServerWithCompletion:");
  967. /*!
  968. * \~chinese
  969. * 更新推送设置到服务器
  970. *
  971. * @param aSuccessBlock 成功的回调
  972. * @param aFailureBlock 失败的回调
  973. *
  974. * \~english
  975. * Update APNS options to the server
  976. *
  977. * @param aSuccessBlock The callback block of success
  978. * @param aFailureBlock The callback block of failure
  979. *
  980. */
  981. - (void)asyncUpdatePushOptionsToServer:(void (^)())aSuccessBlock
  982. failure:(void (^)(EMError *aError))aFailureBlock __deprecated_msg("Use -updatePushNotificationOptionsToServerWithCompletion:");
  983. /*!
  984. * \~chinese
  985. * 上传日志到服务器
  986. *
  987. * @param aSuccessBlock 成功的回调
  988. * @param aFailureBlock 失败的回调
  989. *
  990. * \~english
  991. * Upload log to server
  992. *
  993. * @param aSuccessBlock The callback block of success
  994. * @param aFailureBlock The callback block of failure
  995. */
  996. - (void)asyncUploadLogToServer:(void (^)())aSuccessBlock
  997. failure:(void (^)(EMError *aError))aFailureBlock __deprecated_msg("Use -uploadDebugLogToServerWithCompletion:");
  998. /*!
  999. * \~chinese
  1000. * iOS专用,数据迁移到SDK3.0
  1001. *
  1002. * 同步方法,会阻塞当前线程
  1003. *
  1004. * 升级到SDK3.0版本需要调用该方法,开发者需要等该方法执行完后再进行数据库相关操作
  1005. *
  1006. * @result 是否迁移成功
  1007. *
  1008. * \~english
  1009. * iOS-specific, data migration to SDK3.0
  1010. *
  1011. * Synchronization method will block the current thread
  1012. *
  1013. * It's needed to call this method when update to SDK3.0, developers need to wait this method complete before DB related operations
  1014. *
  1015. * @result Whether migration successful
  1016. */
  1017. - (BOOL)dataMigrationTo3 __deprecated_msg("Use -migrateDatabaseToLatestSDK");
  1018. /*!
  1019. * \~chinese
  1020. * 强制指定的设备退出
  1021. *
  1022. * 同步方法,会阻塞当前线程
  1023. *
  1024. * @param aDevice 设备信息
  1025. * @param aUsername 用户名
  1026. * @param aPassword 密码
  1027. *
  1028. * @result 错误信息
  1029. *
  1030. * \~english
  1031. * Force logout the specified device
  1032. *
  1033. * device information can be obtained from getLoggedInDevicesFromServerWithUsername:password:error:
  1034. *
  1035. * Synchronization method will block the current thread
  1036. *
  1037. * @param aDevice device information <EMDeviceConfig>
  1038. * @param aUsername Username
  1039. * @param aPassword Password
  1040. *
  1041. * @result Error
  1042. */
  1043. - (EMError *)kickDevice:(EMDeviceConfig *)aDevice
  1044. username:(NSString *)aUsername
  1045. password:(NSString *)aPassword __deprecated_msg("Use - kickDeviceWithUsername:password:resource:");
  1046. /*!
  1047. * \~chinese
  1048. * 强制指定的设备退出
  1049. *
  1050. * @param aDevice 设备信息
  1051. * @param aUsername 用户名
  1052. * @param aPassword 密码
  1053. * @param aCompletionBlock 完成的回调
  1054. *
  1055. * \~english
  1056. * Force logout the specified device
  1057. *
  1058. * device information can be obtained from getLoggedInDevicesFromServerWithUsername:password:error:
  1059. *
  1060. * @param aDevice device information <EMDeviceConfig>
  1061. * @param aUsername Username
  1062. * @param aPassword Password
  1063. * @param aCompletionBlock The callback block of completion
  1064. */
  1065. - (void)kickDevice:(EMDeviceConfig *)aDevice
  1066. username:(NSString *)aUsername
  1067. password:(NSString *)aPassword
  1068. completion:(void (^)(EMError *aError))aCompletionBlock __deprecated_msg("Use - kickDeviceWithUsername:password:resource:completion:");
  1069. @end