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