iOS:当应用程序背景时隐藏屏幕上的敏感信息

当一个前台应用程序获得后台(例如主页button被按下)时,如何才能更改最上面的视图控制器上的元素之前 ,当iOS拍摄它的快照,并启动animation显示下一个屏幕?

我问,因为我正在编写一个需要HIPAA合规性的应用程序,而且我担心操作系统为了执行此animation而拍摄的快照有时包含敏感数据,即使应用程序稍后被预先排除,这些数据也不应该可见。

我知道,视图控制器的生命周期方法,如viewWillDisappear可能是可用的,但我有很多的控制器,我宁愿只是有一些在我的应用程序委托来处理这个(例如通过添加一个不透明的全屏UIImageView叠加),而不必在每个最后的控制器中编写自定义代码。

我尝试了在applicationWillResignActiveapplicationWillResignActive覆盖生成的代码,并且我一直在用苹果的文档和Google进行挖掘,但是这不起作用。 我怀疑截图之前,应用程序有机会更新屏幕。

谢谢!

不确定HIPAA关于后台的要求,并可能让用户login以便其他人恢复,但最安全的听起来就像将一个键值为YES的键UIApplicationExitsOnSuspend添加到info.plist

这将阻止应用程序完全后台,并重新启动它(可能触发login程序),每次你回到它。

我testing过的大多数(如果不是全部的话)手机银行应用程序都是出于安全考虑。

我相信答案是不关心在背景animation开始之前更改屏幕上的内容,而是一旦应用程序进入背景(即在applicationDidEnterBackground:程序委托中的applicationDidEnterBackground:内部)就简单地修改屏幕上显示的内容。我的问题。

我的UIImageView覆盖的想法在这里工作,虽然我决定只是popup到根视图控制器。 这样更简单。 我的根视图没有任何敏感信息。

以下是它的样子:

 -(void)applicationDidEnterBackground:(UIApplication *)application { UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; [navigationController popToRootViewControllerAnimated:NO]; ... }