1.6 KiB
1.6 KiB
屏幕常亮与前台自动续播
目标
- Android 与 iOS 前台保持屏幕常亮,不引入插件或依赖。
- 用户主动暂停后切后台再回前台,在播放器与票据状态安全时自动续播。
- 锁定、blocked、票据失败、错误态及浮层遮挡场景不得强制起播。
实施步骤
- Android
MainActivity.onCreate添加FLAG_KEEP_SCREEN_ON,保留现有渠道逻辑。 - iOS
AppDelegate设置UIApplication.shared.isIdleTimerDisabled = true。 - 为
PlaybackSession增加无浮层、路线可见且 active 播放器可用的恢复判断。 - 调整
PlayerLogic.onLifecycle,在现有 PiP 复位和过期票据刷新流程后安全设置播放意图。 - 补用户暂停恢复、锁定/票据失败不恢复、后台保存并暂停测试。
- 执行
dart analyze lib test与flutter test --no-pub,回填 PROGRESS 后提交合并。
风险 / 待确认
- 真机常亮和生命周期行为由 PM 验收,本次不启停服务、不操作设备。
- PiP 继续沿用现有可见性策略,不额外修改后台播放行为。
执行结果
- Android 主 Activity 已添加
FLAG_KEEP_SCREEN_ON,未改动 Flutter 渠道与 PiP 逻辑。 - iOS AppDelegate 已设置
UIApplication.shared.isIdleTimerDisabled = true。 - 用户主动暂停后回前台可安全恢复;过期票据会等待重取完成后再恢复。
- locked、blocked、票据错误、会话错误、解锁/浮层遮挡和 PiP 场景均不会强制续播。
- 后台仍先保存进度并暂停。
dart analyze lib test零告警,flutter test --no-pub580 项全过。- 未启停服务,未操作真机。