2011-12-27 3 views
0

При нажатии на кнопку блокировки в приложении, система позвонит:iPhone Как предотвратить попадание моего приложения на задний экран?

-(void) applicationWillResignActive:(UIApplication *)application and 
-(void) applicationDidEnterBackground:(UIApplication *)application 

Так как я могу сделать, чтобы сделать мое приложение только resignActive, но не войти фона, и я могу запустить свой таймер, когда экран заблокирован (Таймер может» t выполняется в фоновом режиме).

Один из способов - установить свойство «Приложение не работает в фоновом режиме» в .plist в YES, оно сработало, но мое приложение никогда не сможет снова ввести фон, однако я хочу, чтобы он вводил фон при нажатии кнопки «домой».

Обновление: Я хочу воспроизвести какую-то музыку в своем приложении в определенное время, точно так же, как музыкальный сигнал, и я все еще хочу, чтобы он работал нормально, когда экран заблокирован, потому что удерживать экран может очень много аккумулятор, и мне не нужно ничего делать, когда пользователь нажимает кнопку «домой» и выходит из моего приложения.

+0

Вы можете ознакомиться с одним учебным пособием, в котором рассказывается о том, как запретить вступление приложения в фоновом режиме - http: //blog.marcopeluso.com/2009/08/23/how-to-prevent-iphone-from-deep-sleeping/ – rishi

+0

Спасибо, однако, я думаю, что способ может заставить систему не входить в глубокий сон, но не мешает моему приложению войти в фоновый режим , – user1117367

+0

С каких пор приложение входит в фон при блокировке устройства? Я только когда-нибудь загораюсь, когда пользователь нажимает кнопку «домой» или переключает приложения. – PaulG

ответ

0

Приложение должно обладать специальными привилегиями для любой обработки в фоновом режиме, например службы аудиосвязи/службы Voip/службы определения местоположения.

«Я могу запускать свой таймер, когда экран заблокирован (таймер не может выполняться в фоновом режиме)» вы не можете запускать таймер в фоновом режиме, который будет работать без использования какого-либо тентрума и делать это ... яблоко не примет ваше приложение на appstore - это худшая сторона, если вы ориентируетесь на appstore ...

+0

На самом деле я не хочу ничего делать в фоновом режиме, я хочу знать, что мое приложение может оставаться на переднем плане, когда отключается экран в моем приложении. – user1117367

0

Вы не можете помешать вашему приложению войти в фоновый режим. Это определяется операционной системой (iOS) и не контролируется приложениями. Однако, читая ваш обновленный вопрос, я не думаю, что это то, что вам нужно сделать.

Выполнение фоновых задач с помощью [UIApplication beginBackgroundTaskWithExpirationHandler;] (см. reference). Если вы хотите, чтобы что-то произошло через определенный промежуток времени, проверьте [UIApplication scheduleLocalNotification:].

Некоторые службы, такие как VOIP, Audio и CoreLocation, могут работать в фоновом режиме. Использование этих функций, отличных от их предназначенных целей (например, воспроизведение беззвучного звука), может привести к отклонению вашего приложения.

Обратите внимание, что вы не можете ничего сделать, чтобы ваше приложение не могло войти в фоновый режим. Просто некоторые задачи могут выполняться в фоновом режиме. Из-за этого вы не можете выполнять операции с графическим интерфейсом, и NSTimers, вероятно, не срабатывают (по крайней мере, я знаю некоторые случаи, когда они этого не делают).

Это поможет узнать, что вы хотите запустить в фоновом режиме, чтобы предложить решение.

+0

Я действительно не хочу, чтобы мое приложение вводило фон, но, как вы сказали, могу ли я подумать, что нажать кнопку блокировки в моем приложении так же, как нажать кнопку «домой», мое приложение должно ввести фон. – user1117367

0

Если вы не проигрываете аудио до перехода в фоновый режим, вы не можете запускать воспроизведение звука, когда приложение перемещено на задний план или на экране заблокировано (что имеет некоторые странные особенности), достаточно сказать, что он как если бы вы были в фон без фактического получения уведомления applicationDidEnterBackground.

Лучшее, что вы можете сделать, это запланировать локальное уведомление, но в этом случае ваша музыка ограничена 30 секундами и должна быть частью вашего пакета приложений.

1

Откройте файл Info.plist и добавьте приложение не в фоновом режиме. Задайте значение YES.