51 lines
1.8 KiB
Markdown
51 lines
1.8 KiB
Markdown
# iOS Widget(技术计划,V1 写死文案)
|
||
|
||
## 1. 计划目标
|
||
|
||
在 iOS 上实现真正可添加到桌面的小组件(WidgetKit Extension),V1 先展示**写死的美观文案**,不做 App->Widget 数据同步与更新。
|
||
|
||
- **构建方式**:方案 A(`expo prebuild` + Xcode)
|
||
- **点击跳转**:跳转到 App 的 Home
|
||
- **尺寸**:Small / Medium / Large 都支持
|
||
|
||
## 2. 默认技术决策
|
||
|
||
- **小组件实现**:iOS 原生 WidgetKit Extension(SwiftUI)
|
||
- **数据来源**:V1 写死在 Widget 代码内
|
||
- **跳转**:使用 Widget 的 `widgetURL` 打开 App(深链)
|
||
- **App 侧路由**:使用现有 `expo-router`
|
||
|
||
## 3. Deep Link 约定(点击小组件打开 Home)
|
||
|
||
### 3.1 Scheme
|
||
|
||
当前 `client/app.json` 中已存在:
|
||
|
||
- `expo.scheme = "client"`
|
||
|
||
因此小组件点击跳转使用:
|
||
|
||
- `client:///(app)/home`
|
||
|
||
> 说明:这是 expo-router 的路径形态;若你后续调整路由结构,需要同步更新此 URL。
|
||
|
||
## 4. 实施步骤(高层)
|
||
|
||
1. **预构建 iOS 原生工程**:生成 `client/ios/`
|
||
2. **在 Xcode 创建 WidgetKit Extension**:命名例如 `MindfulnessWidget`
|
||
3. **实现 3 种尺寸 UI**:Small/Medium/Large 都展示写死文案,但排版适配不同尺寸
|
||
4. **设置点击跳转**:为 Widget 配置 `widgetURL` 指向 `client:///(app)/home`
|
||
5. **本地运行验证**:在模拟器安装 App,添加桌面小组件并验证显示与跳转
|
||
|
||
## 5. 验收标准
|
||
|
||
- 可以在 iOS 桌面添加小组件(Small/Medium/Large)
|
||
- 小组件展示写死文案,排版美观
|
||
- 点击小组件能打开 App 并进入 Home
|
||
|
||
## 6. 风险与注意事项
|
||
|
||
- **Expo Go 不支持**:必须用 Xcode 运行预构建后的 App(或后续 EAS Build)
|
||
- **Bundle Identifier**:当前 `client/app.json` 使用 `com.anonymous.client`,仅适合本地验证;上线前需替换为真实 bundle id,并同步证书/签名
|
||
|