转到后台时保护显示的数据:applicationDidEnterBackground

时间:2013-12-19 02:34:17

标签: ios iphone

我的应用程序处理敏感数据,我希望一旦用户进入后台,就会完全隐藏视图上显示的数据。我试图通过在所有其他视图上放置一个视图来实现这一点:

[self.window addSubview:self.someShieldView];

我也试过了,

[self topViewController].view.hidden = YES;

我在AppDelegate的

中这样做
- (void)applicationDidEnterBackground:(UIApplication *)application

根据iPhoneAppProgrammingGuide.pdf

的建议
  

.....当applicationDidEnterBackground:方法返回时,   系统会拍摄应用程序用户界面的图片并使用   转换动画的结果图像。如果您有任何意见   界面包含敏感信息,您应该隐藏或修改   applicationDidEnterBackground:方法之前的那些视图返回

但我仍然可以看到我的观点和数据几秒钟。如何确保我的视图隐藏在“盾牌”后面?

我跟着这篇文章,却无法实现我的目标。

Delay applicationDidEnterBackground screen capture

我可能做错了什么?

注意:一种替代方案不支持多任务处理,但我确实希望支持多任务处理。

1 个答案:

答案 0 :(得分:1)

在一段时间之后我对这个确切的问题嗤之以鼻,我想我可能已经发现了什么。

您遇到的问题只发生在模拟器中。在物理设备上(我使用iphone5s测试)如果在applicationDidEnterBackground中隐藏视图,则临时屏幕捕获不会显示隐藏视图。

这是我的全部代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window makeKeyAndVisible];
    self.window.backgroundColor = [UIColor redColor]; // this is your secure content
    return YES;
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    self.window.hidden = YES; // this is where you will hide/mask your content
}