破損した Application Cache が保存されると詰む
2014年2月23日
iPhoneにて、「アプリケーションキャッシュを更新中に、ホームボタンを押してアプリを強制終了」という操作を行ったところ、破損した画像が App Cache へ正常終了として保存されるという状態になりました。
JavaScript からキャッシュを強制削除する手段がないため、正しい画像に直すには
- 次アップデートで manifest.appcache が更新されるのをユーザーに待ってもらう
- ユーザーにアプリを再インストールしてもらう
- ユーザーにブラウザや設定を手動操作して、キャッシュを消してもらう(iOSは不可)
と、上記のようなユーザー側での対応しか残されていません。
サービス提供側にできることは無いので、詰みです。
この状態になることを、先ほど初めて知りました。
その筋では有名な話だったようですね・・・。
現実的な対応
JSファイルが壊れたら起動すら出来なくなります。
なので、何か裏ワザ的にJSから更新する手段があってもダメです。
なので、何か裏ワザ的にJSから更新する手段があってもダメです。
ブラウザや設定による手動削除は、残念ながら iOS の WebView がこれをすることが出来ないのでこれもNGです。
ということで、再インストールをお願いする以外に方法はなさそうです。
ゲームなら、データはサーバサイドにも保存するなど、それ前提の作りにしないとやばいです。
(そして、先にリリースしたゲームはその状態です・・・。)
「アップデートを待ってもらう」は論外ですわよね。
ちなみに update/swapCache は
アプリ側は、正しい状態として保存が終わっている認識なので、update しても updateready にはならず、swapCache してもキャッシュがないよエラーになるだけです。