SealTalk App 流程分析(1)

登录模块流程分析

Step1: Login

确保当前 Login 的 Phone 在 App server 后台已经注册。

接口: http://api.sealtalk.im/user/login

请求方式: post

请求参数: 国家码 region ; 手机号 phone ; 密码 password;

返回数据:
- 结果码 以及 cookie

示例数据:{"id":"t1hWCOGvX","token":"B0DA/kKanJviD5xxUzhwsEFIJad0/86YwGxBwz1417WFQi/Vr2OJay26s5IFDffGZaUYRMAkvN0ikvOcTl7RN9JilKZlosfQ"}

此处需要值得注意的是:
Login 成功后获取到的 cookie 你需要缓存起来,后续接口调用都需要将 cookie 加到请求头当中


Step 2 : Connect RongCloud Sever

Step 1 的 Login 请求接口结果码为 200 时, 会返回 connect 融云服务器所需要的参数 Token , 此时调用融云方法 RongIM.connect(String token) 连接融云。回调接口 ConnectCallback 回返回三个方法:

  • onTokenIncorrect : token 错误 或者 token 失效, 此处强烈建议重新获取 token 做 reConnect 重连逻辑。
  • onSuccess : connect 融云服务端成功后可见 Step 3。
  • onError : connect 失败 errorCode.getValue 可获取错误码, 错误码在融云官网开发指南中 可以找到对应的错误原因

Step 3 : 同步数据(好友,群组等数据)

仅仅 App server Login 和 连接 融云服务器 后就进入 App 的 MainPage 是不合理的。一些 MainPage 所需要的展示的数据建议在 登录时机做预加载。一个良好的数据架构肯定是需要做缓存,此处以数据库缓存做例子。

以同步群组数据为例:
接口: http://api.sealtalk.im/user/groups (请求需要依赖 Cookie)

请求方式: get

请求参数: 无

返回数据: 结果码 以及 当前用户的群组信息

示例数据:
result : [{"role":0,"group":{"id":"pG4lQsHkY","name":"我的群","portraitUri":"","creatorId":"7w0UxC8IB","memberCount":7}},{"role":0,"group":{"id":"lzKDPFE3i","name":"我的"......}]

数据获取下来后解析 Json 数据,将数据存储至 Groups 表。同理同步好友 或者 其他数据也是上面的流程。

1: 此处同步数据是考虑 MainPage 马上需要数据来做 UI 展示。如果你自己的 App 数据不需要马上展示 则数据同步的时机可以自行选择。
2: 个人数据因为数据量比较少 没有必要单独为其建一张表。可以自己做文本存储。此处 Android 是将个人数据存储在 SharedPreferences 当中。

SealTalk 的服务端有提供一个更加便捷的接口:

https://github.com/sealtalk/sealtalk-server
Host/user/sync/:version 点击了解更多同步策略

使用 sync 接口 可以将上述分开同步数据做归并,耗时更短更优化。


至此:

  • LogIn
  • connect
  • 同步数据

全部完成后登录流程逻辑结束, App 进入 MainPage 主界面 。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值