Запускаем музыкальный плеер в эмуляторе

631a4df32b4045c894508daba844c521.pngВ этой небольшой статье я хочу поделится с вами одной хитростью при создании iOS-приложения, воспроизводящего музыку.Если вы iOS-разработчик, то, скорее всего, знаете, что получить доступ к библиотеке с музыкой (iPod Library) можно только на реальном устройстве, но не на эмуляторе (iPhone Simulator) [ссылка на документацию]:

Note: iPod library access works only on devices and not in the Simulator. This is because the Simulator has no access to a device«s iPod library. To develop applications using the classes in this technology, you need a provisioned iOS device.

Однако, не всегда нужен доступ именно к файлам с музыкой, порой достаточно только информации о треках (название, исполнитель, обложка и т.д.) Для такой ситуации можно создать иллюзию работы с iPod Library.Когда может возникнуть такая ситуация? Предположим, вы пишете музыкальный плеер, тестируете его на реальном устройстве (к примеру, у вас их два: iPhone 4 и iPhone 5). Наступает время для публикации в 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 83798302b7c846e28b3a0d55ddbcddd3.png Скопированные файлы нужно положить в папку:

~/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]; Пример приложения, запущенного в эмуляторе:

b35710518ed54135bf057fef5261c5fd.png

© Habrahabr.ru