У меня есть простое приложение для воспроизведения музыки, которое сталкивается с очень странной проблемой. Прежде всего, во время воспроизведения музыки и в заблокированном состоянии я позволяю пользователю дважды щелкнуть кнопку «Домой» и использовать заблокированные элементы управления музыкой iPod. Однако я заметил, что, находясь в заблокированном состоянии, мое приложение не получает никаких зарегистрированных уведомлений. По большей части, это хорошо в любом случае. Но если пользователь воспроизводит музыку в течение как минимум 15 минут (я не уверен, почему, но меньше, и эта проблема не возникает) в заблокированном состоянии и с использованием какого-либо разъема для наушников или вспомогательного разъема, то отключите Разъем наушников / aux, пока устройство все еще воспроизводит музыку, iPodMusicPlayer автоматически приостановит воспроизведение. Это именно то, чего я бы хотел, но после того, как это произойдет, когда пользователь разблокирует свое устройство и снова сфокусирует внимание на приложении, PlayState от iPodMusicPlayer будет неточным.
- (IBAction)playPause:(id)sender {
if ([musicPlayer playbackState] == MPMusicPlaybackStatePlaying) {
[musicPlayer pause];
} else {
[musicPlayer play];
}
}
где musicPlayer = [MPMusicPlayerController iPodMusicPlayer]
.
В нормальных условиях все работает отлично. Но после этих условий моя точка останова достигнет условия для MPMusicPlaybackStatePlaying, пока музыка находится в режиме паузы, и наоборот. Единственный способ, которым я смог это исправить, - это либо сделать новый выбор музыки, либо закрыть приложение и снова открыть. Я пробовал множество обходных путей, чтобы решить эту проблему программно, но ничего не получается на 100% без ошибок. Кто-нибудь знает, почему это происходит в первую очередь?