как начать играть в заблокированном экране в iPhone

Я использую UILocalNotification чтобы предупредить пользователя, если приложение не работает, и MPMusicPlayerController для воспроизведения музыки iPod и MPMoviePlayerController для воспроизведения URL- MPMoviePlayerController радиопотока.

Согласно документу Apple: если iphone заблокирован, а устройство получает локальное уведомление, тогда он будет воспроизводить 30 секундный звук, а когда пользователь скользит слайдер, тогда приложение будет на переднем плане и два сценария пройдут

  1. Если приложение не запущено, то вызывает метод

    (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

  2. Если приложение уже запущено, то вызывает метод –

    (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notify

и я могу выполнить свою задачу в этих методах.

Проблема: мне нужно, чтобы мое приложение могло воспроизводить мой звук (это может быть музыка iPod или поток, но не звук локального уведомления в течение 30 секунд), когда iPhone заблокирован, а локальное уведомление получено, а приложение запущено на переднем плане.

Ссылка App: «Будильник HD» и другие приложения, также доступные в магазине приложений, работают нормально, но они не могут воспроизводить сигнал тревоги, когда приложение работает в фоновом режиме (я не мог понять, почему ???)

Я также пробовал, как защищать-iphone-от-глубокого сна :

которые мешают iPhone от глубокого сна, периодически проигрывая тихую музыку, но как уведомить приложение о том, что уведомление получено, чтобы начать играть «настоящую музыку»? И как начать играть новую музыку?

@manju извините, я опоздал, но он работает на вас.

  selectedDate = [timePicker date]; 

он выбран. Дата объекта даты, в это время ваше уведомление поступит.
[NSDate date] , вы можете найти текущее время. и найти разное время через.

  NSTimeInterval timeDifference = [ selectedDate timeIntervalSinceDate:[NSDate date]]; 

Теперь, когда вы планируете свое уведомление, тогда .write этот код

  UIApplication *app = [UIApplication sharedApplication]; UIBackgroundTaskIdentifier bgTask = 0; NSTimer *backgroundTimer = [NSTimer scheduledTimerWithTimeInterval:timeDifference target:self selector:@selector(backgroundTask) userInfo:nil repeats:NO]; bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ [app endBackgroundTask:bgTask]; }]; -(void)backgroundTask { NSLog(@"Here you can play song via player "); } 

Не забудьте добавить в app.infolist

UIApplication BackgroundMode Audio это решит вашу проблему, сыграйте песню, когда устройство заблокировано.

используйте AVAudioSessionCategoryPlayback для аудио сессии. Проверьте руководство по программированию аудио-сессии здесь

Interesting Posts

Ошибка XCode «Комплект приложений не содержит допустимого идентификатора».

UIActivityViewController – Загрузка видео Youtube

Почему мой первый заголовок раздела в таблице не отображается?

Как получить миниатюрное изображение видео от ALAsset в iOS?

NSMutableAttributedString автоматически объединяет идентичные смежные атрибуты?

Как исправить размытый текст на iPhone 6 (+)

Иногда диалоговое окно общего доступа Facebook не загружается на iOS

NSUserDefaultsDidChangeNotification и Today Extensions

Добавить UIProgressView под навигационным контроллером

Управление высотой UIWindow при вызове

Создание результатов конфигурации новой сборки в заголовке Не найдена ошибка

Полоса, как создать токен для кредитной карты, хранящейся у клиента, используя iOS / Parse

Как обнаружить, если пользователь нажал кнопку «Не разрешать» в уведомлении о подтверждении push-уведомления Apple

MTAudioProcessingTap убивает mediaserverd в контрольных точках

Interface Builder: выберите носитель на основе целевого

Давайте будем гением компьютера.