2017.11.23程序员
首先想说一下为何写这篇文章:安全
《启示录》这本书曾提到:若是开发的产品没有市场价值,那么不管开发团队多么优秀也无济于事。那么一样的,在咱们程序员费尽周折抓取各类数据,尝试不一样的技术方案只为了让冷启动快0.1秒的同时,可能在产品层面稍微一个小技巧就能让用户感受这1秒过得更快,那咱们程序员进行代码层级的优化以前是否是最好思考一下产品层面的优化呢?微信
有数据统计,App安装前三天,平均流失77%的日活跃用户。由于新用户是没有耐心的,他不知道你的产品可否给他们带来便利,提升效率,产生价值,带着这种怀疑的态度使用App过程当中,可能一丁点的的不爽、彷徨就致使用户卸载了App。就比如相亲,若是外在的皮囊在第一时间让对方感到不适,那么不管你的内在的灵魂多么有趣也是无济于事(除非你是个会吹牛逼的程序员🤓)。换个角度来说,可能整个App的产品设计很棒,代码设计和优化也作到了极致,可是由于用户第一次使用感受使用起来太复杂,跟预期相差太远,就致使用户还没体验到核心模块就卸载了App。网络
你只有一次机会给别人留下好印象
,一样的,近年来手机、电脑、无人机等数码产品也愈来愈重视开箱体验,好比能够研究下锤子手机的包装设计和内置配件的排列布局,也是经过这样的第一视觉冲击提供更好的用户体验。架构
原生样式规则
,程序员是应该比产品和设计师更清楚的
好比有次设计师提了个需求:要求原生弹框的肯定设置为加粗Medium的颜色,取消设置为普通regular颜色
。固然,这个需求站在设计师的角度来说是合情合理的:90%的人(用户)都是右撇子,产品自己具备引导和指望性质的button放在右边,同时颜色上更醒目 工具
但问题是美团的弹框是自定义的,对于原生的Alert弹框按钮类型而言,有三个枚举值:布局
UIAlertActionStyleDefault
:Apply the default style to the action’s button.UIAlertActionStyleCancel
: Apply a style that indicates the action cancels the operation and leaves things unchanged.UIAlertActionStyleDestructive
:Apply a style that indicates the action might change or delete data.
从代码实现层面来说,无非是换一下按钮枚举值,可是违反了苹果的官方规范可能后形成意想不到的问题,好比iOS11升级后,发现项目中有这样一个问题 学习
这是 UITableViewCell
对应的一个 UITableViewRowAction
,其对应的style也有三个:测试
UITableViewRowActionStyleDefault
:Apply the default style to the button.UITableViewRowActionStyleDestructive
:Equal to the default style.UITableViewRowActionStyleNormal
:Apply a style that reflects standard non-destructive actions.后来查明缘由就是以前的代码把删除对应的style设置成了UITableViewRowActionStyleNormal
,改成UITableViewRowActionStyleDestructive
才得以修复该问题,由于执行删除后,数据源及cell已进行了删除更新操做,可是UITableViewRowAction
对应的动画效果倒是UITableViewRowActionStyleNormal
,所以会形成上面的问题优化
可是这个手误是在iOS11 新增的交互动效上才暴露出来的,在以前的系统上是没有问题的,所以我拒绝了那位设计师,确实可能会埋下一些隐患,除非整个 App 的 Alert 风格都改成自定义😅
在互联网上半场,不少不精细的产品中存在这样一个问题:用户首次下载后咔咔咔三四个权限弹框接连弹出,这就好像你跟女神第一次见面,对方还没说话,你就笑嘻嘻地问:“妹妹家有几口?从哪里来又到哪里去啊?能够加个微信么?要不要考虑作我女友啊?”
iOS10
之后,因为工信部的要求,在国行
手机上用户首次下载
App,须要向用户请求网络权限,针对该弹框,有如下几个问题:
开发者不能判断该弹框的状态,也不能主动触发该权限的请求,在苹果爸爸面前,依旧是“人为刀俎,我为鱼肉”
苹果官方的bug:毕竟是临时改需求,有时候第一次下载该弹框没有弹出,致使App一直不能联网,App对应的权限列表也没有WLAN和蜂窝权限,目前在iOS11上测试屡次,目测该bug已修复
有的用户习惯性拒绝,小手一抖就不容许访问网络了
苹果是爸爸,可用户也是大爷啊,针对以上问题,常规的处理方式是这样的:
我我的通常是使用第二种,由于通常用户手机里面都有不少App,手动查找太费劲了,可是微信倒是让用户手动去查找,这点我不太明白,如哪位大佬看透还望告之(QQ的大部分权限是直接跳转的)
但这里还有一个硬伤:各类权限修改以后,再次进入 App,就会回到首页,至关于进行了一次冷启动。至于这个现象的缘由,我的猜想:假如如今正在使用麦克风录音,用户却进入设置界面关掉了麦克风权限。你让苹果爸爸怎么处理这个尴尬的局面?
对于特殊状况,好比该 App 没有弹出网络权限弹框,对应的设置界面也没有网络权限,一下是各类偏方:
好比导航类产品的地理位置权限、修图软件的相册权限、时间管理类软件的日历权限。针对这种**“缺了你不行”**特征的App,除了网络权限没法控制以外,其余全部权限最好先不要触发,能延迟尽可能要延迟,只留这一个权限选择,最好在给出必定的提示
好比IM聊天软件中麦克风权限,普通工具类App中相册权限(好比针对换头像这种功能)。用户须要正常进行这些操做须要对应的权限,可是不该该在App 第一次启动的时候就马上去请求权限。
对于这种重要不紧急的权限,通常都采起懒加载的方式,也就是等到用户探索到这个功能的时候,主动触发去发送请求。在用户暂时还不须要这个信息的时候,千万别给他提供!
就像平时的待人接物同样,要给对方想要的,而不是你认为他想要的
登陆注册功能自己就是对用户的一个限制,在用户还未体验到你产品价值的时候,却让用户提交我的信息进行注册,这显然是不合适的。
所以,除非是即时通信相似的与帐号强关联的App,其余App最好都要进行免登录操做:先向用户展现一部分基本的功能,当用户触发了与帐号强关联的操做(好比评论、买单等),再去提示用户进行登陆注册操做
以前作过一个工具类App,用户刚下载就要进行登陆注册操做,统计数据显示在注这部分流失掉的用户为10%之多!
关于免登录,以前写过一篇文章:iOS程序员眼中的客户端免登录,在此再也不赘述
该功能通常使用UDID来实现,关于这个有个小插曲,在 iOS 10.3 版本的 beta 2 - beta 5版本中,keychain 中的数据会由于 APP 的删除而删除,当时赶忙找其余替代方案,调研了知乎、领英以后,发现用的不是简单的keyChain,而是 iOS9 推出的SFSafariViewController,这个能够将密码、共享Cookie、iCloud Web表单数据、证书等存储在系统里面,与 iCloud keyChain 进行绑定。最后代码写的差很少了,发现 10.3 beta 6 版本,keychain 又能够继续使用(10.3正式版也是如此)。
在登陆注册的整个过程当中,尽量地减小用户的操做(最开始有信电话
是这样作的,后来滴滴
改版也变成这样;AppleID 新设备登陆须要的验证码
也是这样的):
其余的诸如格式自动检测、小屏幕适配、用户手感上的优化在此再也不赘述
通常状况下,用户经过社交媒体、产品运营活动或者App Store接触到产品,经过这个首次接触,会对产品创建一个初步认识,若是在这些途径中,你所描述的产品核心价值成功打动了用户,并进行下载操做。
《用户体验要素》这本书提出:最底层的架构是用户需求和网站目标同样,推进新手引导设计的缘由也有两个:用户需求和产品目标。对于新手引导来讲,用户需求是快速、愉悦地学习使用产品。产品目标是将新手用户快速转化为活跃度高、黏着度高的忠实用户。
新手引导要维持这两方面的平衡,根据各自产品特性进行不一样的引导操做:
引导页与App Store 推广图相似,在此不作讨论
感谢阅读。