马蜂窝 iOS App 启动治理:回归用户体验

本文介绍了马蜂窝iOS App的启动治理,从用户和技术视角定义启动,分析启动耗时、流失率等关键指标,并探讨了启动优化方法,包括pre-main和post-main阶段的优化、精细化策略、平台机制利用等,最终实现了启动耗时减少50%和启动流失率降低30%的成果。
摘要由CSDN通过智能技术生成
640?wx_fmt=gif

点击上方“马蜂窝技术”,关注订阅更多优质内容


增长、活跃、留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能。启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率。因此,确保启动流程的良好体验至关重要。


「马蜂窝旅游」App 是马蜂窝为用户提供服务的主要阵地,其承载的业务模块不断丰富和完善,产品功能日趋复杂,已经逐渐成长为一个集合旅行信息、出行决策、自由行产品及服务交易的一站式移动平台。


「马蜂窝旅游」iOS App 历经几十个版本的开发迭代,在启动流程上积累了一定的技术债务。为了带给用户更流畅的使用体验,我们团队实施了数月的专项治理,也总结出一些 iOS 启动治理方面的实践经验,借由本文和大家分享。



0X0 

如何定义「启动」


要分析和解决启动问题,我们首先需要界定启动的内涵和边界,从哪开始、到哪结束,中间经历了哪些阶段和过程。以不同视角去观察时,可以得出不同结论。


 技术视角


App 启动原本就是程序启动的技术过程。作为开发人员,我们很自然地更愿意从技术阶段去看待和定义启动的流程。


App 启动的方式分为冷启动热启动两种。简单来说,冷启动发生时后台是没有这个应用的进程的,程序需要从头开始,经过漫长的准备和加载过程,最终运行起来。而热启动则是在后台已有该应用进程的情况下发生的,系统不需要重新创建和初始化。因此,从技术视角讨论启动治理时,主要针对冷启动。


从技术视角出发,分析 iOS 的启动过程,主要分为两个阶段:


  • pre-main: main() 函数是程序执行入口,从进程创建到进入 main 函数称为 premain 阶段, 主要包括了环境准备、资源加载等操作;

  • post-main: main() 函数到-didFinishLaunchWithOptions:方法执行结束。该阶段已获得代码执行控制权,是我们治理的主要部分。


 
 
     <premain>                  <postmain>  +----------------X------------------------------------X--------->start             main                   -didFinishLaunchWithOptions:


 用户视角


iOS App 是面向终端用户的产品,因此衡量启动的最终标准还是要从用户视角出发。


从用户视角定义启动,主要以用户主观视觉为依据,以页面流程为标准。这样看来,常见的 App 启动可以分为三个阶段:


640?wx_fmt=jpeg


T1:闪屏页

  • 闪屏页是启动过程中的静态展示页。在冷启动的过程中,App 还没有运行起来,需要经历环境准备和初始化的过程。这个过渡阶段需要展示一些视图,供阻塞等待中的用户浏览。

  • iOS 系统 (SpringBoard) 根据 App Bundle 目录下的 Info.plist 中"Launch screen interface file base name"字段的值,找到所指定的 xib 文件,加载渲染展示该视图。

  • 闪屏页的展示是系统行为,因此无法控制;加载的是 xib 描述文件,无法定制动态展示逻辑,因此是静态展示。

  • 对应技术启动阶段的 pre-main 阶段


T2(可选):欢迎页(广告)

  • App 运行后根据特定的业务逻辑展示的第一个页面。常见的有广告页和装机引导流程。

  • 欢迎页是业务定制的,因此可根据业务需要优化展示策略,该阶段本身也是可选的。


T3:目标页 (落地页) 

  • App 启动的目标页。

  • 可以是首页或特定的落地页

  • 目标页的加载渲染渲染完成标志着 T3 阶段的结束,也标志着启动流程的结束。


启动治理的最终目标是提升用户体验,在这样的思想下,本文关于启动流程的讨论主要围绕用户视角进行。



0X1 

方法论及关键指标


APM 方法论


对 iOS 启动的治理,本质上是对应用性能优化 (App Performance Management) 的过程,其基本的方法论可以归纳为:


界定问题

  • 准确描述现象,确定问题的边界

  • 确定量化评价手段,明确关键指标


分析问题

  • 分析问题产生的主要原因,根本原因

  • 确定问题的重要性,优先级

  • 性能问题可能是单点的短板,也可能是复杂的系统性问题,切忌「头痛医头,脚痛医脚」。要严谨全面地分析问题,找到主要原因、根本原因予以优先解决


解决问题

  • 确定解题的具体技术方案

  • 根据关键指标量化成果

  • 对问题进行总结,积累沉淀


持续监控

  • 性能问题是持续的,长期的

  • 对关键技术指标建立长效的监控机制,确保增量能被及时反馈,予以处理


关键指标


1. 启动耗时


启动耗时是衡量启动性能的核心指标,因为它直接影响了用户体验并对用户转化率产生影响。


对启动耗时指标的拆解有助于细粒度地监控启动过程,帮助找到问题环节。具体可以拆解为:


  • 技术启动耗时指标

  • pre-main

  • core-postmain

  • 主观启动耗时指标

  • T1_duration  :从程序运行起点到主视窗可见

  • T2_duration

  • T3_duration

  • total_duration


根据对马蜂窝 App 用户的行为数据分析确认,我们得到以下结论:


  • 启动耗时和启动流失率正相关

  • 启动耗时

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值