MPMusicPlayerController: объедините iPodMusicPlayer и applicationMusicPlayer, чтобы предотвратить переход к следующему треку.

У меня немного странная проблема. У меня есть музыкальное приложение, в котором используется расширение [MPMusicPlayerController iPodMusicPlayer]. Все в порядке, уведомления запускаются при изменении трека и изменении состояния воспроизведения.

У меня есть один экран, на котором пользователю нужно просмотреть одну песню, я не хочу, чтобы он переходил к следующей песне в своей очереди. Поскольку не существует метода делегирования, когда трек БУДЕТ изменяться (изменяется только ДЕЙСТВИТЕЛЬНО), чтобы музыкальный проигрыватель не переходил к следующему треку, я использую новый [MPMusicPlayerController applicationMusicPlayer], даю ему текущую воспроизводимую песню iPodMusicPlayer, и все хорошо. Нет новых треков для продолжения, и я не касаюсь исходной очереди iPodMusicPlayer, поэтому теоретически, когда я закрою этот экран и снова воспользуюсь iPodMusicPlayer, все должно быть в порядке.

Однако, когда пользователь завершает работу с этим экраном и закрывает его, iPodMusicPlayer внезапно прерывается, уведомления не вызываются, а когда я помещаю приложение в фоновый режим, музыка перестает играть, заставляя меня поверить, что iPodMusicPlayer теперь на самом деле applicationMusicPlayer.

Итак, мой вопрос в основном: мне нужен способ предотвратить переход музыкального проигрывателя к следующему треку в очереди. Переключение на applicationMusicPlayer с одним треком, похоже, ломает вещи, как объяснялось выше. Какое лучшее решение?

EDIT: поскольку это может быть немного сложно понять, я создал небольшой проект, чтобы показать проблему: https://github.com/kevinrenskers/MPMusicPlayerControllerTest. Откройте приложение во время воспроизведения музыки и убедитесь, что кнопка воспроизведения работает правильно. Теперь откройте всплывающее окно, снова закройте его, и кнопка воспроизведения не работает.


person Kevin Renskers    schedule 11.06.2012    source источник


Ответы (1)


Я нашел решение своей проблемы: установить repeatMode на MPMusicRepeatModeOne, а затем поймать уведомление MPMusicPlayerControllerNowPlayingItemDidChangeNotification. Вы можете остановить воспроизведение, и вы никогда не перейдете к следующему треку. Как только я закончу со вторым экраном, я верну repeatMode к исходному значению.

person Kevin Renskers    schedule 12.06.2012