Продолжить воспроизведение звука, когда 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. Для этого вы просто установите значение как аудио. И вы сделали! Наслаждайтесь игрой в фоновом режиме!

Надеюсь, поможет. счастливого кодирования:)

Другие вопросы по тегам