iOS应用程序进入后台时(之前)拍摄的屏幕截图?

我希望大家都知道, iOS会在您的应用程序转到后台之前截屏。

我是从官方文件中得到的。

在移动到后台之前从视图中删除敏感信息:当应用程序转换到后台时,系统会拍摄应用程序主窗口的快照,然后在将应用程序转换回前景时会快速显示该窗口。 在从applicationDidEnterBackground:方法返回之前,您应隐藏或隐藏可能作为快照的一部分捕获的密码和其他敏感个人信息。

所以,在这里我们可以隐藏我们的“敏感个人信息” ,系统会拍摄应用程序主窗口的快照,因此我们无法更改其function。

但我想知道..

1)如果在我的应用程序中我在第4视图,我的应用程序转到后台,那么系统会截取哪个视图/页面的屏幕截图? 第一个(应用程序的启动视图?)或应用程序的第4个视图/页面? (这对我来说有点困惑)。

2)我们可以在系统截屏时发出任何动作,或者有任何通知可以通知我们系统截屏吗?

3)我只是想知道,在我的应用程序启动之前是否可以采用屏幕截图(以编程方式) ? 如果是,那么请告诉我如何做到这一点。 如果没有,那么我可以截取的时间/地点(我的意思是在哪个应用程序的最小阶段 ,我们将能够截取屏幕截图?)

  1. 它将占据屏幕最顶层的视图,实际上它正在显示正在显示您的应用程序的窗口的屏幕截图。
  2. 没有通知屏幕截图正在进行或被拍摄。 你应该只在applicationDidEnterBackground;处理它的句柄applicationDidEnterBackground; 方法。 只是在文档中说明
  3. 不,这是不可能的,你想如何在应用程序运行之前执行任何代码? 操作系统将进行屏幕截图,只需确保将所有内容隐藏在applicationDidEnterBackground; 。 最低状态是您的应用程序已启动并正在运行。

我的应用就是我的应用程序,只要我的应用程序被推到后台,我的UIWindow有额外的视图。 因此,当进行屏幕截图时,捕获该视图。

1)只有一个屏幕。 屏幕截图是截图。 在您的模型案例中应该是第4个视图控制器的视图。 但是,您的第4个控制器的视图很可能不会覆盖所有屏幕或具有透明元素。 在这种情况下,第3或第2和第1视图控制器视图的部分是屏幕的一部分。

它是截图不是视图控制器镜头或任何东西。

2)你理解文档是正确的。 从applicationDidEnterBackground返回后,将截取屏幕截图。 没有进一步的dokumentation。

3)不,在调用应用程序之前,您无法执行任何代码。 但是,我觉得你正在寻找不同于你字面意思的东西。 由于其他原因,我通过实现main函数在模拟器中执行了一个小程序,即使不调用UIApplicatoinMain也是如此。 这是您的应用程序中的代码可以执行的第一个时间点,尽管这不会完全“超出本书”。 如果我没记错的话,那个时候屏幕是空白/黑色的。 因此,如果您要求创建其他应用程序的屏幕截图,这不是前进的方法。

它不像用户按下按钮那样截取屏幕截图。

此function与状态恢复有关 。 当应用程序转到后台时,它会将每个屏幕的视图层次结构展平为用于任务管理器的屏幕截图。 如果您选择进入状态恢复,它还将保持用户界面的状态。 这意味着一个人可以将应用程序从后台状态恢复,并可能以这种方式查看敏感信息,这可能是您需要处理的事情。

Tech QA 1838涵盖了防止信息包含在状态屏幕截图中的信息。

1)我很确定系统会拍摄当前可见视图的快照,所以堆栈中的最后一个,而不是第一个

2)此外,可能会有一个通知让我们知道系统将截取屏幕截图(否则我们怎么能隐藏合理的信息?:)),但我担心我们目前正在使用NDA?

3)你的意思是“在我的应用程序启动之前截取屏幕截图”? 您的代码在应用程序启动时开始执行,因此这个问题几乎没有意义: – /您可以在应用程序的任何位置拍摄屏幕快照,但是有很多stackoverflowpost