网络音频播放器 - iOS 下一首歌曲和上一首歌曲按钮不在控制中心

2024-01-10

这是我多年来断断续续研究的问题,但从未找到答案。我发现 MediaSession api 可用于填充歌曲数据,但下一曲目和上一曲目操作处理程序不会使下一个/上一个按钮出现在 iOS 控制中心中。

if ('mediaSession' in navigator) {
    navigator.mediaSession.metadata = new MediaMetadata({
        title: '',
        artist: '',
        album: '',
        artwork: []
    });

    navigator.mediaSession.setActionHandler('play', () => { /* Code excerpted. */ });
    navigator.mediaSession.setActionHandler('pause', () => { /* Code excerpted. */ });
    navigator.mediaSession.setActionHandler('stop', () => { /* Code excerpted. */ });
    navigator.mediaSession.setActionHandler('seekbackward', () => { /* Code excerpted. */ });
    navigator.mediaSession.setActionHandler('seekforward', () => { /* Code excerpted. */ });
    navigator.mediaSession.setActionHandler('seekto', () => { /* Code excerpted. */ });
    navigator.mediaSession.setActionHandler('previoustrack', () => { /* Code excerpted. */ });
    navigator.mediaSession.setActionHandler('nexttrack', () => { /* Code excerpted. */ });
    navigator.mediaSession.setActionHandler('skipad', () => { /* Code excerpted. */ });
}

我发现 AudioContext api 听起来很有希望,因为苹果在他们的文档中提到了它,但随后 MediaSession 元数据停止工作,并且下一个/上一个曲目按钮仍然不会出现。

context = new AudioContext();

audioElement = document.querySelector('audio');

const track = context.createMediaElementSource(audioElement);

track.connect(context.destination);

audioElement.play()

有人对此有经验吗?我附上了一些图像,显示了我想要完成的任务,第一张图像显示了仅使用 MediaSession api 给我提供的控件(向前/向后跳 10 秒),第二张图像显示了 Spotify Web 应用程序的控件能够获取(前进/后退按钮)。

我一生都无法在 iOS 上填充下一个/上一个曲目按钮。


看来这是 iOS 和 ipadOS 最近的一个变化,你不能同时拥有seekbackward, seekforward and previoustrack, nexttrack一起。因此,您需要选择要进行下一个和上一个跟踪操作,还是在 iOS 上向后和向前搜索。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络音频播放器 - iOS 下一首歌曲和上一首歌曲按钮不在控制中心 的相关文章

