Определите, включены ли общие ограничения веб-сайта под 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:
).