iOS 16/17 下 MPMusicPlayerController nowPlayingItem 无法切换歌曲问题求助
iOS 16/17 下 MPMusicPlayerController nowPlayingItem 无法切换歌曲问题求助
最近翻出自己几年前的旧App,发现个头疼的问题:MPMusicPlayerController的nowPlayingItem现在没法切换歌曲了!1-2年前这段代码明明运行正常,但在iOS 16和17上彻底失效。更麻烦的是这个功能只能在真机上测试,而我手头已经没有iOS 15的设备了,调试起来特别费劲。我试过各种写法调整,都没用,而且查官方文档,我的实现看起来完全符合要求。
我写了个测试代码,逻辑是先播放第一首歌,3秒后切换到第二首,但实际只有第一首能正常播放,切换的时候控制台会抛出两个错误:
Attempted to register account monitor for types client is not authorized to access: {(
"com.apple.account.iTunesStore"
)}
Failed to set now playing item error=<MPMusicPlayerControllerErrorDomain.5 "Unable to play item <MPConcreteMediaItem: 0x9e9f0ef70> 206357861099970620" {}>
补充下背景:测试用的歌曲都在本地已下载的播放列表里,我是Apple Music订阅用户——这些条件和几年前代码正常运行时完全没变。
下面是我的测试代码:
import MediaPlayer class Test { let player = MPMusicPlayerController.applicationMusicPlayer init() { let myPlaylistsQuery = MPMediaQuery.playlists() let playlists = myPlaylistsQuery.collections!.filter { $0.items.count > 2} let playlist = playlists[0] let songOne = playlists[0].items[0] let songTwo = playlists[0].items[1] player.setQueue(with: playlist) play(songOne) DispatchQueue.main.asyncAfter(deadline: .now() + 3) { self.play(songTwo) } } private func play(_ song: MPMediaItem) { player.stop() player.nowPlayingItem = song player.prepareToPlay() player.play() } }
备注:内容来源于stack exchange,提问作者Richard Witherspoon
相关产品推荐
相关产品推荐

