# WordLoop iOS App

原生 iOS 壳应用，内嵌最新 Vue 前端构建产物，通过 `WKWebView` 展示，API 指向所选服务器。

## 与 H5 同步

Xcode 编译前会自动执行 `ios/scripts/build-web-assets.sh`，将 `frontend/` 最新代码构建并复制到 App 包内的 `www/`。因此首页（日常积累 / 词书练习双模式）、设置页（微信风格账号安全）等与本地 H5 保持一致，不依赖生产站是否已部署新版。

手动构建前端资源：

```bash
bash ios/scripts/build-web-assets.sh
```

## 服务器配置

| 环境 | API 地址 | 说明 |
|------|----------|------|
| **生产** | `https://w.tkmind.cn/api` | 默认环境 |
| **本地** | `http://127.0.0.1:18004/api` | 对应 `./start.sh` 后端；真机请改为电脑局域网 IP |

底部可展开切换服务器。界面与登录在同一 WebView，勾选「记住登录状态」后下次打开自动进入首页。

## 打开工程

```bash
open ios/WordLoop/WordLoop.xcodeproj
```

在 Xcode 中选择你的 **Team**（Signing & Capabilities），然后运行到模拟器或真机。

## 本地调试

1. 项目根目录启动服务：

```bash
./start.sh
```

2. iOS 模拟器：底部展开服务器栏，选「本地服务器」，默认 `http://127.0.0.1:18003`（API 自动映射到 18004）。

3. 真机：将本地地址改为 Mac 局域网 IP，例如 `http://192.168.1.8:18003`。

## 架构说明

- **原生层**：SwiftUI + WKWebView + 底部服务器栏
- **界面层**：内嵌 `frontend` 构建产物，经 `wordloop://` 本地协议加载（避免 `file://` 白屏）
- **数据层**：请求发往所选服务器的 `/api`

内嵌页通过 `loadHTMLString` 加载，`app.js` 构建时会内联到 `</body>` 前（避免在 `<head>` 执行时 `#app` 尚未存在导致白屏）。

若出现白屏，请先执行 `bash ios/scripts/build-web-assets.sh`，再在 Xcode **Product → Clean Build Folder** 后重新 Run。
