# iOS 在线媒体通道

2026-10-04。已在 juku-mobile 接入 iOS 媒体通道，继续使用 react-native-video 与 AVPlayer。App 源码允许具备原生能力的 iOS 先直连来源，失败后按既有同次播放路线转发，保留集数、位置、倍速和暂停状态。完整 iOS 构建及真机尚未验收。

## 本轮修改

播放器持久补丁新增 `DramivioMediaTransport.swift`，复用 Apple Network、URLSession 和 AVFoundation，没有新增付费组件或播放器框架。普通构造参数为媒体 URL、请求头和可替换的会话配置，显式 `start`/`close` 管理资源；RN 继续通过 VideoStage/PlayerScreen 使用。

设备上的监听只绑定127.0.0.1，把 AVPlayer 的 MP4/HLS 请求交给独立 URLSession。直连时流量由手机访问来源，网站不接收视频字节；直连失败后的网关仍由原 Go 服务处理。Apple 要求 AVPlayer 直接使用 HTTP 加载 HLS 分片，因此没有用资源加载器直接供给分片数据。[Apple HLS说明](https://developer.apple.com/forums/thread/113063)

独立会话关闭 Cookie 存储、系统凭据存储和 URL 缓存；来源仅接受原有 Referer/User-Agent。网关凭据只发往同源媒体路径，重定向重新检查边界。主清单、子清单、分片、初始化片段和密钥均映射到设备监听。MP4 按 Range 流式传送，发送完成后再继续上游读取；清单最多1MiB，最多8条连接及4096条资源映射。[Apple Cookie配置](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/httpcookiestorage) · [临时会话](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/ephemeral)

换源和播放器移除时关闭本次通道；清单不能安全映射时进入原播放失败路线。特定内容转向扩展暂不支持，不能借此直接跳出通道。播放器图片、控制层、选集和长按倍速沿用原实现。

原生能力仍取实际安装包的 VideoManager 常量；旧 iOS/Android 安装包不会因 JS 更新获得新能力。runtimeVersion 已改为4，需要重新编译安装包，不能只发 OTA。真实App资格、次数及缓存许可仍由原后端校验。

## 已验证

| 范围 | 结果 |
| --- | --- |
| App完整回归 | 276/276，TypeScript通过 |
| 原生系统SDK媒体检查 | 12/12 |
| 持久补丁重放 | 21个源文件与当前安装内容一致 |
| Android完整构建 | assembleRelease通过；运行版本4；DEX、Hermes、原生模块及签名检查通过 |
| iOS RCTVideo/Manager接线 | ARM64 iOS语法parse通过；没有完整Pods类型检查 |

12项 SDK 检查使用真实 macOS Network/URLSession/AVFoundation。实际本地 HTTP 监听经过 MP4/HLS 准备、多个数据块流式发送、拖动范围、HEAD、跨CDN清单映射、Cookie隔离、网关边界及关闭清理。上游为URLProtocol适配器，视频由FFmpeg生成；不是实际CDN或iOS实体机结果。

新增 App 检查包括旧原生包拒绝、iOS直连计划与同次播放回退保留位置/倍速。Native/React适配器测试不等于真机首帧、硬件解码或后台网络验收。

Android产物在项目 `android/app/build/outputs/apk/release/app-release.apk`，使用已有debug签名。已检查业务地址与更新地址为本机测试地址；没有安装、上传或发布。Expo刷新了Android生成目录，源码与持久补丁保留。

## 可导入检查函数

项目 `tests/ios-media.cjs` 导出 `runIOSMediaTests`。也可导入本报告旁的检查文件，并传入项目目录：

```js
const {runIOSMediaTests} = require('./dramivio-ios-media-check.cjs');
const report = runIOSMediaTests({
  projectDirectory: 'juku-mobile',
  ffmpeg: '/opt/homebrew/bin/ffmpeg',
});
```

本机目前仅有 Command Line Tools，没有完整Xcode。iOS模拟器/Pods构建、真实手机、实际来源和地域网络、首帧与持续播放仍待验证；业务服务与App没有上线。

[本轮复核](dramivio-ios-media-review.md) · [验证记录](dramivio-consumer-validation.json) · [开发状态](dramivio-development-status.md)
