I am developing an application for a client where a requirement is that a series of complex (multi-file, JS, CSS, etc), websites must be presented offline, without any web connection required at all.
So I have all of the HTML content folders, and can add them into my XCode project… but now I need to show them.
The UIWebView is fine when you just have one HTML file… but the relative paths for the JS and CSS do not translate over.
What is the best way to do this. I’ve seen a couple of potential choices. One way is to run a super basic web server locally, dump all the files into /documents (or thereabouts) and serve it from there… the second is to somehow make UIWebView re-interpret the paths so that they point to the right place locally… which I am not sure if it’s possible but I’ve seen it alluded to.
Seems like a lot of people just cover loading a single UIWebView page, and not so much discussing how to deal with CSS/JS dependencies.
Anyone have any bright ideas, links, etc?
Thanks
I think that if you add your HTML/CSS/JS tree to your Xcode project and select “Create folder references for any added folder” (instead of “Recursively create groups for any added folders”), then your bundle will contain the HTML/CSS/JS folder hierarchy (instead of the flattened-out list of all files). This would preserve relative paths.
As to the “reinterpreting” point, you can define
in your UIWebViewDelegate to intercept any attempt at loading any file. There you can change the url on the fly.
Also, have a look at this interesting article by Rob Napier: Drop-in offline caching for UIWebView.