我在应用程序中向我的用户显示了一些敏感数据,当用户单击主页按钮并返回应用程序时,Apple 具有快照功能,可在按下主页按钮之前显示设备上最后一个屏幕的图片.
有没有办法完全禁用这种效果?我在这里看到了在后台激活时显示图像的方法,该图像推送到视图顶部并在用户返回应用程序时首先显示在快照的位置,但我希望此功能完全消失而不必当用户再次进入应用程序时,保存任何快照或任何其他屏幕截图。谁能建议一种方法来做到这一点?
请注意,我不是在谈论使用主页按钮 + 睡眠按钮按下屏幕截图。
我在应用程序中向我的用户显示了一些敏感数据,当用户单击主页按钮并返回应用程序时,Apple 具有快照功能,可在按下主页按钮之前显示设备上最后一个屏幕的图片.
有没有办法完全禁用这种效果?我在这里看到了在后台激活时显示图像的方法,该图像推送到视图顶部并在用户返回应用程序时首先显示在快照的位置,但我希望此功能完全消失而不必当用户再次进入应用程序时,保存任何快照或任何其他屏幕截图。谁能建议一种方法来做到这一点?
请注意,我不是在谈论使用主页按钮 + 睡眠按钮按下屏幕截图。
在applicationWillResignActive:
您的应用程序委托的方法中,您可以制作一个不显眼的弹出窗口的 UIImageView。例如,假设您的应用程序拥有用户的密码。有人在用户身后走,用户按下主页按钮。这会调用该applicationWillResignActive:
方法,该方法可能会显示地图视图,因此当步行者离开并且用户重新打开应用程序时,它会直接打开地图视图而不是用户密码的简短快照。这就是你可能实现它的方式:
//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:
调用的描述:
调用此方法是为了让您的应用程序知道它即将从活动状态变为非活动状态。这可能发生在某些类型的临时中断(例如来电或短信)或当用户退出应用程序并开始转换到后台状态时。处于非活动状态的应用程序会继续运行,但不会将传入事件分派给响应者。( UIApplicationDelegate 参考)
代码中可能存在一些错误,因为我不熟悉在 App Delegate 中工作,但这是您应该做的要点。
这是 Apple 关于此主题的技术问答: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)
}
}