差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
后一修订版 两侧同时换到之后的修订记录
im:ios:sdk:basic [2019/10/31 08:47]
huanxinfudh [登录]
im:ios:sdk:basic [2020/03/31 08:22]
zhaoliang
行 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>
-    [[EMClient sharedClient] loginWithUsername:​@"​user1" password:​@"​111111"​ completion:​^(NSString *aUsername, EMError *aError) { +    [[EMClient sharedClient] loginWithUsername:​@"​8001" password:​@"​111111"​ completion:​^(NSString *aUsername, EMError *aError) { 
-        if (!aError) { +    if (!aError) { 
-            NSLog(@"​登录成功"​);​ +        NSLog(@"​登录成功"​);​ 
-        } else { +    } else { 
-            NSLog(@"​登录失败的原因---%@",​ aError.errorDescription);​ +        NSLog(@"​登录失败的原因---%@",​ aError.errorDescription);​ 
-        +    
-    }];+}];
 </​code>​ </​code>​
  
 ===== 自动登录 ===== ===== 自动登录 =====
  
-自动登录:即首次登录成功后,不需要再次调用登录方法,下次 APP 启动,SDK ​会自动为您登录。并且如果您自动登录失败也可以读取到之前的话信息。 +自动登录:sdk初始化的根据Options中的isAutoLogin来决定是否执行自动登录如果为YES则sdk直接登录上次登录且未做退出操作的账号如果值为NO,则为未登录任何账号状态。**isAutoLogin默认为YES**
- +
-SDK 中自动登录属性默认是关闭的,需要您在登录成功后设置以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网情况下得到会话列表+
  
 +当出现以下几种情况时,建议调用 SDK 的登出操作。
 +  * 用户的账号从服务器端删除
 <code objc> <code objc>
-EMError ​*error = [[EMClient sharedClient] loginWithUsername:​@"​8001"​ password:​@"​111111"​];​ +/*! 
-if (!error) + *  当前登录账号已经被从服务器端删除时会收到该回调 
-{ + */ 
-   [[EMClient sharedClient].options setIsAutoLogin:​YES];​ +- (void)userAccountDidRemoveFromServer;​
-}+
 </​code>​ </​code>​
- +  ​* 用户的账号被
-自动登录在以下几种情况下会被取消: +
- +
-  * 用户调用了 SDK 的登出动作; +
-  * 用户在别的设备上更改了密码,导致此设备上自动登录失败; +
-  ​* 用户的账号被从服务器端删除; +
-  * 用户从另一个设备登录,把当前设备上登录的用户踢出。 +
- +
-所以,在您调用登录方法前,应该先判断是否设置了自动登录,如果设置了,则不需要您再调。 +
 <code objc> <code objc>
-BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin;​ +/*! 
-if (!isAutoLogin{ + *  服务被禁用 
-    ​EMError ​*error = [[EMClient sharedClient] loginWithUsername:@"​8001"​ password:​@"​111111"​]; + */ 
-}+(void)userDidForbidByServer;​ 
 +</​code>​ 
 +  * 用户的账号从服务器端被强制下线 
 +  * 用户在别的设备上登录,把当前设备上登录的用户踢出 
 +  * 用户在别的设备上更改了密码 
 +<code objc> 
 +/*! 
 + ​* ​ 当前登录账号被强制退出时会收到该回调,有以下原因: 
 + ​* ​   1.密码被修改; 
 +    ​2.登录设备数过多; 
 + ​* ​   3.从服务器端被强制下线; 
 + */ 
 +- (void)userAccountDidForcedToLogout:(EMError *)aError;
 </​code>​ </​code>​
  
行 138: 行 147:
  
 退出登录分两种类型:主动退出登录和被动退出登录。 退出登录分两种类型:主动退出登录和被动退出登录。
 +
 +建议使用异步退出登录方法,防止网络不好的情况下,出现卡UI主线程的情况出现。
  
   * 主动退出登录:调用 SDK 的退出接口;   * 主动退出登录:调用 SDK 的退出接口;
行 145: 行 156:
  
 <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>​