2011-10-05 36 views
12

我使用的是iOS 4.3 &在想,如果有,我可以访问Safari's "Reader" feature通过网页被删除的广告&其他里夫·拉夫&内容采取中心舞台的任何方式。的iOS访问Safari阅读器功能,通过一个UIWebView

如果用户在Safari中打开任何文章(比如说维基百科网站),那么在URL栏上会出现一个“阅读器”按钮。点击它会呈现一个美丽的呈现内容的新窗口。

如何通过UIWebView在iOS中利用此功能?

enter image description here

PS:我知道有个东西叫Readability Project。但我不知道如何通过UIWebView来使用它。另外对于一些网站,Safari的Reader会打电话不启用“阅读器”功能,也许它没有足够的信心?

+0

为什么-ve投票?人们有什么问题? –

回答

1

事实上,阅读器按钮做了一些分析,它分析HTML页面,然后它看到一个清晰的身体标记解析。如果该插件能够提取确切的身体,它将启用阅读器按钮(我的理解来自可读性源代码)。现在要为webview实现相同的功能,只需在代码中嵌入java脚本(此Java脚本已经存在于可读性源代码中),然后就可以达到相同的效果。

但我怀疑苹果的未来计划是一样的。因为他们不能让其他人以与可读性相结合的与iCloud相关的巨大商业机会进行内容提取。

如果你想要的话,你可以简单地从UIWebView中提取HTML,然后提取主体并将其用于你的目的。这不是一个非常火箭科学的提取。

从分析的角度来看,只需要随机选择10个HTML页面并启用Reader按钮,您将看到核心cotent仅属于body,其余的add,header,footer是分开的。

我相信现在是重新发明我们使用的网络内容的时候了,这也是做同样事情的最好例子。

4

苹果正在一个相当大的交易了解iOS 5包含“读者”的我被它不是现有的噪声假设4.3

重:如何通过UIWebView

使用
3

不要在iOS上本地解析HTML,我之前已经完成了它,并且它是一个混乱的业务。要么创建自己的Web服务来完成所有讨厌的工作,要么研究使用可读性(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/

对于您是Ruby爱好者,可读性也可作为宝石,只是谷歌它。

0

你甚至可以通过注入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]; 
10

重要:这个答案不再起作用!

可读性关闭2016年9月30日

这里是他们推荐作为替代的东西: https://mercury.postlight.com/web-parser/

保持了答案作为历史参考

---原来的答复---

可以使用可读性动员这一点。你会得到任何物品的清理版本,在可读性造型:

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

+0

然后,你怎样才能使“清理版本”在UIWebView中看起来不错?我在我的应用程序中工作,但我希望字体/样式看起来不错。 – Supertecnoboff

0

可以在iOS9做到这一点。 第一进口SafariServices:

#import <SafariServices/SafariServices.h> 

之后,我们实例SFSafariViewController并添加它作为一个子视图。我们有两个选择这样做:

  • 只有基本URL
  • 与BAS 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

'SFSafariViewController'从iOS 9开始可用,在较旧的系统上这会导致崩溃。 – michi