基本功能

This commit is contained in:
吕新雨
2026-01-28 22:13:55 +08:00
parent 049995692d
commit b485b52eec
6 changed files with 488 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
# 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 证书配置成本较高,需要在计划阶段明确落地路径