神马笔记 版本2.1——软件更新·设计篇

一、目标

设计软件更新功能,方便用户第一时间升级神马笔记到最新版本。

神马笔记 版本2.1——软件更新·设计篇

二、体验地址

神马笔记最新版本下载:【神马笔记 版本2.1.0——软件更新功能.apk

三、功能设计

软件更新功能分为2个部分

  1. 核心功能
  2. 辅助功能
软件更新 功能 Summary
核心功能 软件更新界面 包括版本介绍,操作按钮以及设置自动下载3个部分
版本介绍 1. 基本信息(图标,名称及版本名,开发者名称,安装包大小),
2. 概要介绍,
3. 详细介绍(点击"了解更多"按钮查看详细介绍)
操作按钮 操作按钮包含3个状态
1. 下载并安装
2. 正在下载…
3. 现在安装
设置自动下载 自动下载仅在Wi-Fi网路下有效,打开自动下载功能后,将自动下载新版本安装包。
辅助功能 新版本提醒 在2个地方提醒用户新的版本
1. 主界面左上角,发现新版本时,图标切换为升级图标
2. 设置界面,软件更新列表项的Badge数字提醒。
自动下载 当用户打开自动下载,并接入Wi-Fi网络时,发现新版本,自动下载新版本安装包。
  • 核心功能

核心功能在软件更新界面完成,用户进入到软件更新界面。了解新版本介绍,下载新版本安装包,以及设置软件更新功能。

  • 辅助功能

在主界面及设置界面完成,提醒用户有新版本可供下载,需要及时更新到新的版本,以保证软件的稳定性。

四、软件更新流程

整个软件更新流程包含4个步骤。

  1. 请求新版本
  2. 下载安装包
  3. 验证完整性
  4. 启动安装
更新过程 Summary
请求新版本 向服务器请求新版本信息,并根据版本信息构建用户界面。
下载安装包 下载新版本安装包,支持断点续传
验证完整性 保证安装包的完整性
启动安装 安装新版本

以及2个辅助更新功能。

  1. 新版本提醒
  2. 自动下载安装包

1. 请求新版本

Key Point Summary
触发点 用户进入软件更新界面时,自动请求新版本。
例外:用户已经开始下载新版本安装包,则不发送请求。
过程中 告知用户"正在检查更新…"
请求失败 无论客户端网络问题,还是服务端产生错误,均提示用户"检查软件更新时出错"。
取消:取消请求并回到上一级界面
再试一次:回到触发点状态,重新请求新版本
发现新版本 展示新版本信息
未发现新版本 告知用户当前版本号,您的软件是最新版本。

2. 下载安装包

Key Point Summary
触发点 用户点击"下载并安装",开始下载安装包
过程中 软件介绍一栏:提示用户下载进度,并告知预估剩余时间
操作按钮一栏:提示"正在下载…",并禁用操作按钮
下载失败 软件介绍一栏:恢复到新版本介绍
操作按钮一栏:恢复到新版本介绍
同时弹出对话框告知"下载软件时出现错误"。
关闭:关闭对话框,界面恢复到新版本介绍
再试一次:回到下载过程中,继续下载安装包
下载成功 软件介绍一栏:告知用户"已下载"新版本安装包。
操作按钮一栏:显示为"现在安装",用户点击后进行验证
同时弹出对话框告知"软件下载完成"。
稍后:关闭对话框
现在安装:验证新版本。

3. 验证完整性

Key Point Summary
触发点 下载完成后,以及用户点击"现在安装"。
过程中 无需提示,神马笔记安装包不错3.0M左右,非常短的时间内即可完成MD5校验。
验证失败 提示用户验证失败
关闭:关闭对话框
重新下载:删除已下载安装包,回到下载安装包步骤,重新下载安装包。
验证成功 启动安装

4. 启动安装

Key Point Summary
触发点 验证完整性通过后
安装失败 系统处理……
取消安装 系统处理……
完成安装 系统处理……

5. 新版本提醒

Key Point Summary
触发点 用户启动神马笔记,接入Wi-Fi网络时,自动请求新版本信息。
额外附加一个设计:一天内只会自动请求一次。
过程中 自动检测,无需提示
请求失败 什么事情都没有发生
发现新版本 主界面左上角图标切换为升级图标
未发现新版本 什么事情都没有发生

6. 自动下载安装包

Key Point Summary
触发点 自动请求版本信息,发现新版本,
并且用户打开"自动下载"功能,
并且接入Wi-Fi网络时。
过程中 什么事情都没有发生
下载失败 什么事情都没有发生
下载成功 什么事情都没有发生

五、技术准备

功能点 技术要求 技术方案
请求新版本 1. 支持HTTPS
2. 类型安全
Retrofit + OkHttp
下载更新文件 1. 支持HTTPS
2. 断点续传
OkHttp
显示概要及详细介绍 1. 支持简单的文字风格:粗体、斜体、……
2. 支持点击链接跳转到网页
Markwon
技术方案 参考网站
Markwon https://noties.github.io/Markwon/
OkHttp http://square.github.io/okhttp/
Retrofit http://square.github.io/retrofit/
RxJava https://github.com/ReactiveX/RxJava/wiki
RxAndroid https://github.com/ReactiveX/RxAndroid/wiki

六、Finally

~笑渐不闻声渐悄~多情却被无情恼~