• 1942阅读
  • 0回复

[经验分享]云信登录 FAQ [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2016-08-08
— 本帖被 云信小鱼 设置为精华(2016-08-09) —
App 自有用户体系与云信 ID 的关系
在使用云信时,推荐开发者先阅读《用户服务端集成》。使用云信时,接入方账号和云信账号是隔离的,云信的账号只用于 IM 功能的鉴权,和应用本身的用户信息没有任何关系。理解这一点非常重要。一般我们推荐用户账号密码和云信登录 IM 使用的 id ,token 是完全不一致的,后者不由终端用户创建,而是应用服务器分配,以保证其安全性。


产品形态与登录推荐姿势
接入云信的产品大致分为两种形态

  • IM 产品,通讯作为其核心模块,典型例子:微信,云信,网络直播相关的 App
  • 非 IM 产品,通讯只是其附带模块,典型例子:各种有私信模块的 App

对于 IM 产品,由于通讯能力是核心能力,如果云信无法登录成功则整个 App 无法正常表现,所以推荐使用如下的流程:


只有应用服务器和云信服务器都登录成功才认为整个登录完成。
而对于非 IM 产品而言,通讯能力是可以在登录应用服务器成功后延迟加载:登录成功拿到服务器下发的云信 ID 和 token 后进行自动登录即可。


手动登录和自动登录
云信中登录分为手动登录和自动登录两种模式,他们的区别主要在于

  • SDK 是否会接管登录失败后的处理
  • 服务器是否会验证当前登录设备的安全性

第一点,SDK 认为手动登录即是终端用户发起登录的流程,那么在登录失败后(如网络情况不佳,密码错误)SDK 会触发相应回调,并停止重连操作,等待用户再次发起登录操作。而自动登录则会在登录失败后仍旧尝试重连,直到登录成功为止(密码错误等情况除外)。
第二点,服务器为了保障当前用户的安全性,在登录时会根据当前登录是否是自动登录进行检查设备唯一性的检查,如果当前登录为自动登录,且当前登录设备不是上一次登录设备,则会自动禁止其登录,以保证安全性。当然你也可以设置自动登录为强制登录,以忽略安全性检查。这种做法比较适合非 IM 产品延迟加载通讯模块的场景:通过服务器下发的正确云信 ID 直接进行自动登录,无需关心任何登录出错的情况,简单方便。

断线重连
一旦登录成功后(或者调用过自动登录),云信 SDK 将接管所有的重连情况:在网络正常的情况下不停重试重连直到正常登录为止,并不需要做额外的登录操作。(聊天室同理)