差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:ios:sdk:basic [2019/04/16 10:05]
jk [被动退出登录]
im:ios:sdk:basic [2020/01/15 11:16] (当前版本)
huanxinfudh [自动登录]
行 50: 行 50:
  
 注册模式分两种,开放注册和授权注册。 注册模式分两种,开放注册和授权注册。
 +
 +建议使用异步注册方法,防止网络不好的情况下,出现卡UI主线程的情况出现。
  
   * 只有开放注册时,才可以客户端注册。开放注册是为了测试使用,正式环境中不推荐使用该方式注册环信账号。   * 只有开放注册时,才可以客户端注册。开放注册是为了测试使用,正式环境中不推荐使用该方式注册环信账号。
行 55: 行 57:
  
 <code objc> <code objc>
-EMError *error = [[EMClient sharedClient] registerWithUsername:​@"​8001"​ password:​@"​111111"​]; +    ​[[EMClient sharedClient] registerWithUsername:​@"​8001"​ password:​@"​111111" ​completion:​^(NSString *aUsername, EMError *aError) { 
-if (error==nil) { +    if (!aError) { 
-    NSLog(@"​注册成功"​);​ +        NSLog(@"​注册成功"​);​ 
-}+    else { 
 +        NSLog(@"​注册失败的原因---%@",​ aError.errorDescription);​ 
 +    } 
 +}];
 </​code>​ </​code>​
  
行 64: 行 69:
  
 登录:调用 SDK 的登录接口进行的操作。 登录:调用 SDK 的登录接口进行的操作。
 +
 +建议使用异步登录方法,防止网络不好的情况下,出现卡UI主线程的情况出现。
  
 <code objc> <code objc>
-EMError *error = [[EMClient sharedClient] loginWithUsername:​@"​8001"​ password:​@"​111111"​]; +    ​[[EMClient sharedClient] loginWithUsername:​@"​8001"​ password:​@"​111111" ​completion:​^(NSString *aUsername, EMError *aError) { 
-if (!error) { +    if (!aError) { 
-    NSLog(@"​登录成功"​);​ +        NSLog(@"​登录成功"​);​ 
-}+    else { 
 +        NSLog(@"​登录失败的原因---%@",​ aError.errorDescription);​ 
 +    } 
 +}];
 </​code>​ </​code>​
  
行 79: 行 89:
  
 <code objc> <code objc>
-EMError *error = [[EMClient sharedClient] loginWithUsername:​@"​8001"​ password:​@"​111111"​]; +[[EMClient sharedClient] loginWithUsername:​@"​8001"​ password:​@"​111111" ​completion:​^(NSString *aUsername, EMError *aError) { 
-if (!error) +    if (!aError) { 
-+        [[EMClient sharedClient].options setIsAutoLogin:​YES];​ 
-   ​[[EMClient sharedClient].options setIsAutoLogin:​YES];​ +    } 
-}+}];
 </​code>​ </​code>​
  
-自动登录在以下几种情况下取消+用户调用了 SDK 的登出操作,自动登录会取消
  
-  * 用户调用了 SDK 的登出 +当出现以下几种情况时,建议调用 SDK 的登出 
-  * 用户在别设备上更改了密码,导致此设备上自动登录失败; +  * 用户的账号从服务器端删除 
-  * 用户的账号被从服务器端删除; +<code objc> 
-  * 用户从另一个设备登录,把当前设备上登录的用户踢出+/*! 
 + ​* ​ 当前登录账号已经被从服务器端删除时会收到该回调 
 + */ 
 +- (void)userAccountDidRemoveFromServer;​ 
 +</​code>​ 
 +  * 用户的账号被禁用 
 +<code objc> 
 +/*! 
 + ​* ​ 服务被禁用 
 + */ 
 +- (void)userDidForbidByServer;​ 
 +</​code>​ 
 +  * 用户的账号从服务器端被强制下线 
 +  * 用户在别的设备登录,把当前设备上登录的用户踢出 
 +  * 用户在别的设备上更改了密码 
 +<code objc> 
 +/*! 
 + ​* ​ 当前登录账号被强制退出时会收到该回调,有以下原因: 
 + ​* ​   1.密码被修改; 
 + ​* ​   2.登录设备数过多; 
 + ​* ​   3.从服务器端被强制下线; 
 + */ 
 +- (void)userAccountDidForcedToLogout:​(EMError *)aError; 
 +</​code>​
  
 所以,在您调用登录方法前,应该先判断是否设置了自动登录,如果设置了,则不需要您再调用。 所以,在您调用登录方法前,应该先判断是否设置了自动登录,如果设置了,则不需要您再调用。
行 98: 行 131:
 BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin;​ BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin;​
 if (!isAutoLogin) { if (!isAutoLogin) {
-    ​EMError *error = [[EMClient sharedClient] loginWithUsername:​@"​8001"​ password:​@"​111111"​];​+    [[EMClient sharedClient] loginWithUsername:​@"​8001"​ password:​@"​111111" ​completion:​^(NSString *aUsername, EMError *aError) { 
 +        if (!aError) { 
 +            NSLog(@"​登录成功"​);​ 
 +        } 
 +    }];
 } }
 </​code>​ </​code>​
行 135: 行 172:
  
 退出登录分两种类型:主动退出登录和被动退出登录。 退出登录分两种类型:主动退出登录和被动退出登录。
 +
 +建议使用异步退出登录方法,防止网络不好的情况下,出现卡UI主线程的情况出现。
  
   * 主动退出登录:调用 SDK 的退出接口;   * 主动退出登录:调用 SDK 的退出接口;
行 142: 行 181:
  
 <code objc> <code objc>
-EMError *error = [[EMClient sharedClient] logout:YES]; +[[EMClient sharedClient] logout:​YES ​completion:​^(EMError *aError) { 
-if (!error) { +    if (!aError) { 
-     ​NSLog(@"​退出成功"​);​ +        NSLog(@"​退出登录成功"​);​ 
-}+    else { 
 +        NSLog(@"​退出登录失败的原因---%@",​ aError.errorDescription);​ 
 +    } 
 +}];
 </​code>​ </​code>​