Как закрыть приложение для iPhone, когда экран блокируется? - PullRequest
7 голосов
/ 24 мая 2011

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

Ответы [ 4 ]

11 голосов
/ 24 мая 2011

Ваш UIApplicationDelegate получит

– applicationWillResignActive:

сообщение при блокировке экрана и

– applicationDidBecomeActive: 

когда вернется. Тем не менее, он также может получать эти сообщения в других ситуациях (например, при получении телефонного звонка, пользователь закрывает приложение на iOS 4.0 и более поздних версиях), и я не знаю, как определить причину.

Лучшим пользовательским опытом, по моему мнению, было бы снова вызвать аутентификацию, когда приложение вернется. Таким образом, пользователь не будет сбит с толку, когда телефон разблокируется, а приложение, которое он запустил, загадочным образом закрылось.

7 голосов
/ 24 мая 2011

Чтобы устранить путаницу, я просто провел несколько тестов на устройстве с iOS 4.3.2:

Когда вы запускаете приложение, оно отправляется: применение: didFinishLaunchingWithOptions: applicationDidBecomeActive:

Когда вы нажимаете кнопку «Домой», ваше приложение отправляется:

applicationWillResignActive:
applicationDidEnterBackground:

При повторном запуске этого же приложения ваше приложение отправляется:

applicationWillEnterForeground:
applicationDidBecomeActive:

Когда вы нажимаете кнопку блокировки, ваше приложение отправляется:

applicationWillResignActive:

Когда вы разблокируете, ваше приложение будет отправлено:

applicationDidBecomeActive:

Когда вы получаете звонок, ваше приложение получает:

applicationWillResignActive:

Если вы не ответите на этот вызов, ваше приложение будет отправлено:

applicationDidBecomeActive:

Когда вы получаете звонок, ваше приложение получает:

applicationWillResignActive:

Если вы ответите на этот вызов, ваше приложение будет отправлено:

applicationDidEnterBackground:

Когда вы вешаете трубку, ваше приложение отправляется:

applicationWillEnterForeground:
applicationDidBecomeActive:

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

Кроме того, эти два метода могут быть вам интересны, но на самом деле они не помогают конкретному случаю, который вас интересует:

- (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application 

- (void)applicationProtectedDataDidBecomeAvailable:(UIApplication *)application
3 голосов
/ 24 мая 2011
  1. «Закрытие приложения» противоречит рекомендациям Apple. Хотя некоторые приложения на самом деле делают это, это одна из вещей, которая может отклонить ваше приложение. Он был против руководящих принципов Apple до многозадачности и теперь более важен из-за многозадачности. Когда пользователи возвращаются к телефону и вашему приложению после блокировки или находясь в другом приложении, ваше приложение все равно должно работать. Если вы закроете «Закрыть свое приложение», это приведет к тому, что пользователь поверит в сбой вашего приложения, и, скорее всего, он напишет обзоры на этот счет.

  2. Если вы хотите защитить информацию в приложении, когда пользователь «уходит», вам следует обратиться к Справочнику по протоколу UIApplicationDelegate . Частично applicationDidEnterBackground: (где вы должны выйти из системы) и applicationDidBecomeActive: (где вы должны снова войти в систему).

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

3 голосов
/ 24 мая 2011

Если я правильно помню, приложение блокируется, когда телефон заблокирован.

С появлением многозадачности Apple изменила поведение, так что вашему приложению отправляется конкретное сообщение, когда оно разблокировано / переключено на *.1003 *

Я бы посоветовал просто прослушать эту вещь, а затем снова запросить аутентификацию.

Я не думаю, что вы можете просто выйти из своего приложения (как и вы), я не знаю ни одного приложенияэто просто убивает себя ...

Извините, что не слишком конкретен здесь, но я надеюсь, что вы теперь знаете, куда идти ...

...