iOS程序员眼中的首次使用产品体验

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.
        不一样style对应的颜色
        苹果原生的 一些弹框,cancel性质的按钮也都是加粗的
    • 从代码实现层面来说,无非是换一下按钮枚举值,可是违反了苹果的官方规范可能后形成意想不到的问题,好比iOS11升级后,发现项目中有这样一个问题 学习

      若是不够明显的话能够与👇👇修改bug后效果进行比较

    • 这是 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 风格都改成自定义😅

二. 各类权限弹框的处理逻辑

在互联网上半场,不少不精细的产品中存在这样一个问题:用户首次下载后咔咔咔三四个权限弹框接连弹出,这就好像你跟女神第一次见面,对方还没说话,你就笑嘻嘻地问:“妹妹家有几口?从哪里来又到哪里去啊?能够加个微信么?要不要考虑作我女友啊?”

1. WLAN与蜂窝权限

iOS10之后,因为工信部的要求,在国行手机上用户首次下载App,须要向用户请求网络权限,针对该弹框,有如下几个问题:

  • 开发者不能判断该弹框的状态,也不能主动触发该权限的请求,在苹果爸爸面前,依旧是“人为刀俎,我为鱼肉”

  • 苹果官方的bug:毕竟是临时改需求,有时候第一次下载该弹框没有弹出,致使App一直不能联网,App对应的权限列表也没有WLAN和蜂窝权限,目前在iOS11上测试屡次,目测该bug已修复

  • 有的用户习惯性拒绝,小手一抖就不容许访问网络了

苹果是爸爸,可用户也是大爷啊,针对以上问题,常规的处理方式是这样的:

  • 在检测到没有网络的前提下(无网络访问权限/手机确实没有联网),告知用户多是由于网络权限问题致使的无网络状态,并向用户提供解决方案:
    1. 给出设置路径,让用户手动到达路径并更改网络权限
    2. 点击按钮直接跳转到该 App 设置界面修改网络权限

我我的通常是使用第二种,由于通常用户手机里面都有不少App,手动查找太费劲了,可是微信倒是让用户手动去查找,这点我不太明白,如哪位大佬看透还望告之(QQ的大部分权限是直接跳转的)

  • 但这里还有一个硬伤:各类权限修改以后,再次进入 App,就会回到首页,至关于进行了一次冷启动。至于这个现象的缘由,我的猜想:假如如今正在使用麦克风录音,用户却进入设置界面关掉了麦克风权限。你让苹果爸爸怎么处理这个尴尬的局面?

  • 对于特殊状况,好比该 App 没有弹出网络权限弹框,对应的设置界面也没有网络权限,一下是各类偏方:

    • 多进行几回打开、杀死App的操做,在这过程当中有必定概率会弹出网络权限弹框
    • 先进入设置界面随便关掉一个App的网络权限,而后再进入目标App设置界面,对应的网络网络权限就显示出来了
    • 简单粗暴的重启必定好使!!

即刻的无网络处理方式

2. App中重要且紧急的权限获取

好比导航类产品的地理位置权限、修图软件的相册权限、时间管理类软件的日历权限。针对这种**“缺了你不行”**特征的App,除了网络权限没法控制以外,其余全部权限最好先不要触发,能延迟尽可能要延迟,只留这一个权限选择,最好在给出必定的提示

美图秀秀 & 饿了么

3. 其余重要不紧急的权限获取
  • 好比IM聊天软件中麦克风权限,普通工具类App中相册权限(好比针对换头像这种功能)。用户须要正常进行这些操做须要对应的权限,可是不该该在App 第一次启动的时候就马上去请求权限。

  • 对于这种重要不紧急的权限,通常都采起懒加载的方式,也就是等到用户探索到这个功能的时候,主动触发去发送请求。在用户暂时还不须要这个信息的时候,千万别给他提供!就像平时的待人接物同样,要给对方想要的,而不是你认为他想要的

微博中用户到分享界面后须要手动触发权限获取

MONO中的push权限获取率确定比其余直接弹出来的要高

三. 登陆相关的优化

