iOS
MediaPlayer

[iOS11.1]prepareToPlayが返ってこない

let c = MPMusicPlayerController.systemMusicPlayer
var d = MPMusicPlayerStoreQueueDescriptor(storeIDs: ["500044854"])
c.setQueue(with: d)
c.prepareToPlay { (error) in
  print(error)
  c.play()
}

iOS10の時はcompletionHandlerがちゃんと返ってきた気がするけど、iOS11.1で返ってこない…。
Shazamがすぐ再生されるので使い方が間違っているのかな…。

追記

何度か繰り返していたら動くようになった。
ストリーミングまで時間がかかるのかな…?だとしても時間かかりすぎだと思う。

追記2

なんでも良いので再生中の状態でprepareToPlayを呼ぶと成功しやすい感じがする。
再生していない状態からだと再生に時間がかる

追記3

AppleMusic未加入端末iOS11.0.3ではすぐにError Domain=MPErrorDomain Code=4 "(null)"が返ってきた

追記4

AppleMusic加入端末iOS11.0.3ではすぐに再生されたが、ライブラリ内の違う曲が再生された。
また
MPMusicPlayerController: Server is not running, deferring check-in
というログが吐かれた。
error: nil
isPreparedToPlay: false

二回目の実行で該当の曲が流れた。
error: nil
isPreparedToPlay: true