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

本文分享了马蜂窝 iOS App 的启动治理经验,从技术启动优化、精细化策略、合理利用平台机制和结构化定制四个方面展开,旨在提升启动速度和用户体验。通过启动耗时、启动流失率等关键指标的分析,实施了冷启动优化、广告曝光率提升等措施,最终实现了启动耗时减少50%和启动流失率降低30%的效果。
摘要由CSDN通过智能技术生成

增长、活跃、留存是移动 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 启动可以分为三个阶段:

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值