【问题标题】:Apple Music Song Playback Not WorkingApple Music 歌曲播放不工作
【发布时间】:2018-05-20 04:09:01
【问题描述】:

尝试使用以下代码使用 MPMusicPlayerController 播放歌曲

let musicPlayerController = MPMusicPlayerController.systemMusicPlayer

func beginPlayback(itemID: String) {

   let descripter = MPMusicPlayerStoreQueueDescriptor(storeIDs: [itemID])
    descripter.startItemID = itemID

    musicPlayerController.setQueue(with: descripter)

    musicPlayerController.prepareToPlay(completionHandler: {(error : Error?) in
        print()
        self.musicPlayerController.play()
    })


}

但是,在我经常看到的控制台中

[MPMusicPlayerController prepareToPlay] 超时

要么什么都没有发生,要么播放器会从错误的歌曲开始,可能是我设备上的本地歌曲。

我正在尝试播放 Apple Music Library 中的一首歌曲,我使用他们的 API 来获取我的播放列表,然后是歌曲,曲目响应如下所示:

attributes =     {
    albumName = Villains;
    artistName = "Queens of the Stone Age";
    artwork =         {
        height = 1200;
        url = "https://is3-ssl.mzstatic.com/image/thumb/Music117/v4/8b/19/86/8b19867d-f500-5396-bd6f-e89c0a69adcd/dj.tvdpbelw.jpg/{w}x{h}bb.jpg";
        width = 1200;
    };
    durationInMillis = 341825;
    name = "Feet Don\U0092't Fail Me";
    playParams =         {
        id = "i.B0VN4GGf7Eldk";
        isLibrary = 1;
        kind = song;
    };
    trackNumber = 1;
};
href = "/v1/me/library/songs/i.B0VN4GGf7Eldk";
id = "i.B0VN4GGf7Eldk";
type = "library-songs";

}

我在这里使用“id”作为 itemID 播放参数来开始播放 (i.B0VN4GGf7Eldk)。这是对的还是应该是别的东西?试图弄清楚为什么这不会播放。

编辑:

在控制台中也看到了这个

[SDKPlayback] -[MPMusicPlayerController prepareToPlayWithCompletionHandler:] 完成错误:错误域=MPCPlayerRequestErrorDomain Code=1“未提供命令。” UserInfo={NSDebugDescription=未提供命令。} [SDKPlayback] -[MPMusicPlayerController play] 完成错误:Error Domain=MPCPlayerRequestErrorDomain Code=1000“发送命令 0 失败”UserInfo={NSDebugDescription=发送命令 0 失败,NSUnderlyingError=0x1c8045b20 {Error Domain=MPCPlayerRequestErrorDomain Code=1000“发送失败发送命令 0 (MRMediaRemoteCommandHandlerStatus = 1)" UserInfo={NSDebugDescription=发送命令 0 失败 (MRMediaRemoteCommandHandlerStatus = 1), MPCPlayerErrorKeyMediaRemoteCommandHandlerStatus=1}}}

【问题讨论】:

  • prepareToPlay 回调中的错误变量是否设置为任何值?尝试打印出来看看是否有错误对象被创建。
  • @jeremyms 。该错误实际上是 nil 但是,控制台中有一堆错误。添加到帖子中。
  • @NickDK 我现在也遇到了这个问题。你有没有找到解决这个问题的方法?

标签: ios swift cocoa-touch mpmusicplayercontroller apple-musickit


【解决方案1】:

事实证明,对于图书馆项目,我不应该使用 Web API。我应该只是从 MediaPlayer API 访问库。

我可以通过

访问我的播放列表
let playlistQuery = MPMediaQuery.playlists()

那么每个商品都有一个商店ID

let playlist = playlistQuery.first
for item in playlist.items {
  print(item.playbackStoreId)
}

我可以播放具有该 ID 的项目。

【讨论】:

  • 嘿,但是,如果您出于某种原因想从 Web API 中获取它怎么办?在这种情况下,有没有办法将从 REST API 接收到的歌曲 ID(“i.jndvkjieubv2n32lkn”)与设备库中的歌曲 ID(“23423424121”)映射?
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2016-12-05
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多