I’ve written a basic password manager type web application to run offline on a mobile device (testing on a 4th gen iPod Touch). I’ve added the app to the Home Screen and it all works fine while the iPod is online and can reach the server. Once I put the iPod offline, when I open the app the following dialog comes up:
Cannot Open PwdThing
PwdThing could not be opened because it is not connected to the Internet
The single static HTML file for the app (passwordthing.html) points to the manifest file:
<html manifest="cache.manifest">
...
The cache.manifest file includes all the files used by the app (including the jQuery Mobile files):
CACHE MANIFEST
passwordthing.html
passwordthing.js
...
And the cache.manifest file is set up to be served as text/cache-manifest in the .htaccess file:
AddType text/cache-manifest .manifest
All the source files are on Github (this commit is the version at the time of writing) and I have set up a public server to install it from as well.
Why can’t I get my app to work offline?
The only thing I can think of is that you have not changed the file, and mobile safari has cached an old version of the manifest. add a comment to your manifest. You might also want to try changing the name of the manifest file itself; I have had to do that to get my IPad to cache — everytime I update my application I change the name of the manifest to include the date.
Note that iOS4.2 has much better manifest support. You might see things improve when it is out.
Edit — Or, as it turns out, its just a bad file name. 😉 (see comments on question).