2011-10-05 11 views
12

Sto usando iOS 4.3 & chiedevo se c'è un modo che io possa accedere al Safari's "Reader" feature attraverso cui le pagine web vengono rimossi di annunci & altri Riff Raff & il contenuto prende il centro della scena.iOS accesso alle funzionalità di Safari Reader tramite UIWebView

Se si apre un articolo in Safari (ad esempio sul sito Web di Wikipedia), un pulsante "Lettore" viene visualizzato sulla barra degli indirizzi. Cliccando su di esso presenta una nuova finestra che presenta il contenuto in modo bello.

Come posso sfruttare questa questa funzionalità in iOS attraverso UIWebView?

enter image description here

PS: so che c'è qualcosa che si chiama Readability Project. Ma non ho idea di come usare questo attraverso UIWebView. Anche per alcuni siti Web Safari's Reader prende una chiamata per non abilitare la funzione "Reader", forse non ha sufficiente confidenza?

+0

perchè il -ve vota? Cosa c'è di sbagliato con le persone? –

risposta

1

In realtà il pulsante del lettore esegue un po 'di analisi in cui analizza la Pagina HTML e quindi visualizza un tag corpo trasparente da analizzare. Se quel plugin è in grado di estrarre il corpo esatto, abiliterà il pulsante del lettore (la mia comprensione dal codice sorgente di leggibilità). Ora per implementare lo stesso per la webview è sufficiente incorporare lo script java nel codice (questo java script è già disponibile nel codice sorgente di leggibilità) e quindi è possibile ottenere lo stesso effetto.

ma ho il sospetto il piano futuro di Apple per la stessa. Perché non possono lasciare che qualcun altro faccia questa estrazione di contenuti con l'enorme opportunità di business associata a iCloud con la combinazione di leggibilità.

Se si desidera è possibile estrarre il codice HTML da UIWebView e quindi estrarre il corpo e utilizzarlo per il proprio scopo. Non è una scienza molto razzo da estrarre.

Per il punto di vista dell'analisi, è sufficiente disporre in modo casuale di circa 10 pagine HTML con il pulsante Lettore abilitato, vedrete che il nucleo principale appartiene solo al corpo e il resto dell'aggiunta, dell'intestazione, del piè di pagina sono separati.

Credo che questo sia il momento di re-inventare il contenuto web che usiamo, e questo è l'esempio perfetto di fare lo stesso.

4

Apple sta facendo un bel affare grande circa l'inclusione di "Reader" in iOS 5. Sto assumendo dal rumore non è disponibile in 4.3

Re: Come usare attraverso UIWebView

3

Non analizza HTML in modo nativo su iOS, l'ho già fatto prima e si tratta di un business disordinato. O creare il proprio servizio Web per fare tutto il lavoro sporco o esaminare l'utilizzo della leggibilità (readability.com) forniscono un'API. C'è anche un open source Ruby, Python e la porta leggibilità php che potete trovare qui

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

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

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

Per voi rubino gli appassionati, la leggibilità è disponibile come una gemma anche , google solo.

0

si può anche fare questo iniettando 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);})()" 

E poi, quando la vostra pagina web finisce di caricare

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

Importante: questa risposta non funziona più!

Precisione interrotta 30 settembre 2016.

Ecco qualcosa che suggeriscono come un sostituto: https://mercury.postlight.com/web-parser/

Mantenere la risposta come un riferimento storico

--- risposta originale ---

È possibile utilizzare leggibilità mobilizzatore per questo. Si otterrà una versione ripulita di qualsiasi articolo, nello styling Leggibilità:

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

Basta preparare l'URL e caricarlo nel vostro UIWebView. Ecco come appare in azione:

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

Come si può quindi rendere la "versione ripulita" bella in una UIWebView? Ho funzionato nella mia app, ma voglio che i caratteri/lo stile siano belli. – Supertecnoboff

0

lo si può fare in iOS9. primi SafariServices importazione:

#import <SafariServices/SafariServices.h> 

Successivamente ci sono istanziare SFSafariViewController e aggiungendolo come una visualizzazione secondaria. Abbiamo due opzioni farlo:

  • Creazione con l'URL unica base
  • Creazione di URL bas, nonché di entrare nel caso in cui è disponibile 'modalità di lettura'
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' è disponibile da iOS 9, nel sistema precedente questo comporterebbe il crash. – michi

Problemi correlati