本篇文章本想着写技术实现来着,写着写着写成了产品。产品就产品吧,之后我再按这个大纲写技术实现。这是一个不小的工程,每个点每个平台都是一篇文章。目前未完待续,先发一下大纲再持续更新。
程序中常见且通用的几个点
登录
如果程序涉及到会员注册用户,那么登录是必不可少的。用户模块会在很多的程序中见到。
应用程序做会员有诸多好处
一、成为注册会员方便了对于用户的管理与分析,包括活跃用户与留存用户等。
二、通过对用户的奖励机制,能够提高用户粘度,提高用户留存
三、通过账号的关联关系,用户可以实现多端数据同步
还有其他等等
当然也有一些坏处,如
一、用户反感登录采集个人隐私数据
二、注册登录流程麻烦,使用户失去兴致
常见登录方式罗列了一下,也是各有有缺点
账号登录
账号登录是互联网初期最常见的一种登录方式,也是在程序员学习时最常用到的方式。这种方式实现起来也简单,而且也不需要采集过多的数据。对于一个用户来讲,只需要有个账号和密码就可以。对于个人信息,可以说是采集度最低。
但是对于这种登录,弊端也是很大的。
首先账号的随意性大,没有什么规律。如果是数据库后台没有做字符限制的话,那也会有一些风险,比如特殊字符SQL注入之类的。
其次,对于用户来讲,账号可能是随意起的,如果不记住账号的话,很容易就忘掉了。本来密码就已经难记了,账号也想不起来是啥,会让用户放弃使用,或者直接注册一个新的账号。这也导致了留存很多僵尸账号。
还有,如果仅仅是账号密码,那么用户忘记密码找回也会变得非常的麻烦,因为没有一种其他方式来校验用户是否是当初的注册用户。
移动端建议减少使用账号密码的方式去登录,当然也有例外。比如说某个管理软件的管理员,工具类软件,企业内部软件。这些软件往往使用范围有限,面向群体有限,账号可能还是统一分配的,这个时候还是采用了账号密码的方式去进行登录。局域软件或者单机软件登录,也只能使用账号密码的方式进行验证。
还有一个案例是QQ,QQ账号是互联网早期的登录方式,但是由于人们的广泛使用和高频率使用,QQ账号已经不仅仅是账号了,而成为了一种身份标志。账号登录做到这种程度,也是非常厉害了
邮箱登录
邮箱登录也是非常常见的一种登录方式,仅次于账号登录。但这种方式也是多用于pc端网站的一个登陆,移动端用邮箱登录的比较少。因为邮箱在移动端的验证方式并不是特别的方便。需要接受邮件,打开邮箱软件或者浏览器,然后再填入邮件收到的验证码。这种方式就比较冗余。pc网页一般是邮箱收到一个URL,点击跳转验证。这种方式适用于pc的网页端,作为移动端来讲,就不是那么合适。
手机号登录
手机号登录是作为移动端最常用的登录方式,手机号登录也是有着非常大的优势。
一、手机号格式固定,校验简单
二、短信接收验证,手机比较方便快捷
三、手机号用户容易记住 ,不易忘记
四、找回密码比较方便
五、对于推送给用户一些信息可以采用短信电话的方式,渠道更宽
不过手机号也有一些问题,需要注意
一、当用户手机号丢失,将面临盗号风险
二、当用户手机号丢失或注销,找回密码会比较麻烦
三、用户对于手机号隐私,不愿意注册使用手机号
四、对于短信电话消息,会引起用户反感
软件设计来讲,手机号的劣势往往是被忽略的,因为劣势也仅仅是少部分,带来的优势是非常巨大的。但作为成熟的软件,最好是要多多考虑
混合登录
混合登录是把账号登录,邮箱登录,手机号登录三者混合在一起,都可以作为账号进行登录。对于后台人员来讲,就需要判断验证是那种账号,然后去查询哪个字段。(先验证再查询可以减少数据查询交互,提高效率。当然也可以使用遍历的方式,一项一项的查询,直到查询到匹配账号为止)
混合登录给了用户更多的一个选择,也可以实现多账号统一。目前也有多家采用这种混合登录的方式,弥补了各项登录的不足
第三方登录
第三方登录是目前已有用户量的大佬,开放授权给各个新平台使用用户数据的一种方式。比如现在的QQ、微信、微博、GitHub等等。
第三方登录可以实现快速的用户流量转移,不需要自己去维系账号。基于现有平台的用户量,实现自己平台用户积累,简称“抱大腿”。而且作为软件角度来讲,不需要维系账号,就是不许要考虑账号安全,账号丢失找回这些麻烦事。
对于用户来讲,授权登录也是非常的方便,也不需要额外的记录账号密码,只需要授权登录就可以。也不用担心自己账号泄露的问题。
虽然第三方登录非常的方便,优势也很多,但是账号毕竟 是人家第三方的,一个谈不拢不让你用了,损失就大了。用人家 的就得受到人家的管制,遵守人家的规则。
还有,每个企业每个程序都希望自己做大做强,日活千万用户过亿,老指望这第三方平台可是不成,那是必须得做上自己的用户登录
其他登录
其他还有一些登录方式,比如身份证号登录,银行卡号登录,这些还是基于账号登录的一个变种。
也有基于硬件的登录,比如指纹登录,人脸登录这些生物特征登录。不过这些一般不做为账号主体,仅作为账号认证。比如支付宝指纹登录,人脸登录,首先也是有一个账号在那。指纹人脸替代的仅仅是密码部分。
还有基于设备的,每个设备作为唯一识别账户。由于设备的物理特性,持有设备即认为可以使用,设备的认证交由设备管理。举个例子:手机本身有锁屏,那么有能力解锁的人即认为是当前用户。app则直接获取设备的唯一标识,作为用户记录。那么也不许要用户登录和输入密码,就可以使用软件并拥有用户身份。
分享
分享到QQ、微信、微博等社交平台。
一般采用鼓励分享机制,即分享可以带来一定的利益好处,常见于游戏类或积分会员类程序。这样可以迅速扩大程序的影响力,获得大量的用户流量。但是分享功能也需要慎用,分享内容也需要控制。推广类分享会遭到用户反感,特备是朋友圈内这种私密的用户圈。
还可以采用内容分享,即分享的是有一定的内容,常见于新闻视频类程序。这类分享也会常见于朋友圈,用户看到有意思的内容会自发乐意分享。对于购物类而讲,商品一定是需要内容分享的,商品类分享一般常见于分享到个别的用户。
分享的平台是有对程序的审核,也需要遵守相应平台的规则。当然平台也可能会根据利益去封杀你的分享内容。最近抖音短视频就遭到腾讯管制,这不能怪腾讯,毕竟平台是人家的。
统计
统计是作为运营最基本的判断依据,一个好的程序软件必然要进行运营,也必须的对于app进行数据采集分析,然后根据数据反馈提出改进 。
不过统计功能也是常常被忽略的功能,因为也不是每个公司都有运营,都会考虑使用数据。
数据分析一般分为:数据采集,数据清洗,数据分析,数据呈现
在app端做好数据采集,做好打点。打点也是根据想要采集的数据进行打点,也要确保打点的准确和粒度范围。举个例子,想要采集用户按钮的点击事件,但其实按钮是有touchstart,touchmove,touchend,tap,doubletap等等这些事件,都是跟按钮点击相关的,那么在哪个方法上进行打点统计,统计的粒度,也是需要思量的。
数据采集一般是用一种格式会方便解析与展示。采集的数据一般有
行为:用户操作动作,如点击,浏览,触摸,输入等等
数据:行为产生的数据,如点击位置,携带的其他数据等等
时间:产生的时间
来源:统计的来源,如iOS平台,android平台
分类:自定义分类信息,同一类的做统计处理
平台信息:系统版本等等
其他等等
crash分析
当程序崩溃时采集的信息,一般是由定时发送到服务端。分析崩溃原因用以改善程序。常见的可以用腾讯的bugly,友盟crash统计等。其实crash分析也可以看做是一种特殊的统计需求。
消息推送
消息推送也是作为程序中常见的一个功能。对于不同的平台实现原理也不一样,推送效果也是不一样。iOS平台有官方的apns推送处理,而android是需要开发者自行处理推送的。
为了保证推送的实时性,手机是与服务器一直保持着通讯。iOS还好,是统一管理,android则是要一直开启着service去进行交互,这也会有资源的消耗。不过现在android也有平台厂商的官方推送,也是很大程度上去优化了这一部分内容。
不过对于推送我们也可以直接使用现有的一些第三方,比如友盟、极光等,这样也减少了考虑平台的差异性,降低了编码的难度,减少了服务的内容。
程序中其他功能性功能
这些移动端会用到,但不是每个App都可能会用到
音视频
图片
即时通讯
地图
支付
语音识别
人脸识别
加密解密
程序设计
分层架构
网络
请求方式
请求时机
请求内容
内容缓存
数据
本地存储
数据操作
数据操作的一致性
界面
界面设计
界面性能
控制
生命周期
程序设计中注意的地方
功能模块独立(高内聚)
功能间互不影响(低耦合)
稳定性与可靠性
来源:https://blog.csdn.net/u013513053/article/details/80534731