Доступ iOS к функции Safari Reader через UIWebView - PullRequest
12 голосов
/ 05 октября 2011

Я использую iOS 4.3, и мне было интересно, есть ли какой-нибудь способ, которым я могу получить доступ к функции Safari "Reader" , с помощью которой веб-страницы удаляются из рекламы и другого риффа, а контент занимает центральное место ,

Если открыть какую-либо статью в Safari (например, на сайте Википедии), то в строке URL-адреса появится кнопка «Читатель». Нажатие на него открывает новое окно, представляющее контент красиво.

Как я могу использовать эту функцию в iOS через UIWebView?

enter image description here

PS: я знаю, что есть что-то под названием Readability Project . Но я понятия не имею, как использовать это через UIWebView. Также для некоторых веб-сайтов Safari Reader принимает вызов, чтобы не включить функцию «Reader», может быть, он не имеет достаточной уверенности?

Ответы [ 6 ]

10 голосов
/ 12 января 2013

Важно: ЭТОТ ОТВЕТ НЕТ Дольше работает!

Читаемость отключена 30 сентября 2016 г. .

Вот что они рекомендуют какзамена: https://mercury.postlight.com/web-parser/

Сохранение ответа в виде исторической справки

--- Исходный ответ ---

Для этого можно использовать мобилизатор читаемости.Вы получите очищенную версию любой статьи в стиле Readability:

http://www.readability.com/m?url=http://{URLOFTHEARTICLE}

Просто подготовьте URL и загрузите его в свой UIWebView.Вот как это выглядит в действии:

http://www.readability.com/m?url=http%3A%2F%2Fwww.cnn.com%2F2013%2F01%2F11%2Fshowbiz%2Ftv%2Fgolden-globes-tv-vineyard%2Findex.html%3Fhpt%3Dhp_abar

4 голосов
/ 13 октября 2011

Apple делает довольно большую сделку по поводу включения «Reader» в iOS 5. Я предполагаю, что шум не доступен в 4.3

re: Как использовать через UIWebView

3 голосов
/ 14 февраля 2012

Не разбирайте HTML изначально на iOS, я делал это раньше, и это грязный бизнес. Либо создайте свой собственный веб-сервис, чтобы выполнить всю неприятную работу, либо изучите возможность чтения (readability.com), который они предоставляют API. Существует также порт для чтения с открытым исходным кодом, ruby, python и php, который вы можете найти здесь

https://github.com/iterationlabs/ruby-readability

https://github.com/gfxmonk/python-readability

http://code.fivefilters.org/p/php-readability/source/tree/master/

Для вас, любителей рубинов, удобочитаемость также доступна в виде самоцвета, просто погуглите ее.

1 голос
/ 13 октября 2011

На самом деле кнопка чтения выполняет небольшой анализ, где она анализирует HTML-страницу, а затем видит четкий тег для анализа.Если этот плагин способен извлечь точное тело, он активирует кнопку чтения (мое понимание из исходного кода читаемости).Теперь, чтобы реализовать то же самое для веб-просмотра, вам просто нужно встроить Java-скрипт в ваш код (этот Java-скрипт уже доступен в читаемом исходном коде), и тогда вы сможете добиться того же эффекта.

Но я подозреваю, что будущееплан от яблока на то же самое.Потому что они не могут просто позволить кому-либо еще делать это извлечение контента с огромной бизнес-возможностью, связанной с iCloud с комбинацией читабельности.

Если вы хотите, вы можете просто извлечь HTML из UIWebView, а затем извлечь тело и использоватьэто для вашей цели.Это не очень сложная наука для извлечения.

С точки зрения анализа, просто случайным образом включите около 10 HTML-страниц с включенной кнопкой Reader, вы увидите, что основной cotent принадлежит только телу, а остальная часть add, header, нижний колонтитул разделен.

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

0 голосов
/ 18 ноября 2015

Вы можете сделать это в iOS9.Первый импорт SafariServices:

#import <SafariServices/SafariServices.h>

После этого мы создаем экземпляр SFSafariViewController и добавляем его в качестве подпредставления.У нас есть два варианта:

  • Создание только с базовым URL
  • Создание с базовым URL, а также вход в режим чтения, если он доступен
NSString *sURL = @"http://google.com";

NSURL *URL = [NSURL URLWithString:sURL];

SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL]; // 1.

SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL entersReaderIfAvailable:YES]; // 2.

[self presentViewController:safari animated:YES completion:nil];
0 голосов
/ 12 июля 2012

Вы даже можете сделать это, введя JavaScript.

#define readJS @"(function(){window.baseUrl='https://www.readability.com';window.readabilityToken='';var s=document.createElement('script');s.setAttribute('type','text/javascript');s.setAttribute('charset','UTF-8');s.setAttribute('src',baseUrl+'/bookmarklet/read.js');document.documentElement.appendChild(s);})()"

А потом, когда ваша веб-страница заканчивает загрузку

- (void)webViewDidFinishLoad:(UIWebView *)webview
{
    [webview stringByEvaluatingJavaScriptFromString:readJS];
...