iOS: скрытие конфиденциальной информации на экране, когда приложение находится в фоновом режиме

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

Я спрашиваю, потому что я пишу приложение, требующее соответствия HIPAA, и я обеспокоен тем, что снимок, который ОС делает для этой анимации, иногда содержит конфиденциальные данные, которые не должны быть видны даже в течение доли секунды, когда приложение становится более ранним.,

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

Я пытался поместить код, генерирующий оверлей, в applicationWillResignActiveи я копался в документах Apple и Google, но это не работает. Я подозреваю, что снимок экрана будет сделан до того, как приложение сможет обновить экран.

Спасибо!

2 ответа

Решение

Я считаю, что ответ заключается не в том, чтобы заботиться о том, чтобы изменить то, что отображается на экране до начала фоновой анимации, а в том, чтобы просто изменить то, что отображается на экране, как только приложение входит в фон (т.е. внутри applicationDidEnterBackground: в вашем приложении делегата.) Это решило мою проблему.

мой UIImageView Идея оверлея сработала здесь, хотя я решил просто заскочить в контроллер корневого представления. Проще так. В моем корневом представлении нет конфиденциальной информации.

Вот как это выглядит:

-(void)applicationDidEnterBackground:(UIApplication *)application {

    UINavigationController *navigationController = 
        (UINavigationController *)self.window.rootViewController;
    [navigationController popToRootViewControllerAnimated:NO];

    ...
}

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

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

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

Другие вопросы по тегам