iOS 10以降でMediaPlayerライブラリが利用できない。


はじめに

iOS 10になりMPMusicPickerControllerを使うと、
一瞬出てくるものの、すぐ消えるため困ってしまった。
調べてみると、iOS 10より「メディアライブラリ利用目的」を
Info.plistへの記載が必須となっていた。

既存アプリをiOS 10で実行した際には、
自動でメディアライブラリへのアクセス許可ダイアログが出ていたので、
「まぁ何だかんだ、勝手に出してくれるかなー」と甘く考えてたけど
そんなことは無かったので、対応手順をメモ。
(既に許可しているアプリを上書きして利用していると、再度催促はされませんでした。)

ソース

アクセス許可の動作とInfo.plistに記載するキーに関する記事

iOS 10 tidbit: apps now must seek permission before accessing your music library(http://www.idownloadblog.com/2016/06/15/ios-10-permission-accessing-music-library/)

対応内容

環境

-Xcode Version 8.0 (8A218a)
-iPhone 6s plus(iOS 10.0.2)

手順

  1. Info.plistに新規項目を追加し、[Privacy - Media Library Usage Description]を選択
    (Key[NSAppleMusicUsageDescription]でも可)

  2. ダイアログ表示時に表示するメッセージを記入

  3. あとはビルドして確認するだけ。簡単!

未検証部分

補足ですが、Info.plistのPrivacyの項目に下記の2つがあったが違いがあるかは未検証です。
-Privacy - Media Library Usage Description
-Privacy - Music Usage Description

ただ、Appleドキュメントを見てもKey[NSAppleMusicUsageDescription]が記載されており、上記Keyを利用した結果[Privacy - Media Library Usage Description]になるため、MediaPlayerライブラリ上では事足りるようです。
(上記の許可のみで、Musicアプリ上の音も鳴らせました。)

対象クラス

自環境で確認したクラスを記載。
-MPMediaEntity
-MPMediaItem
-MPMediaItemArtwork
-MPMediaItemCollection
-MPMediaLibrary
-MPMediaPickerController
-MPMediaPlaylist
-MPMediaQuery
-MPMusicPlayerController

 おわりに

MediaPlayer周りって今まで、管理が適当だなぁと思っていたんですが
AppleMusicも本格運用ということで、音楽周りの整備が始まった印象です。

メディアライブラリアクセスの許可を取らせるということは、
アクセスが厳しくなった分、リソースに対して柔軟に利用できる機能が追加されるのでは。
と期待を抱いてます。