2009-04-15 3 views
2

J'utilisais l'application iPhone NYTimes, je deviens un peu curieux quand je remarque qu'il cache UIwebview même si je n'ai pas ouvert cet article. Quelqu'un at-il une idée de comment faire cela? Comment l'application NYTimes iPhone fait-elle la lecture hors ligne?Est-ce possible de mettre UIWebView en cache dans l'iPhone?

Toute aide grandement appréciée.

Merci,

Amit

Répondre

1

Vous pouvez utiliser UIWebView pour charger des fichiers html stockés localement sur l'iPhone.

L'application NYTimes met probablement en cache le html et les images dans le stockage local.

Rechercher google pour "UIWebView local" et vous obtenez plusieurs hits utiles.

Je l'ai essayé et il fonctionne très bien:


D'abord, créer une « application de la vue » et ajouter un UIWebView à la BNI.

Deuxièmement, ajoutez ce code à votre code UIViewController:

- (void)viewDidLoad 
{ 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]; 
    NSURL *url = [NSURL fileURLWithPath:path isDirectory:NO]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    [webView loadRequest:request]; 


    [super viewDidLoad]; 
} 

Troisièmement, ajouter un fichier appelé dossier « index.html » à votre « Ressources » dans Xcode et il sera affiché.

MISE À JOUR:

En effet, la partie compliquée de ce télécharge les images et les feuilles de style pour la page Web. Faire ce côté serveur est facile avec Simple HTML Parser (et PHP). Juste emballer tout dans un zip et télécharger sur votre iPhone. Vous pouvez également le faire localement avec un analyseur HTML C/C++/OBJC (libxml2.2 est disponible sur iOS). Voir cette question SO Parsing HTML on the iPhone.

Ça va être un peu un projet, alors bonne chance.

+0

Le code fonctionne, mais je ne suis pas sûr que j'ai décrit la création de l'application clairement. Faites-moi savoir si ça aide! – bentford

+0

-1. Le plus difficile est de savoir comment récupérer les fichiers Web sur Internet et les stocker dans votre sandbox local. La partie difficile n'est pas comment afficher un fichier web local à partir de UIWebView. –

+0

diwup, a fait un suivi. Oui, ça ne va pas être trop facile. Bonne chance. – bentford

2

J'ai écrit l'application NYTimes. Voici quelques détails que vous auriez pu obtenir en regardant à l'intérieur de l'ensemble de l'application.

Je télécharge le code HTML pour les articles, supprime tout code HTML non supporté et JS écrase les producteurs qui s'y trouvent et le met en cache dans le backing store.

Le contenu de l'article est contenu dans une série de balises P (fragment HTML). Je bourre cela dans une page de squelette HTML spéciale qui est livrée avec l'application. La page d'encapsulation statique contient également CSS et JS utilisés pour afficher correctement l'article et charger paresseusement les images.

Le chargement de l'image est vraiment cool. La vue Web est notifiée lorsque les images sont prêtes. la mise en page n'est pas affectée car je connais déjà la taille des images manquantes.

Questions connexes