2013-03-23 3 views
0

У меня сложный вопрос. В моем приложении пользователь может изменить, если он хочет, чтобы приложение запускалось в фоновом режиме или нет. Если да - он должен работать до тех пор, пока пользователь не убьет его. Если нет - он должен работать до тех пор, пока пользователь не нажмет кнопку «домой», и ДОЛЖЕН работать после блокировки экрана с помощью верхней кнопки.Понимание iPhone App Background States

Итак, есть строка в файле plist, которая называется «приложение не работает в фоновом режиме». Если я делаю это «ДА» - приложение работает до нажатия кнопки дома и все еще работает после блокировки экрана. Отлично. Если я делаю это «НЕТ» - приложение работает все время, пока я не убью его. Отлично.

Но я думаю, вы не можете изменить значение plist из приложения. Ну я нашел способ сделать это с applicationDidEnterBackground:

if (userDontWantItRunInBackground) { exit(0); } 

Но есть проблема с этим (кроме Apple, не рекомендую):

if "application does not run in background" = YES: 

applicationDidEnterBackground is NOT CALLED on locking the screen 

if "application does not run in background" = NO: 

applicationDidEnterBackground is CALLED on locking the screen 

Это не имеет никакого смысла! Это не позволяет мне запускать приложение на заблокированном экране!

ответ

0

В iOS 4 вы не можете избежать спящего режима, если ваше приложение пожелает.

[[UIApplication sharedApplication] setIdleTimerDisabled:YES]; 

Вот больше информации о выполнении в фоновом режиме прошивки:

enter image description here

More: