Vol.10

 简介 

登录对于 IM 产品来说是比较重要的一个模块,关系着后续功能业务的顺利进行。开发者在集成 NIMSDK 的时候,对登录接口选择,以及登录状态处理不当的时候,会引起一些不必要的问题。本篇文章只介绍手动登录和自动登录的使用,更多内容请参考:

登录管理:

https://doc.yunxin.163.com/messaging/docs/TI1MTU1NDc?platform=android

手动登录:需要某个 IM 账号首次登录的时候调用,具体接口为 AuthService.login。

自动登录:需要在某个 IM 账号手动登录成功之后调用,具体接口为在初始化的时候传入上次登录的 LoginInfo 信息。

 实现方案 

手动登录

IM 手动登录接口的调用需要和 app 通过登录页面进行登录的操作保持一致,其他时候一般不需要调用 IM 的手动登录接口。在登录页面中,IM 登录可以作为整个登录过程的一个环节,常见做法是先做应用自身账号体系的登录,成功后 IM 的 accid 和 token 作为返回结果,再进行 IM 的登录。

流程图

接口使用

使用手动登录接口登录时,登录成功后需要保存 IM 的 accid 和 token 到本地,方便下次应用启动自动登录的时候使用;登录失败则需要清理本地保存的用户信息,防止下次启动走自动登录逻辑。

