防止系统采用app的“使用简历”快照

时间:2012-09-26 17:25:58

标签: ios screen-capture

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

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

请注意,我不是在谈论使用主页按钮+睡眠按钮按下屏幕截图。

2 个答案:

答案 0 :(得分:1)

在你的app委托的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 Reference

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

答案 1 :(得分:0)

这是苹果公司针对以下主题的技术问答: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)
    }
}