ios 什么时候自动截屏?

When is ios auto screen capture taken?

我正在尝试更改应用程序进入后台时 iOS 自动捕获的屏幕截图。

但是我不能完全确定这张截图是什么时候拍的。

例如:

如果您在应用程序中下拉通知栏,将调用以下方法:

- (void) applicationWillResignActive:(UIApplication *) application {
}

此外,如果您在应用程序中双击主页按钮,则会调用相同的方法。此外,如果显示警报视图,则调用 'applicationWillResignActive'。

但在这两种情况下

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

未调用。

所以我的问题是,即使应用程序没有进入后台,调用applicationWillResignActive后是否有截图?还是 iOS 仅在 applicationDidEnterBackground 后截屏?

可以看一下here,总之,从applicationDidEnterBackground:

更改return之前的view

是的。

- (void) applicationWillResignActive:(UIApplication *) application { }

当您下拉通知栏甚至双击主页按钮时调用。你必须在这里做一些事情来防止你的敏感信息被 OS 捕获。一种解决方法可能是:

  1. 在应用程序进入后台之前设置模糊的屏幕覆盖
  2. 应用程序激活后删除此叠加层

像这样:

-(void)applicationWillResignActive:(UIApplication *)application
{
    imageView = [[UIImageView alloc]initWithFrame:[self.window frame]];
    [imageView setImage:[UIImage imageNamed:@"blurryImage.png"]];
    [self.window addSubview:imageView];
}

然后在应用程序进入前台之前删除此叠加层:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if(imageView != nil) {
        [imageView removeFromSuperview];
        imageView = nil;
    }
}

查看官方文档 - "Preventing Sensitive Information From Appearing In The Task Switcher".

它说 applicationDidEnterBackground: 应该用于上述目的。

当您下拉通知栏甚至双击主页按钮时调用。你必须在这里做一些事情来防止你的敏感信息被 OS 捕获。一种解决方法可能是:

在应用程序进入后台之前设置模糊的屏幕覆盖 一旦应用程序激活,移除此叠加层