iTunes Match + AVplayer + MPMediaQuery не работает - PullRequest
3 голосов
/ 20 декабря 2011

Я разрабатываю приложение, которое использует AVPlayer, MPMediaItem и MPMediaQuery. Это работает до тех пор, пока Itunes совпадают. Мы начинаем с MPMediaQuery, затем выполняем некоторую фильтрацию, оставляя некоторые MPMediaItems, затем мы используем AVPlayer, потому что: 1.- мы также играем шумы во время воспроизведения песни 2.- нам нужно подписаться на воспроизведение / остановку событий с iPod.

Все эти функции в настоящее время работают, за исключением случаев, когда в библиотеке ipod включена функция itunes match. Даже когда воспроизводится статус AVPlayer, звука нет. Очевидно, что это не вызывает загрузку песни из iCloud.

Вся информация о том, что у меня есть, на данный момент соответствует этому сообщению: MPMediaItem и iTunes Match

, в котором говорится, что вы можете инициировать загрузку с помощью вызова воспроизведения MPMusicPlayerController. По причинам, указанным выше, мы не можем использовать этот класс для управления собственным игроком.

У меня есть две идеи, как решить эту проблему: A. Найдите способ проверить, загружена ли уже песня и доступна ли она в библиотеке для воспроизведения с помощью AVPlayer. Если песня недоступна, сообщите пользователю, что мы не поддерживаем недоступные песни. Б. Найдите способ начать загрузку песни непосредственно перед тем, как она станет следующим элементом для воспроизведения.

Я все еще не могу найти, как реализовать любое из этих решений, и я не нашел никакой соответствующей документации, поэтому я отправил свое приложение с предупреждением, чтобы пользователи не могли использовать это приложение, если они используют itunes match.

Ответы [ 2 ]

3 голосов
/ 06 декабря 2012

На iOS 6 и выше вы можете использовать [[item valueForProperty:MPMediaItemPropertyIsCloudItem] boolValue], чтобы проверить, загружен ли уже элемент.

2 голосов
/ 13 февраля 2012

A. Найдите способ проверить, если песня уже загружена и доступна в библиотеке, чтобы играть с помощью AVPlayer. Если песня недоступна сообщите пользователю, что мы не поддерживаем недоступные песни.

Это не идеально, но в большинстве случаев работает. Песни, загруженные с iTunes Match, будут свободны от DRM. Таким образом, вы можете проверить флаги DRM активов, если они не экспортируются, их нужно загрузить. Можно получить ложный позитив с помощью аудиокниг / приставок, но вы в основном в безопасности.

MPMediaItem* item
NSURL* url = [item valueForProperty:MPMediaItemPropertyAssetURL];
AVURLAsset* assetToLoad = [[AVURLAsset alloc] initWithURL:url options:nil];
bool protectedCon = assetToLoad.hasProtectedContent;
bool exportable = true;

if (gApp.mSysVersionInt >= 5) {
    exportable = assetToLoad.exportable;    //4.3+
}

B. Найдите способ вызвать загрузку песни прямо перед ней становится следующим предметом для игры.

Вы можете попробовать сделать это приглушенным MPMusicPlayerController, но нет способа отследить, когда песня загружается, а иногда это занимает очень много времени.

...