Технические вопросы и ответы QA1838

Препятствование тому, чтобы уязвимая информация появилась в переключателе задачи

Q: Как я могу предотвратить уязвимую информацию, выведенную на экран моим приложением от появления в переключателе задачи?

A: Сразу после того, как Ваше приложение перемещается в фон, система получает снимок окна Вашего приложения, и этот снимок используется для представления приложения в переключателе задачи. Путем изменения его иерархии представления до того, чтобы быть приостановленным приложение может управлять, как это появляется в переключателе задачи.

Делегат Вашего приложения должен реализовать -applicationDidEnterBackground: метод. В Вашей реализации сконфигурируйте представления приложения, поскольку Вы хотите, чтобы они появились в переключателе задачи. Пример показан в Перечислении 1. Если сокрытие уязвимой информации лучше подходит для объектов помимо делегата приложения, те объекты могут прислушаться UIApplicationDidEnterBackgroundNotification, который сразу отправляется после того, как делегат приложения получает a -applicationDidEnterBackground: сообщение.

Прежде чем приложение возвращается в передний план, делегат приложения получает a -applicationWillEnterForeground . Ваша реализация должна восстановить иерархию представления назад к применимому состоянию как показано в Перечислении 2. Другие заинтересованные объекты могут прислушаться UIApplicationWillEnterForegroundNotification.

Перечисление 1  , Скрывающее содержание Вашего приложения перед приостановкой

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    // Your application can present a full screen modal view controller to
    // cover its contents when it moves into the background. If your
    // application requires a password unlock when it retuns to the
    // foreground, present your lock screen or authentication view controller here.
 
    UIViewController *blankViewController = [UIViewController new];
    blankViewController.view.backgroundColor = [UIColor blackColor];
 
    // Pass NO for the animated parameter. Any animation will not complete
    // before the snapshot is taken.
    [self.window.rootViewController presentViewController:blankViewController animated:NO completion:NULL];
}

Перечисление 2  , Восстанавливающее содержание Вашего приложения прежде, чем возвратиться в передний план.

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    // This should be omitted if your application presented a lock screen
    // in -applicationDidEnterBackground:
    [self.window.rootViewController dismissViewControllerAnimated:NO completion:NO];
}


История версии документа


ДатаПримечания
12.05.2014

Новый документ, описывающий, как скрыть уязвимую информацию, когда Ваше приложение отправляется в фон.