У меня сложный вопрос. В моем приложении пользователь может изменить, если он хочет, чтобы приложение запускалось в фоновом режиме или нет. Если да - он должен работать до тех пор, пока пользователь не убьет его. Если нет - он должен работать до тех пор, пока пользователь не нажмет кнопку «домой», и ДОЛЖЕН работать после блокировки экрана с помощью верхней кнопки.Понимание 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
Это не имеет никакого смысла! Это не позволяет мне запускать приложение на заблокированном экране!