LESSON 35 / 575 分钟
WidgetKit 与 App Intents
把应用的少量信息和动作放到主屏幕、系统搜索或快捷指令中。
用你的前端经验理解
Widget 更像系统按时间线请求的轻量视图,而不是永远运行的小网页。App Intent 像可被系统调用的业务动作。
01 / 理解问题
为什么需要它
Widget 是应用内容的轻量投影,不是持续运行的小 App。它适合在桌面或锁屏展示下一件事、今日进度等可快速理解的信息。主应用仍负责复杂编辑,Widget 通过共享数据或合理的数据获取展示快照,点击或动作再把用户带到适合的功能。
它是怎样工作的
时间线提供一组条目与刷新策略,系统决定实际刷新机会。写完数据后请求刷新不等于立刻重绘。App Intents 描述系统可理解的动作与实体,使部分功能可以被快捷指令等入口使用;动作需要脱离当前页面也能验证参数、处理失败和正确保存。
02 / 掌握要点
把关键概念连起来
1
WidgetKit
提供时间线与快照,系统控制刷新预算。内容要在有限空间里有用,必要时跳回 App。
2
交互
交互式 Widget 可通过受支持的 Button/Toggle 与 App Intents 执行动作;可用性按平台和版本确认。
3
共享
Widget 通常有独立 Target/进程,通过 App Groups 等正确共享数据,不能直接依赖 App 内存单例。
03 / 案例推演
把阅读目标投影到 Widget
- 主 App 保存今日目标到共享仓库或共享容器,Widget 扩展只读取需要的最小摘要。
- 时间线在数据缺失时显示引导,在数据过期时避免把旧状态包装成实时结果。
- 点击目标携带明确的业务路由;若提供完成动作,执行时检查记录仍有效,并保证重复调用不会重复累计。
这里需要你亲自判断
不要用普通定时器期待 Widget 每秒刷新;也不要把整个复杂编辑页面塞进去。
04 / 动手验证
做一个小练习
为阅读清单设计一个展示待读数量、打开下一篇的小组件。
- 修改主 App 数据后观察 Widget 更新,说明数据保存与刷新请求的区别。
- 用无数据和已删除记录验证 Widget 的占位与点击行为。
展开参考思路与验收标准
Widget 应有独立可用的空状态,不能依赖主 App 当前进程中的全局变量。App Group 共享的是受控容器访问,不是把两个 Target 的内存合成一份。
05 / 检查理解
Widget 能否直接读取主 App 的内存单例?
答对理解题后即可标记完成