Как предотвратить запуск моего приложения в фоновом режиме на iPhone - PullRequest
3 голосов
/ 11 июля 2010

Есть ли способ заставить приложение завершать работу вместо перехода в фоновый режим при нажатии кнопки «Домой»? По соображениям безопасности было бы лучше, если бы приложение не работало в фоновом режиме, а фактически закрывалось при нажатии на кнопку home. Это не для безопасности пользователей, а скорее для данных компании в приложении, так что это не выбор пользователя. Я не мог найти другого выхода, кроме принудительного выхода, который Apple не одобряет.

Ответы [ 3 ]

8 голосов
/ 11 июля 2010

См. Отказ от фонового выполнения в руководстве по программированию приложения для iphone:

"Если вы не хотите, чтобы ваше приложение оставалось в фоновом режиме, когда оно завершается, выможно явно отказаться от фоновой модели выполнения, добавив ключ UIApplicationExitsOnSuspend в файл Info.plist вашего приложения и установив для него значение YES.

Когда приложение отключается, оно переключается между неработающим, неактивным иактивные состояния и никогда не переходят в фоновые или приостановленные состояния.

Когда пользователь нажимает кнопку «Домой», чтобы выйти из приложения, вызывается метод applicationWillTerminate: делегата приложения, и у приложения есть приблизительно пять секунд для очистки ивыйти до того, как он будет прерван и возвращен в нерабочее состояние. "

2 голосов
/ 24 января 2011

Просто зайдите в info.plist вашего проекта и отметьте «Приложение не работает в фоновом режиме», чтобы получить ДА.

0 голосов
/ 18 июля 2011

К сожалению, после того, как все испробовано, я все еще не мог видеть, что мое приложение закрывается при нажатии кнопки домой. Он всегда уходил в фоновый режим, хотя UIApplicationExitsOnSuspend был YES и имел тип boolean в файле plist, и я удалил приложение из Simulator, перезапустил Xcode и Simulator и попробовал все предложенное.

Наконец я начал отлаживать приложение и нашел одну функцию, которая препятствовала выходу приложения. Функция была довольно простой, загружала некоторые изображения из сети и вызывалась из applicationDidFinishLaunching файла appDelegate. Эта функция делегировала задачу создания сетевого подключения и загрузки данных в какой-то другой класс многократного использования, где у меня был следующий код:

if(isBackgroundProcessingSupported){
        appDelegate.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{}];
        [NSURLConnection connectionWithRequest:request delegate:self];
    }

Итак, в конечном итоге оказалось, что приведенный выше код отвечает за перевод приложения в фоновый режим при нажатии кнопки home. Когда я прокомментировал приведенный выше код, мое приложение закрывается, а не уходит в фоновый режим.

ПРИМЕЧАНИЕ: код был там раньше, так как изначально приложение поддерживало фоновую обработку.

Надеюсь, это поможет кому-то, кто также пытается найти причину, как я.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...