速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Lyft 如何利用 iOS 实时活动来提升用户体验

  • 2024-05-05
    北京
  • 本文字数:1106 字

    阅读完需:约 4 分钟

大小:534.24K时长:03:02
Lyft 如何利用 iOS 实时活动来提升用户体验

Lyft iOS 工程师 Max Husar 解释说,向用户提供及时更新是改善移动体验的关键,尽管这将增加开发范围和工作量。为了在灵活性、可靠性和可重用性之间取得平衡,Lyft 的工程师使用 iOS ActivityKit 将动态内容添加到他们的应用程序中。


ActivityKit 是苹果在 iOS 16.1 和 iPadOS 17 中引入的,它允许用户使用新设备上的灵动岛(Dynamic Island)或旧设备上的锁屏来共享应用程序的实时更新。ActivityKit 的基石是实时活动(Live Activities),可以将它视为通知的演进,因为它们不仅允许用户接收最新信息或启动应用程序,还可以在不通过按钮和切换启动应用程序的情况下执行功能。


正如 Husar 所解释的那样,Lyft 的工程师将每个实时活动(Live Activity)都当作一种在主应用程序之上运行的迷你应用程序来处理。这也反映了 Lyft 的组织架构,即多个团队同时在不同的领域工作。


我们决定使用服务器驱动的用户界面(SDUI)来构建完全由服务器驱动的实时活动内容。我们已经在应用程序中与实时活动(Live Activity)重叠的一些屏幕上使用了 SDUI 框架,因此重用基本模型和熟悉的模式有助于我们更快地前进。


实时活动(Live Activities)的主要 限制 来自内容更新允许的最大有效负载的大小,即 4KB。在 Lyft 的案例中,这需要调整他们的 SDUI 模型,并使用 protobuf 来进一步减少有效负载大小中的一些字节。


基于这种方法,Lyft 的 iOS 团队创建了多个与用户交互的组件,包括一个 RichText 组件,该组件能够呈现格式化的文本以及图像或计时器,以及一个进度条,用于向乘客显示 Lyft 汽车的近似速度。


此外,他们扩展了解决方案,以支持远程图像的显示,以便在匹配骑手后立即显示司机的个人资料图像和车辆图像。此任务要求使用 应用程序组(App Groups) 在应用程序和实现实时活动(Live activity)的扩展程序之间共享文件。即便如此,Lyft 的工程师还是找不到:


一种可靠且快速地同时显示两个图像(司机图像和汽车图像)的方式。我们一致认为,首先从用户体验(UX)的角度来看,司机的个人资料图像更为重要,并且我们可以通过将 base64 图像数据直接发送到 APN 更新有效载荷中来毫无延迟地显示它。


另一个限制来自于这样一个事实,即图像只能在应用程序处于活动状态或处于后台状态并有足够的后台处理时间时才能下载。


Husar 表示,总的来说,无论复杂程度如何,实时活动所采用的解决方案都是成功的,并且能够提升数百万用户的用户体验。


关于 Lyft 工程师如何在他们的应用程序中利用实时活动(Live Activities)的详细信息可以参考这里,所以如果你对此感兴趣,请不要错过原文。


原文链接:https://www.infoq.com/news/2024/04/lyft-live-activities-ios/


声明:本文为 InfoQ 翻译,未经许可禁止转载。

2024-05-05 08:005801

评论

发布
暂无评论
发现更多内容

为什么一定要参与开源项目?

源字节1号

开源 软件开发

读《Software Systems Architecture》(02)—— Software Architecture Concepts

术子米德

架构师成长笔记

浅谈微服务框架选型

阿泽🧸

微服务 6月月更

linux之我常用的20条命令(之一)

入门小站

Linux

在线文本字符串转十六进制工具

入门小站

工具

Thread 源码分析

zarmnosaj

6月月更

Maven实用技巧

Nick

Java maven 技巧 pom 6月月更

前端uni-app框架之实战主要技术栈day_3

恒山其若陋兮

6月月更

读《Software Systems Architecture》(04)—— Architectural Perspectives

术子米德

架构师成长笔记

读《Software Systems Architecture》(09)—— Identifying and Engaging Stakeholders

术子米德

架构师成长笔记

【愚公系列】2022年06月 通用职责分配原则(二)-创造者原则

愚公搬代码

6月月更

Elux-将企业级工程化框架带入小程序开发

hiisea

小程序 taro 前端架构 前端框架 前端工程化

c语言不挂科(上)

工程师日月

6月月更

flutter系列之:flutter中常用的Stack layout详解

程序那些事

flutter 程序那些事 6月月更

GetX — Flutter 开发的百宝箱

岛上码农

flutter ios 跨平台 安卓 6月月更

读《Software Systems Architecture》(05)—— The Role of the Software Architect

术子米德

架构师成长笔记

读《Software Systems Architecture》(07)—— The Architecture Definition Process

术子米德

架构师成长笔记

读《Software Systems Architecture》(10)—— Identifying and Using Scenarios

术子米德

架构师成长笔记

读《Software Systems Architecture》(01)—— Introduction

术子米德

架构师成长笔记

读《Software Systems Architecture》(03)—— Viewpoints and Views

术子米德

架构师成长笔记

读《Software Systems Architecture》(06)—— Introduction to the Software Architecture Process

术子米德

架构师成长笔记

JS学习笔记之异同点

北洋

Andriod 6月月更

盲盒系统新品开发,盲盒 APP 酷炫 UI 成品源码开发

WDL22119

盲盒商城 盲盒 盲盒开发 盲盒源码 盲盒H5开发

盘点攻防演练中红队的主要工具(上)

穿过生命散发芬芳

工具 6月月更 攻防演练

【LeetCode】 计算应缴税款总额 Java题解

Albert

LeetCode 6月月更

Java Core 「7」各种不同类型的锁

Samson

学习笔记 Java core 6月月更

3个月软件测试培训出来后的感悟-写给正在迷茫是否去学软件测试

伤心的辣条

Python 程序员 程序人生 软件测试 自动化测试

读《Software Systems Architecture》(08)—— Concerns,Principles,and Decisions

术子米德

架构师成长笔记

在线JSON转Excel工具

入门小站

工具

DDD是个何许人也

卢卡多多

DDD 领域建模 6月月更

【Java Web 系列】Session的工作流程与基本使用

倔强的牛角

Java javaWeb session 6月月更

Lyft 如何利用 iOS 实时活动来提升用户体验_软件工程_Sergio De Simone_InfoQ精选文章