请选择 进入手机版 | 继续访问电脑版
查看: 235|回复: 0

【新手入门指南】登陆

[复制链接]

11

主题

36

帖子

419

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
419
发表于 2018-9-17 11:39:41 | 显示全部楼层 |阅读模式
功能介绍

云信IM消息收发的基础是sdk与云信IM服务器的TCP长连接,这条长连接由SDK负责维护。而建立长连接的基础是完成sdk的登陆。而登出则是销毁这条长连接。

场景介绍

根据上一章的内容,想必大家已经理解了云信账号体系。登陆的三要素为Appkey,accid和token三者要匹配。

开发手册

如果您是第一次接入云信sdk,建议您先参考开发者文档的介绍

demo

详情可以参考《IM修改demo之后登陆》

SDK集成+登录  视频教程!!!
https://bbs.yunxin.163.com/forum.php?mod=viewthread&tid=1923

接口调用流程

目前暂时提供了安卓和iOS的登陆接口调用流程。

Android手动登陆
集成SDK后 ,在主工程的Application的onCreate中执行
  1. NIMClient.init(this, null, options());
复制代码
完成sdk初始化,然后在launchActivity中手动调用
  1. public class LoginActivity extends Activity {
  2.     public void doLogin() {
  3.         LoginInfo info = new LoginInfo(); // config...
  4.         RequestCallback<LoginInfo> callback =
  5.             new RequestCallback<LoginInfo>() {
  6.             // 可以在此保存LoginInfo到本地,下次启动APP做自动登录用
  7.         };
  8.         NIMClient.getService(AuthService.class).login(info)
  9.                 .setCallback(callback);
  10.     }
  11. }
复制代码
其中callback为登陆的回调函数,如果走了onSucces为登陆成功,否则从onFailed中可以获取到具体登陆失败的errorcode。

自动登陆

如果上次登录已经存在用户登录信息,那么在初始化 SDK 时传入 LoginInfo,SDK 后台会自动登录。


  1. // 在初始化SDK的时候,传入 loginInfo(), 其中包含用户信息,用以自动登录
  2. NIMClient.init(this, loginInfo(), options());
复制代码


iOS手动登陆
首先调用sdk初始化的方法,示例:
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  2.     ...
  3.     //推荐在程序启动的时候初始化 NIMSDK   
  4.     NSString *appKey        = @"your app key";
  5.     NIMSDKOption *option    = [NIMSDKOption optionWithAppKey:appKey];
  6.     option.apnsCername      = @"your APNs cer name";
  7.     option.pkCername        = @"your pushkit cer name";
  8.     [[NIMSDK sharedSDK] registerWithOption:option];
  9.     ...
  10. }
复制代码
SDK初始化完成之后,在对应界面调用手动登陆即可实现登陆。
  1. NSString *account = @"your account";
  2. NSString *token   = @"your token";
  3. [[[NIMSDK sharedSDK] loginManager] login:account
  4.                                    token:token
  5.                               completion:^(NSError *error) {}];
复制代码

自动登陆

SDK初始化方法和手动登陆的一致,sdk初始化完成之后,调用autoLogin方法
  1. NIMAutoLoginData *loginData = [[NIMAutoLoginData alloc] init];
  2. loginData.account = account;
  3. loginData.token = token;

  4. [[[NIMSDK sharedSDK] loginManager] autoLogin:loginData];
复制代码
和手动登录不同,自动登录在失败后会自动重试登录,并通过委托通知登录状态。 APP 需要实现如下回调 (手动登录也会收到同样的委托回调)
  1. @protocol NIMLoginManagerDelegate <NSObject>
  2. /**
  3. *  登录回调
  4. *
  5. *  @param step 登录步骤
  6. *  @discussion 这个回调主要用于客户端UI的刷新
  7. */
  8. - (void)onLogin:(NIMLoginStep)step
  9. @end
复制代码


FAQ

Q:登陆失败,走了onFailed(302,408,417)怎么办
标题:关于IM登录失败
标题:自动登录返回417

Q:我怎么判断登陆成功了?怎么判断sdk掉线了?
标题:怎么判断IM SDK登录成功
标题:怎么判断IM处于非登录状态

进阶

常见问题:
标题:关于IM被踢通知
标题:IM SDK多端登录时,怎么实现踢出







回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表