3

我在 iOS 7 应用程序中使用 UIWebViews 来显示内容。不幸的是,用户已经为 iOS 7 引入的网站启用了系统范围的限制。虽然我的 webview 内容中没有任何“成人”类别,但过滤器似乎不喜欢我在某些情况下想要显示的内容。

因此,我寻找一种方法来检测用户是否启用了系统范围的网站限制(或安装在设备上的设置配置文件)。我想至少告诉用户为什么视图的某些元素的行为不符合预期,并建议允许“localhost”完全使用我的应用程序并且仍然启用限制。

遗憾的是,我找不到检测这些限制是否启用的方法。我当然可以观察每个 UIWebView 的内容并在内容被阻止的情况下做出反应......这似乎一直与每个 webview 都有一点开销,我想将其限制为那些真正拥有的用户启用的限制。

此页面描述了如何设置网站限制以及它们对用户的显示方式,还有一张 Safari 中的网站如何显示的图像。我在我的应用程序 webview 中得到的相同: http ://www.ifans.com/forums/threads/inside-ios-7-how-to-block-websites.399846/

所以任何提示我如何检测启用的网站限制都会很好。谢谢!

4

1 回答 1

2

尝试加载受限页面时,UIWebView将用占位符页面替换其内容。如果您查看该页面的源代码,则会看到以下代码段:

<!-- NO LOC: Applications (such as Dictionary.app) can recognize that a webpage has been restricted by looking for the following comment:
-->
<!-- com.apple.webcontentfilter.accessrestricted -->

所以你可以这样做:

NSString *htmlSourceCode = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML"];
BOOL accessIsRestricted = ([htmlSourceCode rangeOfString:@"<!-- com.apple.webcontentfilter.accessrestricted -->"].location != NSNotFound);

此外,UIWebViewiOS 7.0.3 中的 似乎并没有限制由 加载的内容loadHTMLString:baseURL:,因此您可能可以使用它来解决这些限制。

最后,我不确定你为什么使用localhost. 如果要加载本地文件,只需请求NSURL指向文件的 a (使用NSURL's fileURLWithPath:)。

于 2013-11-08T16:18:48.270 回答