在之前那篇终极prd文章被人人都是产品经理发表后,有不少人希望能够分享一份完整的prd出来,不过目前手中完善的prd都是关于公司产品的,实在不方便直接分享出来。而且每个公司对prd的要求都是不同的,对于好坏的标准也是不一样的,大家应该根据文章找到符合自己公司要求的重点参考。不过我不得不说,如果能把文章中的方方面面都能考虑完整,那无论什么样的要求都是可以满足的,只可能考虑的“过于”周全,一定不会有所缺失。虽然完整的prd不能分享出来,不过我打算写两篇有关具体功能设计的文章,基本上是其prd中的重点摘要。第一是帮自己回顾一下,第二就是给大家参考一下相关功能的注意点和其prd的重点。
做了不少硬件APP的功能点了,其中最让我影响深刻的就是存储管理和版本同步升级模块,看似简单的功能,做起来却是不容易,情况太多,细节太多。每次谈到硬件产品APP就难免会和纯互联网APP进行一下对比,纯互联网APP没有同步升级一说,就升级APP。但是硬件产品APP中的升级包括固件的升级和APP的升级(这里提到的升级都是指的是主动升级,非强制升级),固件的升级指的是硬件里的程序升级,APP的升级就是手机里APP的升级了。纯APP的升级流程很好理解,在有网络的情况下下载APP安装包进行安装即可。固件升级流程则是先通过网络将新版本固件下载到手机上,再通过手机和路由器进行通信,将安装包上传到硬件中进行安装。改版前,APP里的固件升级和APP升级是分开的,入口都不一样,一个入口在工具页里,一个入口在我的-更多里。这里还有一个点需要注意,因IOS的特殊,APP内不能引导用户更新软件。iOS改版前是没有任何入口甚至提示去引导用户下载新版本的。而硬件APP主要是用来和硬件协同工作的,两个版本能保持统一是最好的,不然可能会出现各种因不兼容导致的异常(虽然我们在设计功能的时候就会考虑固件和APP的新老版本之间的兼容问题,但是总会有一些不可知的问题会出现)。因此尽量引导用户将固件和APP同时升级到最新版本是产品设计中很重要的一环,所以我们要做版本同步升级。这里先说明一下,同步升级既然把APP的升级和固件的升级一起升级,那肯定还是有个先后顺序的。因安卓APP升级时下载完安装包后会跳转到系统安装页面,而IOS则是直接跳出APP去APP store。既然都会离开安升级页面,因此我们将固件升级放在前面。
1,需求说明
具体的需求说明 如下(需根据产品的现状列出,以下只是举例):
1,目前APP固件升级放在工具里面,APP升级放在我的-更多(安卓,IOS现在没有任何入口和提示),入口有点混乱,用户操作也比较麻烦。
2,让APP和固件保持同步升级会减少版本不同步带来的兼容问题。
3,与之前功能显示模块,触发升级形成统一的促进用户同步升级体系。
2,功能描述
功能描述主要有两大块:升级展示页面和升级。
上文提到了,IOS和安卓的不同,但是我们还是需要引导用户同步升级,这样就需要想一些巧妙的设计来达到目标的同时避过APP store的审核。
因IOS不能引导用户升级,因此升级展示页面不能显示APP升级。策略:IOS只显示固件版本升级,在每次固件版本升级完成后检测是否有新APP版本,如果有则会弹框提示用户去APPstore下载。
2.1 升级展示
安卓展示页面情况在展示上会有四种情况:
①固件和APP都有新版本
②固件是最新版本,APP有新版本待升级
③APP是最新版本,固件有新版本待升级
④APP和固件都是最新版本
IOS展示页面情况在展示上有两种情况:
①固件版本有新版本
②固件版本是最新版本
安卓:
版本升级页可以查看当前固件和APP版本的版本号,新的固件和APP版本的版本号和版本信息。默认全选新的固件和APP版本,也可取消勾选。
IOS:
版本升级页可以查看当前固件版本的版本号,新的固件版本的版本号和版本信息。默认勾选固件新版本,也可取消勾选。
2.2升级
安卓升级分三种情况:
①固件和APP都升级
②只升级固件
③只升级APP
iOS升级只有一种情况:
①升级固件
升级每种情况下还需区分远程还是本地。这里解释一下为什么要区分远程还是本地,上文提到固件版本的升级是需要先下载固件新版本的安装包到手机上,再通过手机将安装包上传到硬件中进行安装升级的。这样的话,只有本地情况下,手机才可以和路由器直接通信上传安装包。从原理上来讲,其实是可以通过手机远程控制路由器去下载安装并安装的,但是从实际实践过程中发现,路由器自动下载安装的时候容易刷成砖,这是遗留问题,具体什么原因还不清楚。既然由于技术的限制,只能这么做,那在做产品设计的时候就需要分情况写清楚。举例:
安卓:
①固件和APP都升级
本地:
固件和APP都勾选升级后,展示升级进度条,进度(升级安装顺序)为:固件升级中,APP升级中。APP在下载安装包后,弹出安装页,用户点击安装则完成整个升级过程。
远程:
同时升级固件和APP时,首先检测用户使用的是移动数据还是wlan,若使用的是移动数据,则弹框提示用户“您当前使用的是移动数据流量,是否继续”,用户点击继续则进行下一步。然后检测是本地环境还是远程环境,若检测到是远程环境下,则进度条下之前显示“固件升级中”变为显示“固件版本将会在本地环境下自动下载”,然后直接升级APP。回到本地情况下的时候,打开APP则弹框提示“您的APP版本已经更新到最新版本,由于之前不在本机环境,所以固件版本还未升级,请点击继续”,用户点击继续则开始固件升级,进入固件升级进度条页面。
iOS:
本地:
用户点击升级,则开始升级固件。升级成功后提示用户“固件升级成功,检测到有新APP版本,是否前往APP store进行升级”,用户点击是则跳转到APP store,点击取消则返回版本显示页。
远程:
当用户勾选并点击升级后,检测是本地环境还是远程环境,若检测到是远程环境下,则弹框提示用户“固件将在本地情况下完成升级”。回到本地情况下的时候,打开APP则弹框提示“您已勾选升级固件版本,由于之前不在本机环境,所以固件版本还未升级,请点击继续完成升级”,用户点击继续则开始固件升级,进入升级进度条页面。
3,约束条件
约束条件有以下几个需要思考的重点:
1,既然有信息展示页,那就会出现信息获取失败的情况(接口获取失败和连网失败)
2,固件升级异常:固件升级分为下载,上传和安装。这三步中的每一步都有可能出现异常。虽然统一定为失败,但是有些细节需要把逻辑描述清楚,比如下载成功上传失败就需要这样处理:
升级版本时需先扫描升级版本的安装包是否存在,如果存在则直接安装,如果不存在则先下载再安装。
除了这三步会出现失败外,还有一个很重要的点,我们称之为“WiFi漂移”。意思是当固件进行升级的时候,路由器会断开,如果此时周围有其他可连接的路由器网络时,则会直接连接上其他网络。当升级成功后便不会自动连接回来。前文说过,固件安装后应该接着进行APP的安装,那这里的处理方式只能根据不同情况来了,因为这个WiFi漂移不是一定会漂移走的。而且需要注意的是,固件升级成功和失败,漂移的处理方式也是不同的。举例:
安卓:
a,若WiFi没有漂移,还停留在升级进度页面,检测到固件升级失败,则弹框提示用户固件升级失败,您可以选择重试或者继续升级APP。
b,若因WiFi漂移(固件升级成功/失败都可能出现),页面没有停留在升级进度页面,则当用户再次正常连接到WiFi时弹框提示用户
①固件升级成功:“您的固件版本已经更新到最新版本,由于之前网络环境发生变化,APP版本未能正常升级,请点击继续”
②固件升级失败:您的固件版本更新失败,您可以选择重试或者继续升级APP”。
3,APP升级异常
APP升级异常比较好处理,成功就是成功,失败就是失败。只需强调一点:升级版本时需先扫描升级版本的安装包是否存在,如果存在则直接安装,如果不存在则先下载再安装。
整个版本同步升级的模块的重点基本上说完了,大部分只是举例,完整的也不能“暴露”啦。个人觉得还很可能有些细节问题会在开发过程中暴露出来。
我相信:我们想不到完美,但是可以尽善尽美!