MPMusicPlayerController прекращает отправку уведомлений - PullRequest
1 голос
/ 24 августа 2009

У меня есть MPMusicPlayerController, воспроизводящий всю библиотеку iPod, и я подписан на уведомления об изменении дорожек и т. Д. Это все работает правильно

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

Мысли

Ответы [ 2 ]

8 голосов
/ 18 апреля 2010

Очевидно, что MPMusicPlayerControllerPlaybackStateDidChangeNotification иногда публикуется до того, как объект игрока фактически обновил свое состояние. Тем не менее, вы все равно можете получить новое состояние из словаря userInfo уведомления (возможно, именно по этой причине).

В коде:

- (void)playbackStateDidChange:(NSNotification *)notification {
    static NSString * const stateKey = @"MPMusicPlayerControllerPlaybackStateKey";
    NSNumber *number = [[notification userInfo] objectForKey:stateKey];
    MPMusicPlaybackState state = [number integerValue];
    // state is the new state
    MPMusicPlayerController *player = [notification object];
    // state may not be equal to player.playbackState
}
3 голосов
/ 26 августа 2009

После долгих экспериментов вот что решило мою проблему.

Как оказалось, уведомление отправлялось, а состояние сообщалось как "остановлено"; однако отправка сообщения «play» привела только к другому срабатыванию уведомления, и состояние по-прежнему отображается как «остановлено».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...