简介
类型 | 概述 |
---|---|
文档说明 | 长连接及APP更新弹框逻辑梳理 |
阅读对象 | 技术 |
作者 | 侯超鑫 |
文档版本 | V1.0 |
发布日期 | 2019年11月25日 |
修订记录
序号 | 版本 | 作者 | 发布日期 | 版本摘要 | 文档状态 | 原文件 |
---|---|---|---|---|---|---|
1 | V1.3 | 侯超鑫 | 20191125 | 新增 | 开发中 |
正文
需求背景
- 梳理目前长连接及APP更新弹框逻辑
- APP更新弹框及必要公益地震预警功能均使用了长连接来获取实时数据
长连接
简单介绍
我们项目中的长连接使用的是第三方的SocketRocket,SocketRocket 是Facebook基于WebSocket的封装的开源框架,在实际的的操作中需要自己加入其它的功能,比如重连机制,心跳机制,数据解析。
主要相关文件
- SocketRocket:实现长连接的第三方库
- BYWebSocketCenter:基于WebSocket的进一步封装,实现长连接的开启,重启,关闭以及数据的发送和接受
- BYWebSocketEngine:实现长连接发送数据的封装及接收到数据的分发
- BYWebSocketRequestModel:长连接合成发送数据的model
- BYSocketUtils:socket自定义工具
流程图
长连接逻辑梳理
相关功能
功能 | 实现方法 |
---|---|
开启连接 | openWebSocket |
关闭连接 | openWebSocket |
重新连接 | reconnect |
发送数据 | sendData |
发送心跳包 | sendPingData |
APP界面更新
主要相关文件
- BYDataCenter:版本更新数据处理类
- BYAppUpdateCheckManager:控制请求失败之后的重复请求
- BYWebSocketService:调用WebSocket收发数据的服务层
流程图
APP版本更新请求逻辑流程图
数据处理
一、返回失败:检查是否需要重复请求APP升级的信息【在长连接中返回失败的信息,这种情况一般不会出现,因为长连接中返回失败的情况下一般收不到返回包】
1、需要:在BYAppUpdateCheckManager中调用checkUpdate方法再次发起长连接请求,若失败则反复请求但最多不超过5次
2、不需要:不再发起长连接请求
二、返回成功:【返回成功有三种情况】
1、强制升级:更新标题,更新内容,更新URL,需要强制升级,有新版本均满足的情况下弹出强制升级弹窗。
2、普通升级:需先判断是否展示过该版本的普通升级的弹框【普通升级弹框的立即升级按钮点击过才算展示过普通升级弹框】
-已展示过:该版本的普通升级的弹框则不再展示。
-未展示过:则更新标题,更新内容,更新URL,不需要强制升级,有新版本均满足的情况下弹出普通升级弹窗。
3、无需升级
展示效果
1、强制更新
强制更新
2、普通更新
普通更新
地震预警
主要相关文件
- BYEarthQuakePreAlertViewController:开启关闭地震预警开关
- BYEarthQuakePreAlertManager:发送长连接数据请求及数据处理
流程图
地震预警逻辑处理
数据处理
地震预警数据处理
展示效果
地震预警展示