Продолжить воспроизведение звука, когда iphone/ устройство переходит в спящий режим или заблокировано
Я использую следующий код для воспроизведения звука, когда iPhone/ iPod переходит в спящий режим или заблокирован.
mv = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://myurl/myMusic.mp3"]];
mv.movieSourceType = MPMovieSourceTypeUnknown;
[self.view addSubview:mv.view];
[mv play];
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory); AudioSessionSetActive(true);
Используя этот код, мое устройство не переходит в спящий режим, но я хочу, чтобы устройство перешло в спящий режим, но воспроизведение звука не прекращалось.
я добавил Required background modes
а также App plays audio
в моем info.plist
файл.
Подскажите пожалуйста где я не прав? Почему устройство не переходит в спящий режим / заблокировано?
2 ответа
Используйте этот код в viewdidload:
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
Это работает нормально для меня.
Прежде всего, включите в свой проект следующие фреймворки: AudioToolbox, CoreAudio, MediaPlayer и AVFoundation. Импортируйте их все в viewController, где будет размещен ваш плеер. После того, как вы распределили и начали проигрывать аудио, вставьте следующий код:
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory);
AudioSessionSetActive(true);
И, наконец, перейдите в файл Info.plist вашего приложения и добавьте строку с именем UIBackgroundModes. Новая строка будет массивом и будет содержать 1 элемент, элемент 0. Для этого вы просто установите значение как аудио. И вы сделали! Наслаждайтесь игрой в фоновом режиме!
Надеюсь, поможет. счастливого кодирования:)