随机推荐

  • 将对象设置为“Nothing”有什么好处

    我注意到 Stack Overflow 社区的一些成员会使用Set Object Nothing在结案程序中 我能够找到为什么这对于 Access 实例很有用 但在为 Excel 执行此操作时没有令人满意的答案 所以我的问题是在 VBA 中
  • 如何向delphi项目添加库路径?

    我有几个预编译的 第三方 库需要在我的项目中使用 如果我将 foo a 放在项目文件夹的根目录中 我可以构建它 但是 我有一个 32 位版本和一个 64 位版本的库 我不想交换foo a with foo 32 a and foo 64 a
  • 通过证书身份验证实现传输安全

    当我访问我的 web 服务 localhost MyService MyService svc 时 出现以下错误 服务 SslRequireCert 的 SSL 设置与 IIS Ssl SslNegotiateCert 的 SSL 设置不匹
  • 量角器、茉莉花和第一次失败时的停止测试

    在尝试弄清楚如何使某些 jasmine 期望语句依赖于先前的期望语句时 我发现在 Jasmine 2 3 0 之前 没有办法 看第一次期望失败后停止茉莉花测试 https stackoverflow com questions 221191
  • Meebo 等网站如何存储用户名和密码?

    我最近用过Meebo http www meebo com 我必须承认 我对在这样的网站中输入 IM 登录信息有点偏执 他们如何存储我的每个单独 IM 服务的用户名和密码 只有当某个网站获取我的密码并对其执行某种类型的不可逆转的单向功能时
  • WMPLib 经常停止播放

    我用以下方法播放mp3和m4as private void playmp3 string path WMPLib WindowsMediaPlayer a new WMPLib WindowsMediaPlayer a URL path a
  • 如何在特定代码行之后停止 set.seed() ?

    我想在特定行之后结束 set seed 的范围 以便对其余代码进行真正的随机化 这是一个示例 其中我希望 set seed 适用于 rnorm 第 4 行 但不适用于 nrow 第 9 行 set seed 2014 f lt functi
  • PopupMenu 单击导致 RecyclerView 滚动

    我里面有一个溢出按钮CardView in Recyclerview 每当我单击按钮时 我都会显示一个弹出菜单 但也会显示RecyclerView正在向下滚动一项 谁能帮我停止这种不必要的滚动吗 基本上我试图复制与 Playstore 中相
  • 使用表单事件动态生成提交的表单

    我对 FormEvents 有一个小问题 我想要动态填充 3 个字段 我解释一下 我有3个字段 项目 gt 框 gt 单元格 用户选择一个项目 框列表被更新 他选择一个框 单元列表被更新 为此 我使用 FormEvent 就像文档中所说的那
  • 即使退出该功能后,.NET 内存也不会释放

    我有一些 C 代码可以读取huge文件 经过一些操作后 将其引用设置为 null 并退出该函数 但内存不会释放 XmlDocument xmlDoc new XmlDocument xmlDoc LoadXml xmlString XmlS
  • 从数据库中查找视觉相似照片的算法?

    TinEye Google 和其他公司提供 反向图像搜索 您可以上传照片 几秒钟内它就会找到类似的照片 这些算法有开源版本吗 我知道 SIFT 和其他用于查找 视觉上相似 照片的算法 但它们仅适用于将一张照片直接与另一张照片进行比较 即 找
  • 创建一个用于从 Java/Clojure 执行的 jar 文件

    我想创建一个用 java 和 clojure 实现的 jar 文件来执行 这就是我采取的步骤 让我的java代码调用clojure代码 我可以生成一个包含 clojure 核心和我的 clojure 代码的 jar 文件 ThingOne
  • 活动指示器未出现

    我有一些运行时间约为 0 2 秒的繁重代码 我这样设置活动指示器 但是 它并没有显示出来 而是整个屏幕冻结了大约 0 2 秒 直到代码完成 func heavyWork self actvityIndicator startAnimatin
  • Ajax.ActionLink 在表中的标题后插入?

    我有一个 table 有一个标题行 我试图在标题行下添加一个项目 但似乎无法向ActionLink功能 InsertionMode InsertBefore将标题行的 ID 指定为更新目标只是将该行放在表的顶部 Replace替换表格的标题
  • 多次调用 CryptHashData

    我推测这是在创建一个 md5 哈希值 但对到底要哈希的内容感到困惑 char val1 4 DWORD val2 CryptCreateHash hCryptProv CALG MD5 0 0 hHash Creates hash obje
  • 在 MathJax 中显示长除法符号 )‾‾‾‾‾‾ 的方法

    有没有办法在 MathJax 中格式化长除法 使其看起来像这样 125 Explanations 4 500 4 4 1 4 10 5 4 1 8 4 2 8 20 10 8 2 20 4 5 20 0 20 20 0 但显然格式正确 这是
  • Django:SECRET_KEY 的环境变量不起作用

    I have SECRET KEY os environ SECRET KEY in my prod py and SECRET KEY secret string在我的 bashrc 中 这会导致 502 错误 但如果我设置SECRET
  • C++11 方法创建一个可以在需要时“停止”的计时器

    我必须每隔 X 秒调用一个函数来显示长时间运行的函数的进度 但如果该函数在进度更新的下一个刻度之前结束 我想删除通知 我最近刚刚开始使用 C 11 我不知道是否有办法使用正确的 c 11 语法 对象来实现此目的 基本上 我试图弄清楚是否有一
  • gridview 突出显示当前行

    是否有内置方法可以突出显示网格视图中当前选定的行 我的 gridview 中的每一行都有一个按钮 通过 ButtonField 当用户按下此按钮时 背景颜色会发生变化 我这样做 Protected Sub gvTransferOwner R
  • 网络音频播放器 - iOS 下一首歌曲和上一首歌曲按钮不在控制中心

    这是我多年来断断续续研究的问题 但从未找到答案 我发现 MediaSession api 可用于填充歌曲数据 但下一曲目和上一曲目操作处理程序不会使下一个 上一个按钮出现在 iOS 控制中心中 if mediaSession in navi