Я провел много исследований, как в Google, так и в StackOverflow. Все ответы, которые я нашел, не работают в iOS 7. Я начал писать новое приложение в iOS 7 SDK с Xcode 5.iOS 7 SDK не соответствует фону аудио
Все, что я пытаюсь сделать, это воспроизвести аудио в приложении из файла, хранящегося в комплекте приложения (не из музыкальной библиотеки). Я хочу, чтобы звук воспроизводился в фоновом режиме и контролировался, когда экран заблокирован. (в дополнение к Control Center).
Я установил ключ APPNAME-Info.plist
, UIBackgroundModes
, до аудио. Он не обрабатывает вещи в делегате приложения; все делается внутри ViewController
@interface ViewController : UIViewController <AVAudioPlayerDelegate>
В viewDidAppear:
методе реализация языка я называю супер, а затем следующий код:
// Once the view has loaded then we can register to begin receiving controls and we can become the first responder
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
В viewWillDisappear:
методе моей реализации, я следующий код:
// End receiving events
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
Я также внедрил метод canBecomeFirstResponder
, который возвращает ДА. Затем я реализовал remoteControlReceivedWithEvent:
метод:
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
// If it is a remote control event handle it correctly
if (event.type == UIEventTypeRemoteControl) {
if (event.subtype == UIEventSubtypeRemoteControlPlay) {
[self playPauseAudio:self];
} else if (event.subtype == UIEventSubtypeRemoteControlPause) {
[self playPauseAudio:self];
} else if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause) {
[self playPauseAudio:self];
}
}
}
Смущает меня, что это точно такая же установка работает нормально на прошивке 6. На прошивке 7, не работает. Раньше это было так просто в iOS 6. Что-то принципиально изменилось в iOS 7 SDK. Что мне не хватает?
К сожалению, это не работает для меня из центра управления. Это тот же самый код, который я плодотворно использовал на iOS6, но с iOS7 что-то сломалось. На самом деле я также видел, что другие приложения, такие как StereoMood и 8Tracks, имеют одинаковую проблему. – super
Вы тестировали это на iOS 7.0.3, работает для меня без проблем. – codejunkie
@codejunkie: У меня был тот же опыт, что и супер. На iOS 7.0.3 он все тот же. Я выполнил большинство шагов, как вы указали, за исключением того, что мой код ответчика находится в AppDelegate, и у меня нет аудио объекта. Центр управления просто не вызывает remoteControlReceivedWithEvent :. Обратите внимание, что мой код работает во всех случаях до iOS7 и все еще работает для пульта дистанционного управления earbud. См. Мой вопрос здесь: http://stackoverflow.com/questions/19686704/how-to-block-ios-7-control-centre-from-controlling-music-app – kakyo