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


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


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

    Поддержать автора
    Поделиться публикацией

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое