Syntax Error.

[Sy] 【技術メモ】Androidアプリ(WebView)とiOSアプリ(UIWebView)をApplication Cacheに対応させるために必要なこと

2014/03/19

Androidアプリ(WebView)iOSアプリ(UIWebView)

それぞれで Application Cache を導入するために必要なことについてメモ。

とりあえず使える状態にする方法です

Application Cacheはちゃんと考えて使わないといつまでもキャッシュが更新されない!とかなる可能性があるので、導入の際にはしっかりと検証を。

Android : WebView

Androidアプリの場合、デフォルトではApplication Cacheは無効になっています。

下記のようにWebViewクラスのインスタンスに対して数行のコードを追記する必要があります。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 
    ・
    ・
    ・
     
    WebView webView = new WebView(this);
 
    // キャッシュサイズ(byte)
    webView.getSettings().setAppCacheMaxSize( 32 * 1024 * 1024 );
    // キャッシュ格納場所のパス
    webView.getSettings().setAppCachePath("/data/data/"+ getPackageName() +"/cache");
    // ファイルアクセスを許可
    webView.getSettings().setAllowFileAccess(true);
    // Application Cacheを有効に
    webView.getSettings().setAppCacheEnabled(true);
    // キャッシュモード
    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
 
    webView.loadUrl('http://www.example.com');
 
    ・
    ・
    ・
}      

ファイルパスの指定先にキャッシュが作成できないと、通常のWebページと同じ動きになっちゃいます。

iOS : UIWebView

iOSについては、デフォルトでApplication Cacheが有効になってます。(iOS6以上は確認しましたが、それ以前については未確認。たぶん、大丈夫かとは思う)

なのでとりあえず特にやることなし。

共通(サーバサイド)

当然、表示するWebページ自体がApplication Cacheに対応している必要があります。

この辺りはまた別に書きます。

ひとりごと

意外と、iOSのUIWebViewについての情報が少なく、デフォルトで対応しているっていう情報を見つけることができなくて結構困った・・・。