1. 免登录逻辑
  • 登陆注册功能自己就是对用户的一个限制,在用户还未体验到你产品价值的时候,却让用户提交我的信息进行注册,这显然是不合适的。

  • 所以,除非是即时通信相似的与帐号强关联的App,其余App最好都要进行免登录操做:先向用户展现一部分基本的功能,当用户触发了与帐号强关联的操做(好比评论、买单等),再去提示用户进行登陆注册操做

  • 以前作过一个工具类App,用户刚下载就要进行登陆注册操做,统计数据显示在注这部分流失掉的用户为10%之多!

  • 关于免登录,以前写过一篇文章:iOS程序员眼中的客户端免登录,在此再也不赘述

2. 登陆相关的优化
  • 若是用户以前在该手机登录过,在不须要考虑安全前提下,能够给用户提供更便捷的登陆方式,或者对用户进行提示(诸多第三方登陆选择,可能用户随便点了一个,下次就忘记了)
    新浪微博 & 轻听英语

该功能通常使用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 新设备登陆须要的验证码也是这样的):

    • 好比用户输入11位的电话号码后通过正则判断有效后,直接触发获取验证码按钮的操做,光标进入验证码输入框
    • 输入短信验证码后直接触发登陆操做
    • 也就是在整个过程当中,用户只须要输入电话号码和验证码,不须要其余任何切换的操做
  • 其余的诸如格式自动检测、小屏幕适配、用户手感上的优化在此再也不赘述

四. 引导用户了解核心功能的使用

1. 用户下载以前

通常状况下,用户经过社交媒体、产品运营活动或者App Store接触到产品,经过这个首次接触,会对产品创建一个初步认识,若是在这些途径中,你所描述的产品核心价值成功打动了用户,并进行下载操做。

广告运营 & App Store 推广图 就精准地描述了产品的核心价值

2. 用户下载以后初步使用

《用户体验要素》这本书提出:最底层的架构是用户需求和网站目标同样,推进新手引导设计的缘由也有两个:用户需求和产品目标。对于新手引导来讲,用户需求是快速、愉悦地学习使用产品。产品目标是将新手用户快速转化为活跃度高、黏着度高的忠实用户。

新手引导要维持这两方面的平衡,根据各自产品特性进行不一样的引导操做:

  • 内容社区类产品,开始用户是没有数据的,所以要首先给用户展现内容定制界面
  • 工具、游戏类 App 就要引导用户成功使用一次核心操做,在引导的过程当中最好完成一次阶段性流程就给予用户必定的鼓励

引导页与App Store 推广图相似,在此不作讨论

MONO的内容定制 & Things 新手引导

狼人杀的新手引导

  • 在这个过程当中最好对用户行为进行更细化的统计并追踪结果,根据各类统计数据分析用户流失的缘由,从而不断优化引导的流程
  • 在第一次打开App或者用户第一次登陆成功后,可能要下载一些历史数据(好比微信登陆成功后要下载部分历史消息、通信录数据),技术能够在这方面尽量地作优化;设计层面也能够考虑增长一些动效,让用户在心理上感受时间过得很快(若是亚马逊网页下载速度慢 1 秒钟,1 年就有可能损失 16 亿美圆;若是谷歌提交搜索结果的时间延迟 0.4 秒,一天的搜索量就会减小 800 万次;好吧,这个浮躁的快节奏世界🙃 )
  • 固然,在用户完成第一次使用App以后,运营方面也能够作一些诸如电话回访、短信通知红包下发、push推送活动信息等唤醒用户操做
五. 写在最后
  • 产品懂技术,就像流氓会武术。技术会点产品,就像会武术的人去耍流氓👻👻👻
  • **雷军曾经说过:若是写代码没有写诗的感受,那就转行作产品经理吧!**虽然确实没有写诗的感受,可是有时候把用户的感受归入进去,对每个小的功能点都保持着敬畏感,把人做为中心点去考虑而非代码,好吧,我编不下去了🤣🤣。。工头喊我搬砖了

感谢阅读。

相关文章
相关标签/搜索