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

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

原生缓存队列

本页目录接入方式重试与转发位置与账号验证验收范围

2026-10-04(UTC)。Android 与 iOS 已接入原生选集接力,App 通过同一个批量接口交接原订单。最多两集同时处理,排队不扣次,槽位空出后才准备下一集。视频继续由 Media3、URLSession 和 AVAssetDownloadURLSession 下载。

普通渠道按已确认范围播放:Web 每天10集、App每天50集,共享逐集记录;当天重播或换线路不重复扣次。设备实际直连失败后才转发。复制直链到外部播放器后的观看不属于本站次数控制。

接入方式

后台 POST /api/consumer/offline/queue 交接已有订单和原选集,复用 Better Auth、安装资格、渠道权限、下载策略和逐集账本。交接只读取元数据,不解析视频、不占视频槽、不预留或扣次。短期地址绑定原订单/设备/选集,邮箱 Cookie 和 Authorization 留在服务器 RAM。

交接期限取30分钟、官方会话期限和安装资格期限中的最早时间。后台批量入口 createOfflineAPI(owner).queue(order),App入口 createNativeOffline().enqueueQueue(lease, order, options);supportsQueue() 判断安装包能力。旧安装包保留原前台调度。

Android 将整个订单先保存到 Media3 索引,再启动两工人队列。iOS 将待办信息保存到已有原生清单,再由原生调度器读取进度和准备许可;实际媒体任务进入原来的四个系统下载会话。已暂停的系统任务也由两槽调度恢复,不能绕过并发上限。iOS 后台事件完成通知等待当前元数据请求、文件验证和必要的转发释放;系统视频任务登记后才交还回调。

重试与转发

先保存原许可、固定到期时间和进度版本,再触发视频下载。实际直连网络失败后才申请原资产转发;转发必须保持原订单、资产、许可、设备和到期时间。只删除本集未完成的数据。Wi-Fi等待、用户暂停和容量不足不触发转发。

正常终态等待准确的转发释放返回204,再让下一集使用槽位。结果不明的准备或转发请求暂停待办选集,用原订单恢复。重试不另建订单、不重复扣次、不延长媒体许可。交接失效不使已完成、仍有效的文件失效。

iOS取消已经发出的准备/转发POST后,保留最长20秒的结果回调;迟到的转发许可只用于释放其原RAM槽,不能重新开始视频。读请求可立即取消。重复交接保留用户暂停,只有明确重试才恢复。源地址、来源头和控制地址不进入JS订单持久化。

位置与账号

原生列表返回白名单资产许可与进度版本,App断网也能把后台完成的集数恢复到原订单。已有未补传位置不会被新读取的进度覆盖。原生冷启动锁定账号;任务清单不代表登录,确认本机身份后才能显式恢复。App本机允许保存离线视频,网站仍只使用RAM。

验证

检查 当前结果 范围
App全量与类型 371/371,类型通过 实际App模块、SDK/React及明确的HTTP/存储/原生适配器
Apple源码与队列 227/227,其中34项新增队列检查 macOS Foundation/AVFoundation、实际原生清单和调度器、真实URLSession回调;媒体任务为明确的系统入队适配器
Android原生 54/54 前一阶段实际Media3、SQLite、DownloadHelper、缓存和两工人;本轮重新验证;Android源码未改
原生补丁 26个源码文件,干净应用通过 原版react-native-video 6.19.2;不包含构建产物
Android产物 runtime11,ARM64本地构建通过 debug签名测试包;不能代替设备/后台验收
后台交接联合运行 沿用7组通过、一次扣次 此前公开Go/Better Auth/RAM PostgreSQL;OTP、安装资格和媒体为明确夹具
平台与Go 沿用273/273、race16通过/2跳过 本轮没有后端代码变更

新增检查覆盖三集两槽接力、MP4/HLS原生入队、Wi-Fi策略、暂停、切号、迟到取消、容量拒绝、同许可转发、准确释放后接力、重复交接、冷启动身份锁、进度恢复、未知POST、跨来源控制地址、重定向及超大JSON拒绝。

验证记录。本轮为主Agent源码复核与故障测试,没有新增独立子Agent复审。

验收范围

注册修复前的runtime11包已在Android36模拟器接实际Go API、Better Auth和隔离RAM PostgreSQL完成三集后台接力、断网冷启动、连续播放与联网位置补传。Wi-Fi等待0扣次,三集完成共3扣次;最终服务器视频RAM、任务和转发会话为0。测试媒体为6秒普通MP4,邮件发送和安装资格为明确夹具。当前HLS、系统强杀和实体设备仍待验收。模拟器记录。iOS仍需完整Xcode/iPhoneOS SDK构建和真机后台验收,本机只有macOS SDK。本轮测试证明原生调度与元数据回调行为,不能证明iPhone系统何时允许后台执行。

系统强退、拒绝后台运行或交接到期不承诺无限续传;返回前台后按原订单恢复。真实来源/SMTP、安装资格、邀请观看证明、完整设计/剧库/生产负载与业务发布仍待完成。

本地测试包连接本机API/OTA,使用debug签名。CF本次只同步静态文档;正式App、API和OTA尚未发布。

本轮发现并修正本地构建入口读取.env中正式地址的问题。新包在prebuild和JS打包时明确注入本机API/OTA,并检查实际APK内容;旧runtime10产物撤出本机测试下载列表。

首次注册设备遗漏已修复:旧本机签名设备记录在发送官方邮箱OTP前,通过已有Go握手刷新;刷新失败不发OTP。新增3项回归、实际SDK/Go/Better Auth/RAM PostgreSQL联调及最新runtime11 APK的Android36首次注册均通过。原注册时间保持不变,设备记录一致,测试未产生邀请奖励或安装资格。此前三集播放运行中的设备为空观察保留为历史记录。注册修复验证。

最新 runtime11 CENC 模拟器验收已通过:关闭模拟器无法报告有效 Wi‑Fi 时的 Wi‑Fi-only 开关后,3 集加密媒体全部缓存并由离线播放器打开;3 次扣次、7 次媒体请求,服务器转发会话、视频 RAM、解码任务均为0。恢复网络后3条位置均上传,completed=false,不会把离线播放当作邀请可信观看。完整真机、真实来源和生产媒体仍待验收。CENC runtime11 验证。