iOS--长连接及APP更新弹框--逻辑梳理

简介

类型 概述
文档说明 长连接及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:发送长连接数据请求及数据处理
流程图
地震预警逻辑处理
数据处理
地震预警数据处理
展示效果
地震预警展示

你可能感兴趣的:(iOS--长连接及APP更新弹框--逻辑梳理)