Определите, включены ли общие ограничения веб-сайта под iOS7

Я использую UIWebViews в приложении iOS 7 для отображения контента. К сожалению, случается, что пользователи включили общесистемные ограничения для веб-сайтов, которые были представлены в iOS 7. Хотя в моем контенте веб-просмотра нет ничего, относящегося к категории "для взрослых", фильтр в некоторых случаях не нравится тому, что я хочу отображать.

Поэтому я искал способ определить, включены ли системные ограничения для веб-сайтов пользователем (или профиль настроек, установленный на устройстве). Я хотел бы, по крайней мере, сообщить пользователю, почему некоторые элементы представления ведут себя не так, как ожидалось, и дать совет, чтобы localhost мог полностью использовать мое приложение и при этом иметь ограничения.

К сожалению, я не смог найти способ определить, включены ли эти ограничения. Я, конечно, мог бы наблюдать за содержимым каждого UIWebView и реагировать в случае, если контент заблокирован... это просто немного накладные расходы, связанные с каждым веб-просмотром, и я хотел бы ограничить это теми пользователями, которые действительно имеют ограничения включены.

На этой странице описывается, как настроить ограничения веб-сайтов и как они отображаются для пользователя, также есть изображение того, как сайт в Safari отображается. То же самое я получаю в моем веб-обзоре приложений: http://www.ifans.com/forums/threads/inside-ios-7-how-to-block-websites.399846/

Так что любой намек на то, как я могу обнаружить включенные ограничения веб-сайта, был бы хорош. Спасибо!

1 ответ

При попытке загрузить запрещенную страницу 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);

Кроме того, UIWebView в iOS 7.0.3, похоже, не ограничивает контент, загружаемый loadHTMLString:baseURL:, так что вы, вероятно, можете использовать это, чтобы обойти ограничения.

Наконец, я не уверен, почему вы используете localhost, Если вы хотите загрузить локальные файлы, вы можете просто запросить NSURL который указывает на файл (с помощью NSURL "s fileURLWithPath:).

Другие вопросы по тегам