50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

微信朋友圈的高性能复杂度

guodongq

「架构实战营」

[Pulsar] LookUp原理

Zike Yang

Apache Pulsar 12月日更

第2周学习总结

糖糖学编程

架构实战营

签名验证反爬,反反爬第二篇博客,Python爬虫120例

梦想橡皮擦

12月日更

模块二作业

novoer

#架构实战营

Prometheus Exporter (三十二)Varnish Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 Varnish

模块二作业-朋友圈高性能复杂度分析

圈圈gor

「架构实战营」

微信朋友圈高性能复杂度设计

CH

「架构实战营」

从甲方到乙方,如何做好混沌工程的行业化落地

阿里巴巴云原生

阿里云 云原生 混沌工程 金融行业 行业化落地

Dubbo-Admin 功能展示与实操解析

阿里巴巴云原生

阿里云 云原生 Dubbo-Admin 功能

【架构实战营】模块二:知识点总结

wgl

「架构实战营」

明年的能力计划之学会咨询

将军-技术演讲力教练

阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证

阿里巴巴云原生

阿里云 云原生 稳定性 获奖

云未来、新可能 - 绿色、无处不在、可信的计算

阿里巴巴云原生

阿里云 容器 云原生 活动 KubeCON

架构实战营 - 模块2 - 作业

Pyel

「架构实战营」

模块二作业

黄秀明

性能工具之stress工具使用教程(带源码说明)

zuozewei

Linux 工具 性能测试 12月日更

React进阶(十):React 项目启动原理详解

No Silver Bullet

React 12月日更

【LeetCode】找到小镇的法官Java题解

Albert

算法 LeetCode 12月日更

全网最牛逼的华为NTP配置命令,建议收藏!

Ethereal

华为 ntp 网络技术

Service Mesh 在中国工商银行的探索与实践

阿里巴巴云原生

阿里云 微服务 云原生 服务网格 金融实践

全网最牛逼的华为信息中心配置命令,建议收藏!

Ethereal

网络技术 信息中心 厂商设备命令

腾讯云实时音视频(TRTC)SDK使用体验测评

为自己带盐

dotnet 28天写作 trtc-js-sdk 12月日更

从手游中的感悟

搬砖的周狮傅

游戏 日常感悟

架构实战营 - 第 4 期 - 模块二作业

Evan

架构实战营 「架构实战营」

Kotlin Maps:五个基本函数

坚果

kotlin 28天写作 12月日更

实用机器学习笔记十九:模型验证

打工人!

人工智能 机器学习 深度学习 学习笔记 12月日更

【docker 总结】第七篇 - nodejs项目部署

Brave

Docker 12月日更

DDD领域驱动设计实战(六)-理解领域事件(Domain Event)

JavaEdge

12月日更

微信朋友圈的高性能复杂度分析

糖糖学编程

架构实战营

消息队列存储-mysql表

小麦🌾

架构实战营

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