オフライン ストレージに SQLite DB を使用する PhoneGap ベースの iOS アプリがあります。iOS 5.1 でアプリをアップデートした後、アプリが動作しません。同じアプリは 5.1 未満のバージョンで正常に動作します。
私はいくつかのことを調べましたが、私の分析は
- アプリをインストールすると、iOS はそのアプリ用に別のサンドボックスを作成し、そのアプリに関連するすべてのデータがそこに入ります。
- iOS5.1 では、アプリを更新すると、新しいサンドボックスが作成され、古いサンドボックスのコンテンツがここに移動されます。
- WebSQL の場合、つまり iOS 5.1 の PhoneGap の SQLite の場合、DB はキャッシュ フォルダー (揮発性ストレージ) に保存されます。しかし、以前のバージョンの iOS では、SQLite DB は永続ストレージである Sandbox の Documents フォルダーに格納されていました。
- 本当の問題は、websql DB のパスを持つ caches/preferences に「.preferences」というファイルがあることです。アプリを更新すると、サンドボックスのパスが変更されますが、このファイルでは、以前のパスがデバイスから既に削除されているため、アプリが機能していないため、以前のサンドボックスのパスがまだ使用可能です。
これは Apple の問題ですか、それとも開発者が解決できますか?