# WeChat 模块业务逻辑

## 模块职责

WeChat 模块封装微信 Open SDK 的注册、Universal Link 回跳与分享能力。当前仅接入分享（文本、网页、图片），不调用微信支付 API。

## 配置

- `WeChatConfig`：AppID、Universal Link、AASA 部署参考信息
- `Info.plist`：URL Scheme（AppID）、`LSApplicationQueriesSchemes`
- `suixinkan.entitlements`：`applinks:www.zhifly.cn`

### Universal Link

- 地址：`https://www.zhifly.cn/suixinkan/`（必须以 `/` 结尾）
- 运维需在 `https://www.zhifly.cn/.well-known/apple-app-site-association` 部署 AASA 文件
- 示例见 [`docs/apple-app-site-association.example.json`](../../docs/apple-app-site-association.example.json)

### 微信开放平台

移动应用开发信息需填写：

| 字段 | 值 |
|------|-----|
| iOS Bundle ID | `com.yuanzhixiang.suixinkan` |
| Universal Links | `https://www.zhifly.cn/suixinkan/` |

## 核心类型

| 类型 | 职责 |
|------|------|
| `WeChatManager` | SDK 注册、URL/UL 回调、`WXApiDelegate` 分享结果 |
| `WeChatShareService` | 对外分享 API：`shareText` / `shareWebPage` / `shareImage` |
| `WeChatShareSheet` | SwiftUI 分享面板（好友/朋友圈/系统兜底） |
| `WeChatThumbImageProcessor` | 缩略图压缩至 32KB 以内 |

## 回调链路

1. 启动：`AppDelegate.didFinishLaunching` → `WeChatManager.registerIfNeeded()`
2. URL Scheme：`AppDelegate.openURL` + `suixinkanApp.onOpenURL`
3. Universal Link：`AppDelegate.continueUserActivity` + `suixinkanApp.onContinueUserActivity`

## 业务接入

邀请页 `PhotographerInviteView` 通过 `WeChatShareSheet` 分享邀请链接。

后续举报、排队二维码等入口可复用 `WeChatShareService`。

## 真机验收

1. Safari 访问 `https://www.zhifly.cn/suixinkan/test`，下拉应出现打开 App 入口
2. 邀请页点击「分享」→ 微信好友/朋友圈，首次可能出现「正在连接」属正常
3. 未安装微信时走系统分享兜底

## 上线前

- 替换 `WeChatConfig.appID` 与 Info.plist URL Scheme
- 确认开放平台 Universal Link 与代码一致
- 确认 AASA 文件可公网 HTTPS 访问
