登录

用户体系集成和登录模型简介

登录集成必读

客户端代理

SDK目前支持配置代理,支持Socket4/5,暂不支持Http代理,音视频模块只支持Socket5代理。

API介绍

参数说明

参数 类型 必须 说明
type enum 代理类型,见NIMProxyType定义,
其中音视频和白板暂时只支持kNIMProxySocks5代理
host string 代理地址
port int 代理端口
user string 代理用户名
password string 代理密码

示例

手动登录

SDK 登录后会同步群信息,离线消息,漫游消息,系统通知等数据,所以首次登录前需要 提前注册好全局广播类通知的回调 (具体说明请查看前章接口介绍或参阅API 文档)。

API介绍

参数说明

参数 类型 必须 说明
app_key/appKey string 注册的云信APP KEY
account string 账号
password/token string 密码
cb/handler function 登录流程的回调函数
json_extension(C/C++) string json扩展参数(备用,目前不需要)
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理

示例

自动登录

SDK 在网络连接断开后,会监听网络状况,开发者可以通过注册连接断开广播通知,在通知的回调函数中开发者只要根据需要打印log或通知用户即可。

如果网络状况好转,那么SDK 会自动进行重新登录,登录结果可以在注册的重新登录回调函数中处理。

注意 自动重新登录的机制可能会在以下场景中失效:

如果重新登录回调函数返回的的错误号既不是kNIMResSuccess,也不是网络错误相关错误号(kNIMResTimeoutError或者kNIMResConnectionError),那么说明自动重新登录的机制已经失效,需要开发者退回到登录界面进行手动重新登录。(详见nim_client_reg_auto_relogin_cb接口说明)

SDK 在重新登录失效后,可以由用户手动调用重新登录接口。

登出

执行接口nim_client_logout 进行登出或退出,登出或退出的过程因为涉及到和服务器的交互以及需要将缓存中的数据持久化到本地,因此根据实际情况回调通知会有1s到20s左右的延迟。清理SDK必须在完全退出(收到退出回调)后执行。

Trick:因为退出和其他接口一样,总是在某些情况下会出现未及时返回需要上层界面等待的情况(比如网络原因导致服务器返回慢甚至超时,缓存数据大持久化到本地慢等原因),因此开发者可以通过暂时隐藏UI,让进程等待退出完成的回调后再执行清理SDK,退出程序的工作。

API介绍

参数说明

参数 类型 必须 说明
logout_type/logoutType enum Logout类型,见NIMLogoutType
cb/delegate function 注销/退出的回调函数
json_extension(C/C++) string json扩展参数(备用,目前不需要)
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理

示例

多端登录和互踢

通过提前注册全局的多端登录广播通知,当用户在某个客户端登录时,其他没有被踢掉的端会触发这个通知的回调函数,并携带当前时间登录的设备列表的数据。

通过提前注册全局的被踢出广播通知,当收到此通知时,一般是退出程序然后回到登录窗口,回调函数参数中详细说明了被踢出的原因。

网易云通信内置踢人策略为:移动端(Android,iOS)互踢,桌面端(PC,Web)互踢,移动端和桌面端共存。

如果当前的互踢策略无法满足业务需求的话,可以联系销售或技术支持取消内置互踢,根据多端登录的回调和当前的设备列表,判断本设备是否需要被踢出。如果需要被踢出,直接调用登出接口并在界面上给出相关提示即可;同样的也可以根据需要踢出在其他端登陆的账号。

API介绍

示例