我开发了一个名为Wordy Bunch的Devvit web应用。iPhone玩家报告称背景音乐在整个回合中会掉落,而短音效则继续播放。我添加了一个每回合的诊断行来找出原因。以下是它显示的内容。

设置

- 音乐:两个<音频> 元素,在开始按键上解锁,静音播放()和暂停(),然后在几秒钟后播放并在回合末尾附近切换。
- 音效:Web音频,一个AudioContext,解码缓冲区。
- Reddit iOS应用,iOS 18.7,iPhone 15 Pro Max。
同样在iPhone XS Max上。
wifi和移动数据。

诊断行显示静音回合中的内容

- play()被拒绝,包括在回合期间内的重试,指针上升和按键下降处理程序中。
- 元素完全缓冲:readyState 4,networkState 1,error null,170 s缓冲。
- AudioContext保持运行整个时间,效果正常播放。
- document.visibilityState是可见的。

诊断行显示几分钟前相同手机相同构建的内容

- 同样的元素在127 s回合中播放119 s,没有拒绝。
其他事实

- 在相同手机上运行的同一应用在Safari中从未显示过。
- 玩家说它会在游戏之间出现和消失,并且重新启动Reddit应用不会清除它。
- 单独观察:在Reddit应用中,音频环/静音开关会静音<音频> 媒体以及Web音频。
Safari通过静音开关播放<音频> 媒体。
早期 sighting,仅音效:https://www.reddit.com/r/Devvit/comments/1p1z069/

问题

  1. Reddit应用的音频会话处理是否已知会将WebKit的媒体会话留在一个状态,使新媒体播放被拒绝?
  2. 在iOS上有推荐的方法来在Devvit web视图中播放循环音乐吗?还是应该通过Web音频来处理一切?
  3. 有人见过NotAllowedError从之前解锁的元素内部的触摸事件吗?很高兴分享原始日志行或测试构建。