常怀感恩之心有助于减轻抑郁和焦虑症状,改善心理健康状况和生活满意度¹。坚持练习感恩可能会带来持续数月的持续改善²。正念应用 Gratitude 通过每日微型日记、肯定语和愿景板来鼓励用户坚持练习。该应用的下载量超过 600 万次,获得了 15 万个 5 星评级,并记录了 1 亿篇日记。
开发者 Divij Gupta 和 Narendra Aanjna 为其应用的每个核心用户历程开发了 widget。他们的目标是让用户在日常生活中随时随地都能使用应用,而无需启动完整的应用会话。
通过直接在用户的主屏幕上显示互动式日记提示、肯定语、愿景板图片和指标,该团队降低了每日反思的门槛,并报告称 widget 用户的留存率提高了 25% ,并且 widget 每周记录的日记条目数约为 1,000 条 。用户忠诚度的提高转化为用户切实的健康成果:形成有助于长期心理健康的良好习惯。
“widget 通过直接在主屏幕上提供快速灵感、提醒和反思,帮助我们在用户的日常生活中更好地呈现应用。这提高了互动度,让用户更容易坚持练习正念。”- Divij Gupta
挑战:在不降低留存率的情况下进行现代化改造
虽然 widget 的影响显而易见,但 Gratitude 最初基于 XML 的 RemoteViews 实现却造成了技术债务。随着应用的设计系统向 Material 3 演变,旧版 widget 越来越难以与现代界面保持一致。每次视觉更新都需要手动 XML 开销和脆弱的变通方案,从而降低了开发者的速度。
解决方案第 1 部分:从 XML 迁移到 Jetpack Glance
为了实现 widget 的现代化,该团队转向了 Jetpack Glance。
他们首先查阅了 Android 上的 widget 设计页面和 规范 widget 布局,以了解在有限空间内显示信息的最佳实践。
然后,他们将 widget 套件迁移到了 Jetpack Glance。借助此声明式框架,开发者能够在不到一个月的时间内 完成从规划到发布的过程,节省了约 50% 的开发时间,并获得了另外两项优势:
- 使用声明式代码替换限制性 XML 布局,使代码库更易于阅读和维护,并减少了开发者的工作量。
- 借助 Jetpack Glance,该团队可以更轻松地实现 动态配色、灵活的 调整大小 和扩展的配置选项。这些功能可确保 widget 与用户独特的主屏幕布局保持和谐一致。
以下 GIF 展示了两个 Gratitude widget 和自适应调整大小功能:
虽然 Glance 简化了界面,但该团队指出,跨各种 OEM 启动器进行测试对于确保跨设备的布局一致性也至关重要。
该团队还实现了 生成的 widget 预览,以便用户可以查看个性化的预览。他们指出,测试生成的预览可能很慢,因为预览会受到速率限制以节省电池电量。如需绕过速率限制进行测试,请使用 adb 命令:
adb shell device_config put systemui generated_preview_api_reset_interval_ms 0
他们的所有努力都使 Gratitude widget 高质量和差异化。
解决方案第 2 部分:在应用内推广新 widget
然后,开发者使用了 应用内 widget 固定 功能来提高 widget 的可发现性和 widget 安装量。在应用内与上下文相关的时刻要求用户安装 widget,有助于用户找到 widget,而无需使用系统 widget 选择器。以下 GIF 展示了 Gratitude 的底部动作条,用于从应用内添加微件:
该团队还重构了 widget 软件包,这更改了 widget 接收器路径,并导致 widget 从用户的主屏幕中删除。他们使用之前存储的用户标志来识别 widget 用户,并触发了另一个 requestPinGlanceAppWidget 提示,邀请 widget 用户使用新的现代化 widget。
开发者提示: 如需在从 RemoteViews 迁移到 Jetpack Glance 时保持 widget 安装量,请确保您的 GlanceAppWidgetReceiver 在 Android 清单中使用与之前的 AppWidgetProvider 相同的类名称和软件包。如果需要新的类名称或软件包位置,请效仿 Gratitude,使用应用内固定功能帮助用户恢复 widget。
该策略正在发挥作用,因为 10% 的日活跃用户总数 已采用 widget。
总结
Gratitude 的故事表明,widget 可以成为培养习惯的工具。通过实现直接从主屏幕进行自我反思的快速操作,该团队提高了用户忠诚度。Gratitude 通过采用 Jetpack Glance 减少了技术债务并实现了 widget 的现代化,并提示用户在其应用内添加 widget。
“我们使用 Jetpack Glance 的体验非常棒。基于 Compose 的方法感觉更加现代化、灵活,并且与我们现在构建其余界面的方式保持一致。它使我们能够更自然地表达 widget 布局,重复使用熟悉的 Compose 组件,并更快地迭代界面更改。我们之前使用 RemoteViews 时面临的许多界面限制不再是问题,这使得构建更符合我们应用设计和体验的 widget 变得更加容易。” - Divij Gupta
使用入门
如需开始使用 Jetpack Glance 并了解本文中提及的技术,请参阅以下指南:
- Jetpack Glance 概览
- Android 上的 widget 设计页面
- 规范 widget 布局
- 生成的 widget 预览
- widget 质量层级
- 应用内 widget 固定
- 动态配色
- 调整大小
- 配置 activity
请参阅其他 widget 案例研究:
- Google 的“通讯录”应用使用 Jetpack Glance 将创建新 widget 的速度提高了 25%
- SoundCloud 使用 Jetpack Glance 在短短 2 周内构建了“喜欢的曲目”widget
1:Diniz,G.,Korkes,L.,Tristão,L. S.,Pelegrini,R.,Bellodi,P. L.,&Bernardo,W. M. (2023 年)。The effects of gratitude interventions: a systematic review and meta-analysis. einstein (Sao Paulo)., 21, eRW0371. https://doi.org/10.31744/einstein_journal/2023RW0371
2:Bohlmeijer,E.,Kraiss,J.,Schotanus-Dijkstra,M.,&ten Klooster,P. (2022 年)。Gratitude as mood mediates the effects of a 6-weeks gratitude intervention on mental well-being: post hoc analysis of a randomized controlled trial. Front. Psychol., 12, 799447. https://doi.org/10.3389/fpsyg.2021.799447
-
案例研究Ultrahuman 是一家面向消费者的健康科技初创公司,该公司根据 RING Air 和 M1 Live 连续血糖监测仪 (CGM) 等可穿戴设备提供的生物识别数据,为用户提供每日健康状况分析。
Amrit Sanjeev, Trevor Johns • 阅读用时:2 分钟 -
年 月 日年 月 日
案例研究由于大多数 Android 应用都采用 Kotlin 作为主要语言,因此 kotlinx.coroutines 已成为异步编程的事实标准。该库提供了一种设计合理且结构化的方式来管理 Kotlin 原生的并发流。
Jonathan Starup, Andrei Shikov • 阅读用时:7 分钟 -
案例研究众所周知,性能下降问题很难重现,这使得性能下降成为移动开发者的巨大瓶颈。
每周通过电子邮件接收最新的 Android 开发洞见 每周。