Dramivio项目文档下载文档包 ↗
2026.10.04 UTC · Android原生缓存队列本地实现与复审进展 · 真实服务尚未发布Markdown

视觉按最新原型,业务按已确认PRD。现有代码为满足设计而改造。执行见按设计实施与任务卡;当前代码与验证范围见消费者功能页。

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说明

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

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

原生能力仍取实际安装包的 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。也可导入本报告旁的检查文件,并传入项目目录:

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没有上线。

本轮复核 · 验证记录 · 开发状态