iOS版:当应用程序在背景执行隐藏在屏幕上的敏感信息(iOS: Hiding sensitive i

2019-09-22 23:59发布

当应用前景被转到后台运行(例如,Home键被按下),我怎样才能改变顶层视图控制器在iOS版时需要它的一个快照,并启动动画显示下一屏幕之前的元素?

我问,因为我在写需要遵守HIPAA的应用程序,我担心的是,OS发生在为了做到这一点的动画快照有时会包含应该甚至第二次当应用程序被后来前景化的分割是可见的敏感数据。

我知道,视图控制器具有生命周期方法,如viewWillDisappear这可能是有用的,但我有很多的控制器和我宁愿只在我的应用程序代表的东西来处理这个(例如,通过增加一个不透明的全屏的UIImageView覆盖),而不是编写自定义代码,这在每一次控制器。

我试图把叠加生成代码applicationWillResignActive ,我一直在与苹果的文档和谷歌挖,但它不工作。 我怀疑截图被采取的应用程序有一个机会来更新屏幕前。

谢谢!

Answer 1:

不知道HIPAA的约backgrounding,可能更让用户要求登录别人来恢复,但最安全的听起来就像是添加一个关键UIApplicationExitsOnSuspend用一个布尔值YESinfo.plist

这将阻止应用完全backgrounding,并重新启动它(可能触发登录过程)每次你回去吧时间。

大部分(如果不是全部)移动银行应用我测试出于安全原因,做到这一点。



Answer 2:

我相信答案是不会改变什么屏幕上的backgrounding动画开始之前关心自己,而是简单地修改有什么显示在屏幕上,一旦应用进入后台(即内部的applicationDidEnterBackground:在应用程序委托。)这解决我的问题。

UIImageView覆盖的想法在这里工作,但我决定只弹出到根视图控制器来代替。 更简单的方式。 我的根视图没有任何敏感信息。

这里是什么样子:

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

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

    ...
}


文章来源: iOS: Hiding sensitive information on the screen when app is backgrounded