MusicPlayer で音楽を再生しようとしたら __abort_with_payload というエラーが出た

import MediaPlayer

...
    override func viewDidLoad() {
        super.viewDidLoad()
        let player = MPMusicPlayerController.systemMusicPlayer
        player.setQueue(with: MPMediaQuery.songs())
        player.play()
    }

これで音楽が再生できたんだけど、再生開始した瞬間にアプリがクラッシュした。どうやら権限が足りていないようだ。

端末の音楽情報を参照するには Info.plist に privacy を書かねばならない。

 <key>NSAppleMusicUsageDescription</key>
    <string>Reference music information to play music.</string>

こんな感じで NSAppleMusicUsageDescription に対してアクセスしたい理由を書けば OK。
(PropertyList で見る場合は Privacy - Media Library Usage Description になっている。)

参考: ios - App crashes when running on iPhone with violations as exception - Stack Overflow