Files
mindfulness/spec_kit/iOS Widget/spec.md
2026-01-28 22:13:55 +08:00

85 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# iOS Widget高层规范
## 1. 背景与目标
当前客户端仅在设置页展示了“小组件说明文案”,并未实现真正的 iOS 桌面小组件。
本需求用于实现**真正的 iOS 小组件**WidgetKit Extension使用户可以在 iOS 桌面添加小组件并看到“情绪文字/正念短句”等内容。
### 目标
- **可添加到桌面**:支持在 iOS 桌面添加小组件WidgetKit
- **V1本期写死内容**:小组件展示一段美观文案(先写死,不做数据同步/更新)
- **可点击跳转**:点击小组件可跳转回 App 指定页面(默认 Home
### 非目标(本阶段不做)
- 不承诺严格准点刷新(受 iOS 系统调度限制)
- 不做复杂的小组件交互配置(如需可后续拆分)
- 不要求 Android Widget仅 iOS
- **V1 不做数据更新**:不做 App -> Widget 数据共享与更新触发App Group 留到后续版本)
## 2. 关键结论与约束(必须接受)
- **Expo Go 不支持 WidgetKit**:必须使用 **Development Build / 预构建后的原生工程 / EAS Build** 才能安装带小组件扩展的 App
- **需要原生扩展**iOS 小组件必须创建 **WidgetKit ExtensionSwiftUI**
- **V1 不需要 App Group**:因为内容写死在 Widget 内部;后续做数据共享时再引入 App Group
## 3. 小组件功能需求(高层)
### 3.1 展示内容
- 展示一段“情绪文字/正念短句”
- 背景支持:
- 纯色或渐变(优先)
- 图片(可选,后续)
- 文案需“美观可读”,适配暗色模式(可选)
### 3.2 尺寸支持
- 支持 iOS 常见尺寸:
- Small
- Medium
- Large
### 3.3 更新策略
V1不做更新策略内容写死。后续版本可扩展
- 固定间隔更新(例如每天/每小时)
- App 驱动更新App 写入新内容Widget 触发 reload系统仍可能延迟
### 3.4 点击跳转
- 点击小组件可打开 App 并跳转到指定页面:
- 默认Home
- 可选Favorites
## 4. 数据共享与持久化(高层)
V1不做数据共享与持久化写死文案
后续版本V2再引入 App Group共享 UserDefaults与数据来源策略
- `widget.text``widget.updatedAt``widget.lang``widget.theme`
- 数据来源可选Home 当前/最近 Like/随机 mock
## 5. 多语言(与 App 一致)
- 语言码沿用客户端:`zh-CN/en/es/pt/zh-TW`
- V1Widget 内可先写死单语(例如中文)或做最小的本地化(可选)
- V2建议由 App 端选择语言并写入共享数据,降低 Widget 端 i18n 复杂度
## 6. 验收标准
- 可以在 iOS 桌面搜索并添加小组件
- 小组件能显示一段美观文案(至少支持 Small
- 点击小组件能打开 App 并进入预期页面
## 7. 风险与注意事项
- iOS 刷新频率限制:不可承诺“每分钟刷新”等高频
- App Group / Bundle ID 配置错误会导致 Widget 读不到数据
- Dev Build / EAS 证书配置成本较高,需要在计划阶段明确落地路径