Я пытаюсь заставить MPNowPlayingInfoCenter работать правильно при приостановке воспроизведения. (У меня есть приложение для потоковой музыки, которое использует AVPlayer для воспроизведения, и я играю в своем Apple TV над Airplay.) Все, кроме паузы, похоже, правильно отражено в пользовательском интерфейсе Apple TV. Я инициализирую его следующим образом:
MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];
NSDictionary *songInfo = @{
MPMediaItemPropertyTitle: title,
MPMediaItemPropertyArtist: artist
};
center.nowPlayingInfo = songInfo;
Так как я потоковый, у меня нет информации о длительности после начала воспроизведения. Когда я получаю сигнал "ready" из потока, я обновляю продолжительность, которая отображается правильно на моем Apple TV:
MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];
NSMutableDictionary *playingInfo = [NSMutableDictionary dictionaryWithDictionary:center.nowPlayingInfo];
[playingInfo setObject:[NSNumber numberWithFloat:length] forKey:MPMediaItemPropertyPlaybackDuration];
center.nowPlayingInfo = playingInfo;
Я также могу искать эту технику, когда пользователь ищет дорожку:
[playingInfo setObject:[NSNumber numberWithFloat:length * targetProgress] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
Единственное, что я не могу понять, - как приостановить воспроизведение на моем Apple TV. Когда пользователь делает паузу в моем пользовательском интерфейсе, я пытаюсь сделать что-то вроде:
MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];
NSMutableDictionary *playingInfo = [NSMutableDictionary dictionaryWithDictionary:center.nowPlayingInfo];
[playingInfo setObject:[NSNumber numberWithFloat:0.0f] forKey:MPNowPlayingInfoPropertyPlaybackRate];
center.nowPlayingInfo = playingInfo;
Вместо того, чтобы приостанавливать работу, это обращается к ноте и возвращается вперед.
Как заставить playhead правильно делать паузу в моем Apple TV UI?