2010-07-11 4 views
3

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

+0

Существует UIApplicationExitsOnSuspend, но вы можете просто очистить любую информацию аутентификации в своем приложении applicationDidEnterBackground: метод делегирования приложения и заставить пользователя снова войти в систему, когда приложение вернется на передний план (applicationDidBecomeActive :) –

ответ

8

См opting out of background execution в Руководстве по программированию приложений iphone:

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

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

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

2

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

0

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

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

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

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

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

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

Смежные вопросы