LoginInfo loginInfo = new LoginInfo(accid,token);
NIMClient.getService(AuthService.class).login(loginInfo).setCallback(new RequestCallback<LoginInfo>() {@Overridepublic void onSuccess(LoginInfo result) {//保存accid、token,用于下次自动登录。//该sp只用于保存当前登录的账号,如有多账号的情况需要业务层自己处理。Preferences.saveUserAccount(result.getAccount());Preferences.saveUserToken(result.getToken());MyApplication.hasLogined = true;// TODO 登录成功}@Overridepublic void onFailed(int code) {//清理登录账号、token缓存,调用login失败后,不允许走自动登录。Preferences.saveUserAccount("");Preferences.saveUserToken("");MyApplication.hasLogined = false;// TODO 登录失败提示}@Overridepublic void onException(Throwable exception) {//清理登录账号、token缓存,调用login失败后,不允许走自动登录。Preferences.saveUserAccount("");Preferences.saveUserToken("");MyApplication.hasLogined = false;// TODO 登录异常提示}
});

自动登录

手动登录接口调用成功后,下次启动应用可以使用自动登录的方式,调用自动登录后即使是登录未完成或者网络无法访问的时候也可以直接访问用户本地 SDK 数据。

流程图

接口使用

对 IM 进行初始化的时候(如 NIMClient.init),传入上次登录的 LoginInfo 对象,即可实现自动登录。其使用限制有:

  • 自动登录只能登录上次登录的账号,不能登录其他账号。

  • 需要某个账号曾经通过手动登录接口登录成功后才可以调用。

  • 无论之前是否有手动登录成功,只要最近一次手动登录接口调用失败,则不可以继续使用手动登录接口。

  • 当收到 KICKOUT、KICK_BY_OTHER_CLIENT、FORBIDDEN、PWD_ERROR、DATA_UPGRADE 这些登录状态的时候,会导致后续自动登录无效,需要用户通过手动登录接口重新登录。

LoginInfo loginInfo = null;
//获取之前登录成功保存的accid、token信息。
String account = Preferences.getUserAccount();
String token = Preferences.getUserToken();
if (!TextUtils.isEmpty(account)&&!TextUtils.isEmpty(token)){//之前已经登录过,可以走自动登录。hasLogined = true;loginInfo = new LoginInfo(account,token);
}
SDKOptions sdkOptions = new SDKOptions();
NIMClient.init(this,loginInfo,sdkOptions);

登录状态处理

IM 的登录状态表示当前登录账号与 IM 服务器实际建立的长连接情况,也可以理解为用户设备和服务端的网络连接状态。在IM初始接口调用之后,可以在应用的主页面注册 IM 的登录状态回调,用于监听当前的登录状态,通过 UI 层提示用户,其他使用场景一般只在手动登录成功后或者自动登录期间才需要处理。

流程图

接口使用

可以通过 observeOnlineStatus 接口注册登录状态回调,该接口在 AuthServiceObserver.class 下,必须在 IM 初始化之后调用。

 Demo 体验 

Demo 源码

需要在主项目的 AndroidManifest.xml 中把 com.netease.nim.appKey 的配置改为您的 appkey:

https://nim-nosdn.netease.im/MTAxMTAwMg==/bmltYV8zMDg0ODY1NDk0OF8xNjY5NjE2Mjk3ODg4Xzc4NjY3NjgwLTU2NmItNGVjNi1hNDQ1LTc0MWFiNThmOGM0Mw==?createTime=1669616297922&download=NIMLogin.zip

关于网易云信

网易云信是集网易 24 年 IM 以及音视频技术打造的融合通信云服务专家,稳定易用的通信与视频 PaaS 平台。

提供融合通信与视频的核心能力与组件,包含 IM 即时通讯、5G 消息平台、一键登录、信令、短信与号码隐私保护等通信服务,音视频通话、直播、点播、互动直播与互动白板等音视频服务视频会议等组件服务。

网易云信服务于网易云音乐、好未来、新东方、科大讯飞、南京银行等各行各业客户,已有 100w+ 企业开发者接入云信服务。

 相关内容推荐 

  • 云信小课堂 | 音视频Web端通话前快速实现网络和设备状态检测能力

  • 融合通信常见问题9月刊 | 云信小课堂

  • 云信小课堂 | IM UIKit 快速集成含 UI 界面的即时通讯应用

云信小课堂 | Android 登录最佳实践相关推荐

  1. 云信小课堂|聊天室内容审核很头疼?3步解决!

    简介 随着 5G . AI 等颠覆性的技术创新,各类产品的互动性和沉浸感都在快速提升.强互动作为产品快速发展的生命力,也带来了一定程度的安全和监管风险,对通信.安全等技术和服务提出了更高要求. 以娱乐 ...

  2. 云信小课堂 | 聊天室内容审核很头疼? 3 步解决!

    Vol. 7 随着 5G . AI 等颠覆性的技术创新,各类产品的互动性和沉浸感都在快速提升.强互动作为产品快速发展的生命力,也带来了一定程度的安全和监管风险,对通信.安全等技术和服务提出了更高要求. ...

  3. 云信小课堂|搭建应用级别在线聊天室,7步就够了!

    Vol. 6 从2000年至今,聊天室一直活跃在人们的各种生活场景中,目前广泛运用于超级小班课.互动大班课.连麦开黑.主播 PK 等场景,还具备文本.表情.点赞.撒花等互动方式,架起沟通桥梁的同时,玩 ...

  4. 云信小课堂|5分钟快速实现iOS端PK连麦场景

    Vol. 4 2021年开年,音频社交风靡互联网,语音社交再成风口,直播连麦开启社交新赛道.在实时通信技术不断革新的现状下,直播平台需要不断探索新的方式以满足用户日益增长的需求,直播连麦就是在此背景下 ...

  5. 云信小课堂|5分钟快速实现安卓端PK连麦场景

    Vol. 3 2021年开年,音频社交风靡互联网,语音社交再成风口,直播连麦开启社交新赛道.在实时通信技术不断革新的现状下,直播平台需要不断探索新的方式以满足用户日益增长的需求,直播连麦就是在此背景下 ...

  6. android 首页接口设计方案,Android开发最佳实践——1.接口设计

    Android开发最佳实践--1.接口设计 一个项目刚开始的时候,最需要确认的就是接口设计了:数据如何传递,使用什么格式什么协议乃至如何保证安全性.如果一个项目的接口设计不合理--比如没有考虑到安全性 ...

  7. 云信小课堂丨简单四步,快速搭建协同办公系统!

    Vol. 8 企业作为社会分工参与的主体,在自身发展以及内部协作中,势必会涉及到各类自有技术和商业信息的互动与交流,而这类信息由于有着高度的保密性和隐私性,所以如微信.QQ 等通用的即时通讯工具很难满 ...

  8. 云信小课堂|如何实现音视频安全检测?

    Vol. 9 泛娱乐类音视频聊天场景中,充斥着各种不可控的风险因素,例如色情.暴恐和涉政信息等.随着国家监管的日趋严格,各平台需要对平台的音视频内容进行管控,自行处理音视频内容审核需要投入大量人力进行 ...

  9. [教程] Android PHP 最佳实践视频教程

    这几个月实在太忙了,一直没有时间关顾博客,不过好在日前花费了不少心血的视频教程<Android+PHP最佳实践>已经在华章教育和China-Pub上线了,在这里给大家简短的推荐一下吧:本系 ...

最新文章

  1. JavaScript学习之一:采用哪种方式定义类或对象?
  2. bzoj5368 [Pkusc2018]真实排名
  3. 论游戏项目中的左与右
  4. php get raw,file_get_contents(“php:// input”)或$ HTTP_RAW_POST
  5. evt参数是干啥用的_塑料凳子上的洞,是干啥用的?
  6. Error response from daemon:###unable to delete ### (must be forced) - image is being used by stopped
  7. Could not reload resource bundles java.lang.NoS...
  8. c:翻转一个长句中的每个单词
  9. ubuntu查看各种版本号
  10. 递归经典案例汉诺塔 python实现_python实现汉诺塔递归算法经典案例
  11. 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript
  12. Max(TM)仓库管理系统v2.0.5.1网络版
  13. HijackThis使用详解
  14. 童星养成系统的文推荐_戏骨、童星、实力派,《隐秘的角落》全员数据图鉴
  15. Win7系统下发生一个文件夹,无法删除,解决记录
  16. 精品微信小程序预约挂号小程序+后台管理系统|前后分离VUE
  17. JAVA商城 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城 直播商城 短视频商城 springcloud商城 spring cloud商城
  18. 简历制作案例分析及制作小技巧总结
  19. React开发简书总结
  20. HTML列表的简单使用以及在我们网页编程中的单位你了解多少??CSS中的字体样式你又了解多少,进来康康!!HTML、CSS(三)

热门文章

  1. matplotlib 画图之坐标轴不等距
  2. 3D角色模型欣赏:绫波丽
  3. 阅读Cross-Network Performance Analysis of Network Coding Aided Cooperative Outband D2D Communications
  4. PCIe SSD之SFF-8639和备受关注的热插拔功能
  5. java richtextbox_C#中richtextbox使用方法详解
  6. java制表位_在两个面板之间设置制表位
  7. 将课程表导入日历,实现电脑手机日程同步
  8. 刷脸支付其大有取扫码支付而代之的架势
  9. 笑傲江湖ol更新服务器正在维护,笑傲江湖ol1月7日维护更新公告 新活动桃谷迷阵玩法详情一览...
  10. 父亲节写给父母:电子通信为什么要转行计算机软件