这是我多年来断断续续研究的问题,但从未找到答案。我发现 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 上填充下一个/上一个曲目按钮。