MPMediaPickerControllerがシミュレーターで表示されない

1 min read読了の目安(約1200字

結論から言うと、シミュレーターではmusicライブラリにアクセスできないため、実機で動かす必要があります。


音楽ファイルを選択するUIを作りたくてMPMediaPickerControllerを使ってみました。
コードはこんな感じのシンプルなものです。

let picker = MPMediaPickerController(mediaTypes: .music)
picker.delegate = self
self.present(picker, animated: true, completion: nil)

これが、シミュレーターだと動かない。環境はXcode 12.3です。
少し調べてみると4年前のstackoverflow記事が見つかりました。

https://stackoverflow.com/questions/10792442/runtime-error-when-using-mpmediapickercontroller-in-ios-simulator

この記事のようにランタイムエラーになってくれるなら良いのですけど、ログすら吐かれないので悩んでしまったんですよね。

ちなみに記事中にあるドキュメントには下記記述がありました。

Note: To follow these steps you’ll need a provisioned device because the Simulator has no access to a device’s iPod library.
(注意:シミュレーターではiPodライブラリにアクセスできないため、下記のステップを進めるためにはプロビジョニングされたデバイスが必要です。)
https://developer.apple.com/library/archive/documentation/Audio/Conceptual/iPodLibraryAccess_Guide/AboutiPodLibraryAccess/AboutiPodLibraryAccess.html#//apple_ref/doc/uid/TP40008765-CH103-SW9

ドキュメントがRetired Documentだったので、新しいドキュメントの記述も探してみました。

To follow these steps, you must have a provisioned iOS device. Simulator has no access to a device's music library.
https://developer.apple.com/documentation/mediaplayer/playing_audio_using_the_built-in_music_player

シミュレーターで動かないのは良いとして、せめてログくらいは出してほしいなーと思うのでした。