LESSON 35 / 575 分钟

WidgetKit 与 App Intents

把应用的少量信息和动作放到主屏幕、系统搜索或快捷指令中。

用你的前端经验理解

Widget 更像系统按时间线请求的轻量视图,而不是永远运行的小网页。App Intent 像可被系统调用的业务动作。

为什么需要它

Widget 是应用内容的轻量投影,不是持续运行的小 App。它适合在桌面或锁屏展示下一件事、今日进度等可快速理解的信息。主应用仍负责复杂编辑,Widget 通过共享数据或合理的数据获取展示快照,点击或动作再把用户带到适合的功能。

它是怎样工作的

时间线提供一组条目与刷新策略,系统决定实际刷新机会。写完数据后请求刷新不等于立刻重绘。App Intents 描述系统可理解的动作与实体,使部分功能可以被快捷指令等入口使用;动作需要脱离当前页面也能验证参数、处理失败和正确保存。

把关键概念连起来

1

WidgetKit

提供时间线与快照,系统控制刷新预算。内容要在有限空间里有用,必要时跳回 App。

2

交互

交互式 Widget 可通过受支持的 Button/Toggle 与 App Intents 执行动作;可用性按平台和版本确认。

3

共享

Widget 通常有独立 Target/进程,通过 App Groups 等正确共享数据,不能直接依赖 App 内存单例。

把阅读目标投影到 Widget

  1. 主 App 保存今日目标到共享仓库或共享容器,Widget 扩展只读取需要的最小摘要。
  2. 时间线在数据缺失时显示引导,在数据过期时避免把旧状态包装成实时结果。
  3. 点击目标携带明确的业务路由;若提供完成动作,执行时检查记录仍有效,并保证重复调用不会重复累计。

这里需要你亲自判断

不要用普通定时器期待 Widget 每秒刷新;也不要把整个复杂编辑页面塞进去。

做一个小练习

为阅读清单设计一个展示待读数量、打开下一篇的小组件。

  1. 修改主 App 数据后观察 Widget 更新,说明数据保存与刷新请求的区别。
  2. 用无数据和已删除记录验证 Widget 的占位与点击行为。
展开参考思路与验收标准

Widget 应有独立可用的空状态,不能依赖主 App 当前进程中的全局变量。App Group 共享的是受控容器访问,不是把两个 Target 的内存合成一份。

Widget 能否直接读取主 App 的内存单例?

继续查阅官方资料
Apple Developer 官方资料

本课聚焦核心认知。具体 API、系统要求与发布政策,以当前官方文档和工程验证为准。

答对理解题后即可标记完成