フルスクリーンモードで動作することを目的としたiPad用の小さなHTML5 Webアプリケーションを開発しています(つまり、独自のAppleメタタグがあり、ホーム画面に追加されます):
<meta name="apple-mobile-web-app-capable" content="yes" />
アプリケーションは基本的に AJAX 経由でデータを取得し、ユーザーに表示します。AJAX データは外部 (別のドメイン、別のサーバーから) です。クロスオリジン リクエスト用のシステム セットアップがあり、オンライン モードで動作します。つまり、静的データはサーバーAにあり、動的データはサーバーBにあります。
適切なキャッシュ マニフェスト ファイルを作成し、サイトのすべての静的コンテンツ (HTML、CSS、画像、JS) をリストNETWORK: *
し、最後にセクションを配置しました。これにより、すべての動的コンテンツ (AJAX) が常にネットワークから取得されます。リクエストが失敗した場合、偽のコンテンツを表示することにより、アプリケーションは「正常に」失敗します。
上記の設定では、次のことが起こります。
- オンライン中にアプリケーションを実行すると、すべてが機能します;)
- iPad で WiFi を無効にすると (純粋なオフライン モード)、すべてが期待どおりに機能します - アプリケーションはオフライン コンテンツにフォールバックします
- ネットワークに再度接続しても、静的コンテンツ サーバー (すべてがキャッシュされているサーバー) をオフラインにすると、アプリケーションは起動しません。スプラッシュスクリーンでしばらく過ごした後、ポップアップが表示され
<app> could not be opened because it could not connect to the server.
ます; [閉じる] または [再試行] を選択できます。
上記のポイント 3 は、私がアプリケーション キャッシュをいじり始めた唯一の理由だったので、私を夢中にさせるものです。マニフェスト ファイルにアクセスできない場合、iPad Web アプリがキャッシュされたコンテンツにフォールバックしないのはなぜですか? (404 ではなく、サーバーがオフラインです)
HTML5 iphone offline webappへの回答は完全に間違っていますか? そうでない場合、iPadでこの動作を実現するにはどうすればよいですか?