Как установить текущую продолжительность воспроизведения и прошедшее время на заблокированном экране iOS 7?
Начиная с iOS 5, каждый музыкальный плеер может установить текущую музыку, такую как название, исполнитель, название альбома и обложки в [MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo, чтобы отображать на экране блокировки.
В iOS 7 информация о ползунке, продолжительности и истекшем времени воспроизведения добавляется как к экрану блокировки, так и к центру управления. Однако я не могу найти какие-либо документы для установки этих видов информации и разрешить слайдеру изменять позицию воспроизведения.
Есть ли способ решить эту проблему?
Ответы
Ответ 1
Вам нужно настроить скорость воспроизведения до 1.0f, даже если документация говорит об этом 1.0 по умолчанию.
NSDictionary *mediaInfo = @{
MPMediaItemPropertyTitle: audio.title,
MPMediaItemPropertyArtist: audio.artist,
MPMediaItemPropertyPlaybackDuration: audio.duration,
MPNowPlayingInfoPropertyPlaybackRate: @(1.0)
};
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:mediaInfo];
Ответ 2
Все они описаны в ссылке MPNowPlayingInfoCenter
. В настоящее время воспроизводящиеся свойства являются необязательными значениями, которые могут быть установлены или не установлены. Ссылка на это в предложении в конце списка нормальных свойств игры:
Дополнительные свойства, которые вы можете, описаны в этом документе в Дополнительные свойства метаданных... (акцент мой)
Свойства, которые вас интересуют: MPNowPlayingInfoPropertyElapsedPlaybackTime
и MPMediaItemPropertyPlaybackDuration
.
Эта информация является общедоступной, и поскольку SDK iOS 7 пока не опубликован (начиная с 2013-09-14), я предполагаю, что он был доступен до этой версии iOS.
Ответ 3
Просто будьте осторожны: документ Apple никогда не делал этого ясно - если вы используете MPMusicPlayerController, ваша музыка воспроизводится под капотом с помощью приложения "music", и у вас нет никакого контроля над nowPlayingInfoCenter. И вы НЕ будете получать события дистанционного управления, генерируемые пользовательскими действиями (например, воспроизведение/пауза), применяемые к экрану блокировки, поскольку эти события распространяются через nowPlayingInfoCenter в "музыкальное" приложение, а не на ваше. При использовании других медиаплееров, таких как AV или AvAudio, вы можете управлять nowPlayingInfoCenter и получать события дистанционного управления. Но если вы используете AVAudioSessionCategoryOptions.MixWithOthers для настройки AV-плеера, вы также не можете управлять nowPlayingInfoCenter. Я хочу, чтобы Apple задокументировала эти детали лучше.