MPMusicPlayer错误,域名为MPErrorDomain,代码为4?

7

我遇到了音乐播放器的问题,大部分歌曲都会出现错误。

Error Domain=MPErrorDomain Code=4

测试设备已订阅Apple Music,这些曲目在Apple Music应用中运行良好,但在该应用上却出错了!

以下是代码:

let applicationMusicPlayer = MPMusicPlayerController.systemMusicPlayer()
 applicationMusicPlayer.setQueueWithStoreIDs([ID])

      if #available(iOS 10.1, *)
      {

        applicationMusicPlayer.prepareToPlay { (error) in

            if (error != nil)
            {
                print("[MUSIC PLAYER] Error preparing : \(String(describing: error))")
                return
            }else
            {
                self.start_timer();
                self.applicationMusicPlayer.play()
            }

        }

      }else
      //Play directly ios below version 10.1
      {
        self.applicationMusicPlayer.play()
      }

    }

但是,当出现这个错误时,我尝试过去苹果音乐播放器中播放它,它可以工作,然后我回到我的应用程序中,从我的应用程序中播放它也可以正常工作,所以我需要去苹果音乐应用程序中播放无法在我的应用程序中播放的曲目才能使其在我的应用程序中工作!这很奇怪,有什么想法吗?

备注:测试设备拥有苹果音乐订阅。


这些出错的歌曲是已经下载到设备上了吗?还是它们在用户的音乐库中,但没有下载到手机上? - Micah Wilson
@MicahWilson 这些歌曲来自远程 API,它提供带有 epf_id 的苹果音乐 <-- 存储在苹果商店中的 ID,其中一些有效,大多数会出现上述错误。 - Kodr.F
但当我转到苹果音乐并从那里播放时,它能够播放,然后当我回到我的应用程序并从那里播放时,也可以无错误地播放。 - Kodr.F
我从类似的代码中收到了完全相同的错误。我建议向苹果公司开放一个雷达(我已经这样做了),因为MPMusicPlayerController已经严重混乱了一段时间,需要修复。 - vagrant
@vagrant,我在花费数天的时间后找到了解决方案,请查看我的问题:https://stackoverflow.com/questions/46022373/mpmusicplayercontroller-setqueuewithstoreids-playing-index - Kodr.F
1个回答

7

当我向播放列表中添加歌曲时,遇到了类似的问题,我通过使用以下方法解决了它:

DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(5)) {
    // Code
}

我建议在准备前或后稍微等待一下。
5秒可能太长了,但你可以从那里开始。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接