做一个demo很容易,但是真正要交到用户手中时,应该是一个成熟的产品,一些功能是必不可少的,这些功能主要作用如下:
- 提供不断完善产品的方法
- 方便定位问题
- 保证产品的可扩展性
- 用户数据安全
基本功能
用户反馈渠道
用户在使用产品时发生了Bug或者对产品有一些新的需求,应该有一个明显的入口提供给用户完成反馈
用户行为数据统计
用户行为统计最基本是用来看一个产品的活跃用户数、转化率等指标,但更重要的是根据用户在产品上面的操作习惯,可以用来改进产品设计,对于一些特殊的涉及用户个人信息的产品,还可以知道用户是一个什么样子的人,从而进行针对性营销
对内对技术和对外的帮助文档
对内的技术文档主要是方便开发人员之间的协同开发,对外的帮助文档主要是面向最终用户,帮助用户处理产品常见问题
方便获取日志
产品发布后,如果发现问题,用户反馈给开发人员,开发人员一般会要求用户抓取日志,但不是每个用户都懂得或者愿意抓取日志,有条件的话,应该设计一个更方便的日志抓取逻辑,比如产品留一个监听端口,开发人员可以通过这个端口获取日志,整个过程只需要用户告诉IP就可以了
方便查看版本信息
产品的UI界面一般显示的是App的信息,如果想知道App所使用其他SDK的版本信息,需要查看日志,SDK应保证在日志中可以方便的查看到版本信息
用户数据安全
软件产品常常设计到用户的个人信息,产品发布的时候一定要Review一下整个流程有么有可能造成用户个人信息泄漏
第三方库是否可商业化
产权问题就像生小孩,等肚子大了才看的出来,当你的产品用户数量越来越多,你用的第三方库的产权问题就会受到更多的关注,所以在第一个版本发布的时候,就需要把那些无法商业化的第三方库去掉
在线升级
新旧产品之间的不兼容,一直是软件开发中的硬伤,每个程序员都希望用户用的是最新版本,但是现实很残酷,开发人员应该提供一种方便的升级方式来帮助用户升级,当一个人做一件事成本很低的时候,他会愿意试一试的,比如说网购
版本信息交互
如果产品设计到多个端之间通信,交互时需要加入版本信息保证兼容,随着业务逻辑的增加,很容易出现协议之间不兼容的情况,这时候就需要根据对方的版本来选择不同的协议,所以多个端之间交互时加入版本号信息是一个很好习惯
配置产品特性
一般可以通过界面来配置一些产品特性;如果是通过配置文件来修改,那么主要针对面向程序开发人员的产品,比如IDE,开发者可以根据自己的喜好和机器环境,修改配置
高级功能
基本功能主要是针对最终用户,高级功能主要是面向开发人员
插件化
插件化让新增一个功能不需要重新编译和部署,可能只需要简单的重启一下程序,像Eclipse一样
SDK支持
当用户不喜欢默认UI时候,可以根据SDK重新设计自己的UI