阻止系统拍摄应用程序的"use on resume"快照



我在应用程序中向用户显示了一些敏感数据,当用户单击主页按钮并返回应用程序时,苹果有一个快照功能,可以显示按下主页按钮前设备上最后一个屏幕的图片。

有没有办法完全禁用这种效果?我在这里看到了在后台激活时显示图像的方法,该图像推到视图顶部,并在用户返回应用程序时首先显示在快照的位置,但我希望该功能完全消失,并且在用户再次进入应用程序时不必保存任何快照或任何其他屏幕捕获。有人能建议一种方法吗?

请注意,我不是在说用主页按钮+睡眠按钮进行屏幕截图。

在应用程序委托的applicationWillResignActive:方法中,您可以弹出一些不显眼的东西的UIImageView。例如,假设您的应用程序保存用户的密码。有人走在用户后面,用户按下主页按钮。这调用了applicationWillResignActive:方法,该方法可能会显示一个地图视图,因此当walker不在,用户重新打开应用程序时,它会直接打开到地图视图,而不是用户密码的简短快照。这就是你可能实现它的方式:

//AppDelegate.m
- (void)applicationWillResignActive:(UIApplication *)application {
UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"picOfMap.png"]];
image.frame = self.view.frame;
image.contentMode = UIViewContentModeCenter;
[self.window.rootViewController.view addSubview: image];
}

以下是对applicationWillResignActive:何时被调用的描述:

调用此方法是为了让应用程序知道它即将从活动状态移动到非活动状态。这可能发生在某些类型的临时中断(如来电或SMS消息),或者当用户退出应用程序并开始过渡到后台状态时。处于非活动状态的应用程序继续运行,但不会将传入事件分派给响应程序。(UIApplicationDelegate参考)

代码中可能有一些错误,因为我不熟悉在App Delegate中工作,但这是你应该做的要点。

这是一个技术问答;苹果关于这个话题的一篇文章:https://developer.apple.com/library/archive/qa/qa1838/_index.html

简而言之,Swift中的代码片段如下:

func applicationDidEnterBackground(_ application: UIApplication) {
let someVCToShowInAppSwitcher = ...
window?.rootViewController?.present(someVCToShowInAppSwitcher, animated: false)
}

func applicationWillEnterForeground(_ application: UIApplication) {
// Make sure that we'll dismiss an expected VC, e.g.:
if window?.rootViewController?.presentedViewController?.view.accessibilityIdentifier == "someVCToShowInAppSwitcher" {
window?.rootViewController?.dismiss(sender: self)
}
}

相关内容

最新更新