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

от автора


В этой небольшой статье я хочу поделится с вами одной хитростью при создании 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 

Скопированные файлы нужно положить в папку:

~/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]; 

Пример приложения, запущенного в эмуляторе:

ссылка на оригинал статьи http://habrahabr.ru/post/256097/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *