この短い記事では、音楽を再生するiOSアプリケーションを作成するときの1つのトリックを紹介します。
もしあなたがiOS開発者なら、あなたは実際のデバイスでのみ音楽付きライブラリ( iPod Library )にアクセスでき、エミュレータ( iPhone Simulator )ではアクセスできないことをご存知でしょう:[ドキュメントへのリンク ]:
注:iPodライブラリへのアクセスは、デバイス上でのみ機能し、シミュレーターでは機能しません。 これは、シミュレータがデバイスのiPodライブラリにアクセスできないためです。 このテクノロジーのクラスを使用してアプリケーションを開発するには、プロビジョニングされたiOSデバイスが必要です。
ただし、音楽を含むファイルへのアクセスは必ずしも必要ではなく、トラックに関する情報(名前、アーティスト、カバーなど)だけで十分な場合もあります。この場合、iPodライブラリで作業しているような錯覚を作成できます。
このような状況はいつ発生しますか? 実際のデバイスでテストしている音楽プレーヤーを作成しているとします(たとえば、iPhone 4とiPhone 5の2つがあります)。 App Storeで公開する時が来ました。スクリーンショットが必要です。 デバイスからスクリーンショットを撮ります。 お持ちでないデバイス(iPhone 6、iPhone 6 Plusなど)があります。 不足しているデバイスのスクリーンショットのみが必要です。ここでは、エミュレーターの起動が非常に役立ちます。
そのため、最初に実際のデバイスからトラック情報を含むデータベースをコピーする必要があります。 これらの目的のために、 iFunBoxをインストールします (iOSバージョン> = 8.3の場合、ファイルシステムへのアクセスは閉じられていました)。 次の3つのファイルとフォルダー(全体)をコピーするだけで十分です。
'Raw File System'/iTunes_Control/iTunes/MediaLibrary.sqlitedb 'Raw File System'/iTunes_Control/iTunes/MediaLibrary.sqlitedb-shm 'Raw File System'/iTunes_Control/iTunes/MediaLibrary.sqlitedb-wal 'Raw File System'/iTunes_Control/iTunes/Artwork
コピーしたファイルは、フォルダーに入れる必要があります。
~/Library/Developer/CoreSimulator/Devices/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/data/Media/iTunes_Control/iTunes
ここで、xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-デバイスの種類ごとにフォルダがあり、デバイスの名前はこのフォルダにあるファイルdevice.plistで見つけることができます
Xcodeの以前のバージョンでは、ファイルをフォルダーに配置する必要があります。
~/Library/Application Support/iPhone Simulator/7.1/Media/iTunes_Control/iTunes/
それだけです! これで、たとえば、トラックに関する情報を取得できます。
MPMediaQuery *myAllSongsQuery = [MPMediaQuery songsQuery]; NSArray *allSongs = [myAllSongsQuery items]; //... cell.songTitleLabel.text = [allSongs[indexPath.row] valueForProperty: MPMediaItemPropertyTitle]; cell.atristLabel.text = [allSongs[indexPath.row] valueForProperty: MPMediaItemPropertyArtist]; cell.coverImage.image = [[allSongs[indexPath.row] valueForProperty: MPMediaItemPropertyArtwork] imageWithSize:cell.coverImage.frame.size];
エミュレーターで実行されるアプリケーションの例: