是否有一个(法律)的方式来捕获在iOS下的整个屏幕?

我已经尝试了几种技术来从应用程序中捕获应用程序的屏幕截图。 这些技术似乎都没有捕捉到状态栏 – 它最终变成了黑色。

显然有一种方法可以做到这一点,但该接口是内部的,苹果公司不会让你使用它。

有任何想法吗?

注:这是一个尝试解决这个问题 ,我需要确定飞机模式是打开还是closures(不,只是知道networking是否可到达是不够的)。

但是,这个问题看起来似乎比较普遍,与这个问题截然不同。

确定networking接口是否处于活动状态的实际问题可以通过BSDnetworkingfunction来解决。 看哪。

 #include <sys/socket.h> #include <ifaddrs.h> #include <net/if.h> BOOL IsNICTurnedOn(const char *nicName) { BOOL result = NO; struct ifaddrs *addrs = NULL; if (0 == getifaddrs(&addrs)) { for (struct ifaddrs *addr = addrs; addr != NULL; addr = addr->ifa_next) { if (0 == strcmp(addr->ifa_name, nicName)) { result = (0 != (addr->ifa_flags & (IFF_UP | IFF_RUNNING))); break; } } freeifaddrs(addrs); } return result; } 

要使用这个function:

 BOOL isWWANEnabled = IsNICTurnedOn("pdp_ip0"); BOOL isWiFiEnabled = IsNICTurnedOn("en0"); 

在这一点上,似乎很清楚,没有简单的方法来检测飞行模式是否启用。 尽pipe您可以通过查看底层networking堆栈信息或刮擦状态栏像素来推断它,但是这两种方法都依赖于无证的行为。 在将来的iOS或未来的iOS设备上,很可能会改变行为,代码会产生误报或误报。

(更不用说,在未来的设备上,干扰甚至可能不存在。)

如果我在你的鞋子里,我会:

  1. 提出一个错误,让苹果知道你想要这个function。

  2. 无论是否启用飞行模式,都可以将通知发送到应用程序。 是的,如果启用它,用户可能会感到烦恼,但总体伤害是微乎其微的。 我可能会使这个警报只popup一次(在NSUserDefaults中存储一个密钥,以指示是否已经显示)。

  3. 如果您想获得超级喜好,请分析录制的audio,如果检测到嗡嗡声,请在录制时再次提醒用户启用飞行模式。 你可以实时地或者在剪辑被logging之后做到这一点,无论对你的应用程序更有意义。

作为替代解决scheme,也许您可​​以检测连接types,类似于: https : //developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html 。 通过一些额外的设备types检查,您可以仅在需要采取行动的情况下警告用户。

一种不同的方法,但你也可以链接到设置应用程序中的页面。 您也许可以链接到主页面并告诉用户所需的更改。

似乎没有办法做到这一点。

Interesting Posts