【问题标题】:iOS: Hiding sensitive information on the screen when app is backgroundediOS:当应用程序后台运行时在屏幕上隐藏敏感信息
【发布时间】:2023-03-31 14:19:01
【问题描述】:

当前台应用程序进入后台时(例如,按下 Home 按钮),我如何更改最顶层视图控制器上的元素 之前 到 iOS 拍摄它的快照并启动动画以显示下一屏?

我之所以问,是因为我正在编写一个需要 HIPAA 合规性的应用程序,并且我担心操作系统为执行此动画而拍摄的快照有时包含敏感数据,即使这些数据也不可见稍后当应用程序进入前台时的瞬间。

我知道视图控制器具有生命周期方法,例如 viewWillDisappear,这可能是可用的,但我有很多控制器,我宁愿在我的 App Delegate 中有一些东西来处理这个问题(例如,通过添加一个不透明的全屏 UIImageView 覆盖),而不必在每个最后一个控制器中为此编写自定义代码。

我尝试将覆盖生成代码放在applicationWillResignActive 中,并且我一直在使用 Apple 的文档和 Google 进行挖掘,但它不起作用。我怀疑屏幕截图是在应用有机会更新屏幕之前拍摄的。

谢谢!

【问题讨论】:

  • 您是否尝试过更改applicationWillEnterForeground 中的视图?或者这也是一个静态动画,直到整个恢复缩放动画完成?
  • 嗯,现在可以了。我不确定是不是因为我将UIImageView 添加到self.window 而不是将topViewControllernavigationController 中拉出并添加到那里,或者是因为我将代码放入applicationDidEnterBackground 而不是applicationWillResignActive。无论如何,在前景化时不再显示敏感信息。只要 SO 允许,我将尝试深入研究并写一个更简洁的答案。
  • 如果不完全了解 HIPAA 合规性,用户可以随时截取屏幕截图会成为问题吗?据我所知,没有已知的解决方案。
  • 好主意,汤米。在我们的案例中,我们不认为这会成为一个问题。工作人员要么完全控制 iPad,并接受有关此问题的教育,要么将其放置在信息亭的外壳中,这样患者就无法使用电源按钮。 IIRC,照片应用程序也可以使用安全设置被禁止。必须进行研发。

标签: ios hipaa backgrounding


【解决方案1】:

不确定 HIPAA 关于后台和可能让用户登录以供其他人恢复的要求,但听起来最安全的方法是将具有 YES 布尔值的键 UIApplicationExitsOnSuspend 添加到 info.plist .

这将阻止应用程序完全后台运行,并在您每次返回时重新启动它(可能触发登录过程)。

出于安全原因,我测试过的大多数(如果不是全部)移动银行应用程序都会这样做。

【讨论】:

  • 这是个好主意,尽管我已经找到了一个让我可以继续做背景的解决方案。不过作为最后的手段还是不错的。
【解决方案2】:

我相信答案是不要关心在背景动画开始之前更改屏幕上的内容,而只需在应用程序进入背景后修改屏幕上显示的内容(即在applicationDidEnterBackground: 在您的 App Delegate 中。)这解决了我的问题。

我的UIImageView 覆盖想法在这里奏效了,尽管我决定只弹出到根视图控制器。这样更简单。我的根视图没有任何敏感信息。

它是这样的:

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

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

    ...
}

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多