iOS10.3 で MPMusicPlayerController クラスの挙動が変わった
デバイスをiOS10.3にアップデートしたら自作の音楽再生アプリでバグが発生しました。選んだ曲と別のものが再生されるバグです。 はじめに この問題について述べる前にMPMusicPlayerControllerクラスのことを軽く書きます。 デバイスに入っている音楽を自作アプリ内で流すとき、曲のリストを取得してMPMusicPlayerControllerクラスのインスタンス(この記事ではこれをPlayerと呼ぶことにします)にセットします。その後、Playerに対して曲の再生、停止などの指令を出します。 //.h MPMusicPlayerController *iPodMusicPlayer; MPMediaQuery *albumsQuery; MPMediaItemCollection *selectedAlbumCollection; //.m iPodMusicPlayer = [MPMusicPlayerController systemMusicPlayer]; //Playerの作成 albumsQuery = [MPMediaQuery albumsQuery]; //アルバム単位で情報を取得 selectedAlbumCollection = [albumsQuery.collections objectAtIndex:6]; //6のアルバムの情報を取得 [iPodMusicPlayer setQueueWithItemCollection:selectedAlbumCollection]; //取得した6のアルバムの情報をPlayerにセット [iPodMusicPlayer play]; //再生指令 Playerの作成するときは systemMusicPlayer applicationMusicPlayer のいずれかで作成します。 ここから今回の問題についてです。 何パターンかの操作を行うことで問題の症状を細かく炙り出しました。 症状1 曲の再生を停止すると、Playerに設定した曲のリストが無効になる。(再設定が必要。) Playerに対するstop指令で失う。pause指令では失わない。 曲のリストを失ったら、次に再生する前にリストを設定し直します。新たにMPMediaQueryから曲...