QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:005881

评论

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

前端食堂技术周刊第 36 期:pnpm v7.0.0、Node 对 ESM 的支持达到重要里程碑、四月份登陆浏览器的新功能、VS Code April 2022

童欧巴

JavaScript 前端 Node React 前端工程师

在线TSV转Excel(xls/xlsx)

入门小站

工具

第八周作业

Asha

k8s client-go源码分析 informer源码分析(2)-初始化与启动分析

良凯尔

容器 云原生 #Kubernetes# Client-go

java内存模型之重排序

急需上岸的小谢

5月月更

2021年最新版阿里、腾讯、美团300道Java初级

爱好编程进阶

程序员 后端开发

2022年编程语言排名,官方数据来了,让人大开眼界

爱好编程进阶

Java 程序员 后端开发

14-Docker 镜像安装实践

爱好编程进阶

Java 程序员 后端开发

【PIMF】OpenHarmony啃论文俱乐部——拼音输入法原理_从触摸事件到汉字

离北况归

OpenHarmony Openharmony啃论文俱乐部 OpenHarmony应用开发 PIMF团队

Docker下的Spring Cloud三部曲之三:在线横向扩容

程序员欣宸

Spring Cloud java 5月月更

TypeScript 里的 Reference Type 和 Triple-Slash Directives

汪子熙

typescript 编程语言 angular 5月月更 directive

《对线面试官》 JavaNIO

Java3y

Java 开源 编程语言 语言 & 开发 5月月更

11月数据库排行:PostgreSQL起飞、三巨头分数持续低迷

爱好编程进阶

程序员 后端开发

Python 实现设计模式之工厂模式

宇宙之一粟

Python 设计模式 工厂模式 5月月更

Intellij官方中文语言包,它来了

FunTester

01-初识Git

爱好编程进阶

Java 程序员 后端开发

2021年金三银四必问的1000道Java面试题及答案整理

爱好编程进阶

Java 程序员 后端开发

Nginx 和 Apache 配置 SSL 文件签名的不同

HoneyMoose

正向代理与反向代理

HoneyMoose

【Python】题集 of ①

謓泽

5月月更

网站开发进阶(四十四)input type=“submit“ 和“button“的区别

No Silver Bullet

5月月更 button submit

【刷题第2天】买卖股票的最佳时机

白日梦

5月月更

上海疫情封控期间,模拟芯片巨头变相裁员后续:补偿是不可能补偿的!

IC男奋斗史

职业规划 裁员 芯片

# Java基础复习(DayEight

爱好编程进阶

程序员 后端开发

32岁的我裸辞了,八年 Java 老鸟,只因薪水被应届生倒挂

爱好编程进阶

Java 程序员 后端开发

5 年 Java 开发经验,阿里面试了 7 轮,太难了呀

爱好编程进阶

Java 程序员 后端开发

网站开发进阶(三十九)重磅推出:优良的编码风格!

No Silver Bullet

5月月更 编码风格

以购物车为例探讨 Flutter 的状态管理的必要性

岛上码农

flutter ios开发 安卓开发 跨平台应用 5月月更

16个 Redis 常见使用场景,面试有内容聊啦

爱好编程进阶

Java 程序员 后端开发

2020年春招复盘:技术三面+HR面

爱好编程进阶

Java 程序员 后端开发

6月GitHub上最牛逼的10个Java开源项目,号称“Star收割机

爱好编程进阶

Java 程序员 后端开发

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