神马笔记 版本2.1——软件更新·数据篇
一、目标
梳理软件更新功能涉及到的数据,以保证数据安全性。
二、体验地址
神马笔记最新版本下载:【神马笔记 版本2.1.0——软件更新功能.apk】
三、实现方案
1. 版本信息
- VersionEntry
名称 | 类型 | 说明 | 示例 |
---|---|---|---|
title | string | 软件标题 | 神马笔记 |
name | string | 版本名称 | 2.1 |
developer | string | 开发者名称 | Amoy Inc. |
size | long | 安装包大小,字节数 | 3210782 |
brief | string | 概要介绍,markdown格式 | |
detail | string | 详细介绍,markdown格式 | |
*code | int | 版本号 | 26 |
*checksum | string | 校验码 | |
*source | string | 下载地址 |
需要注意的是,没有*号字段仅用于向用户显示,不会参与业务逻辑。
带*号字段,code
,checksum
,source
这3个字段参与软件更新的业务逻辑。一旦发现3个字段发生变化,将触发重新下载安装包文件。
2. 更新信息
- UpdateEntry
名称 | 类型 | 说明 | 示例 |
---|---|---|---|
downloadId | string | 下载任务ID | |
downloadCode | string | 下载的版本号 | 26 |
downloadChecksum | string | 下载的校验码 | |
daily | string | 检查更新的时间 | 2019-04-08 |
version | VersionEntry | 版本信息 |
UpdateEntry
用于记录软件更新的用户操作数据,以支持整个更新流程。
3. 下载信息
- DownloadEntry
名称 | 类型 | 说明 | 示例 |
---|---|---|---|
id | string | 唯一标识符 | |
source | string | HTTP源地址,远程 | |
destination | string | File目标地址,本地 | |
length | long | 文件大小,将第一次响应的ContentLength作为文件大小。 注意跟VersionEntry#size的含义不同 |
- DownloadTable
名称 | 类型 | 说明 | 示例 |
---|---|---|---|
list | List<DownloadEntry > |
DownloadEntry
和DownloadTable
用于支持文件下载功能。
与UpdateEntry#downloadId
配合,可以查询到下载的源地址及目标地址。
4. 配置信息
- ConfigEntry
名称 | 类型 | 说明 | 示例 |
---|---|---|---|
debug | boolean | 是否开启调试模式 | false |
baseUrl | string | 服务接口的基地址 |
ConfigEntry
为只读数据,用户无关。
是为了调试应用的特定功能而设计,例如:
发布新版本信息时,必须在测试环境下进行测试,保证一切稳定后,才会发布到正式环境中。
通过配置ConfigEntry
,可以在不改动代码的情况下,切换测试与正式环境。
四、组合起来
首先,读取ConfigEntry
应用配置信息,
其次,用户进入软件更新界面时,请求VersionEntry
,
服务返回版本信息后,保存到UpdateEntry
中,
用户下载安装包时,创建DownloadEntry
,并将相关信息保存到UpdateEntry
中。
五、Finally
~自在飞花轻似梦~无边丝雨细如愁~