Предотвращение появления конфиденциальной информации в переключателе задач - код Apple не работает - глюк iOS 8?

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

- (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];
}

Тем не менее, в iOS 8 этот точный код не работает, и очень простой, простой, черный контроллер представления не отображается до тех пор, пока приложение снова не станет активным. Переключатель задач показывает конфиденциальную информацию и ничего не скрывается. В этом коде нет анимации, поэтому я не могу понять - почему это происходит?

1 ответ

Решение

В iOS 8 приложению не хватает времени для отображения контроллера представления перед тем, как сделать снимок экрана.

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

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIViewController *blankViewController = UIViewController.new;
    blankViewController.view.backgroundColor = UIColor.blackColor;
    [self.window.rootViewController presentViewController:blankViewController animated:NO completion:NULL];
    [NSRunLoop.currentRunLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]];
}
Другие вопросы по тегам