2

我希望你们都知道,iOS在你的应用程序进入后台之前截图。

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

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

所以,在这里我们可以隐藏我们的“敏感个人信息”,系统会对应用程序的主窗口进行快照,所以我们不能改变它的功能。

但我想知道..

1)如果在我的应用程序中我处于第四视图,并且我的应用程序进入后台,那么系统会截取哪个视图/页面的屏幕截图?第一个(应用程序的启动视图?)或应用程序的第四个视图/页面??(这对我来说有点混乱)。

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

3)我只是想知道,是否可以在我的应用程序启动之前拍摄屏幕截图(以编程方式) ?如果,那么给我建议如何去做。如果,那么我可以在哪里/何时截屏(我的意思是在应用程序的哪个最低阶段我们可以截屏?)

4

4 回答 4

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

我所做的是在我的应用程序上,只要我的应用程序被推送到后台,就会在我的UIWindow. 因此,当制作屏幕截图时,会捕获此视图。

于 2013-08-08T07:41:30.397 回答
2

1)只有一个屏幕。屏幕截图是从该屏幕截取的。在您的模型案例中,这应该是第四个视图控制器的视图。但是,您的第四个控制器的视图很可能没有覆盖所有屏幕或具有透明元素。在这种情况下,第三甚至第二和第一视图控制器的视图的一部分是屏幕的一部分。

这是一个屏幕截图,而不是视图控制器镜头或任何东西。

2) 你理解文档没问题。屏幕截图是您从 回来后拍摄的applicationDidEnterBackground。不会有进一步的文件。

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

于 2013-08-08T07:59:23.930 回答
0

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

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

Tech QA 1838中介绍了防止信息包含在状态屏幕截图中。

于 2014-06-06T07:27:54.850 回答
-1

1) I'm pretty sure the system will take the snapshot of the current visible view, so the last one on the stack, not the first one

2) Also, there will probably be a Notification to let us know that the system is going to take a screenshot (otherwise how can we hide sensible information? :) ), but I'm afraid we're currently under NDA I guess?

3) What do you mean "take screenshot before my application launch"? Your code starts executing when your application launches, so this question almost makes no sense :-/ You can anywhere in your application take a snapshot of the screen, however, and there are many stackoverflow posts for that

于 2013-08-08T07:29:26.053 回答