2012-03-12 16 views
2

Phonegapを使用してAndroid用アプリケーションとiOS用アプリケーションを開発しました。どちらのAppsも既に正常に稼働しており、店舗で利用可能です。さて、私はアップデートのいくつかの変更を加えました。以前のバージョンで(SQLiteデータベースを使用して)データを保存し、新しいバージョンに更新した場合、IO 5.1上のStorage Apiはもう動作していません。Phonegap(1.4.1)iOS 5.1でストレージが機能しなくなった

私が呼び出した場合

var db = window.openDatabase("mydb", "1.0", "", 5000000); 

何も起こりません。

Android用にうまくいきました。新しいインストールを行うか、以前のバージョンのアプリケーションからデータベースにデータが保存されていないとうまくいきます。私は完全に正常に動作している通知やlocalStorageのような他のPhonegap関数を使用しています。

私は本当にアイデアが不足していますので、任意の助けも、高く評価されるだろう:)

答えて

1

それは奇妙だ、それはところで...作業する必要があり、iOS5.1で、WebSQLはtemporyデータと考えられていますそれはいつでも削除することができます...

プライベートAPIを呼び出すWebKitデータの場所を変更することは可能です。 Documentsなどの安全なフォルダに場所を設定できるはずです。私はこのソリューションをまだテストしていませんでしたが、この記事を見てください:http://stackoverflow.com/questions/4527905/how-do-i-enable-local-storage-in-my-webkit-based-application

もっと安全な方法は、SQLite(WebSQLと同じ)をphonegapプラグインと一緒に使うことです。そのプラグインはデータベースをDocumentフォルダに保存します。つまり、DBは削除されず、iCloudによって保存されます。ここで

は、ネイティブのSQLiteのPhoneGapプラグインです。このプラグインについてhttps://github.com/davibe/Phonegap-SQLitePlugin 、WebSQL APIのいくつかの違いは、ここでは、あるアダプタです。 https://gist.github.com/2009518

あなたはまた古いWebSQL DBファイルを移行する必要があります(に保存されていますLibrary/WebKitまたはCachesディレクトリ)をDocumentフォルダに追加します。ここではそれを行うためのコードは次のとおりです。 https://gist.github.com/2009491

コルドバの最新バージョンで実装修正もある:https://issues.apache.org/jira/browse/CB-330(それはドキュメントフォルダ内のDBファイルのバックアップを作成します)

とIFデータ重要ですが、サーバーに保存する必要があります。私は、サーバーへのsqliteのDBを同期させるために、小さなlibが書いた: https://github.com/orbitaloop/WebSqlSync

+0

こんにちはSamuel、あなたの返事をありがとう。私はAndroid用JavaでPhonegap:Buildを使ってiOS用の.ipaを入手しています。だから、このプラグインを使用するには、私は現時点では持っていないMacでXCodeを使って開発しなければならないでしょう。私はまだjavascriptだけを使って動作する解決策を見つけようとしますが、数日後にプラグインが見つからなければ、プラグインを試してみます。 – Anna0815

+0

これは一体どのように属していますか? JavaとPhonegap:ビルド? –

+0

@ Anna0815:ここではiOSについて話しています。私はAndroid用のphonegap/cordova SQLiteプラグインもあると思いますが、Androidはこの問題を抱えていないと思うので、あまり役に立ちません。 Phonegap:buildには、Cordova 1.6で実装されている修正があります:https://issues.apache.org/jira/browse/CB-330 – Samuel

2

WebkitのストレージとiOS 5.1

との両方の問題の修正があります
  1. ストレージは
  2. ストレージは、iOSの5.1(WebKitのバグ)
下のアプリの更新で更新フォルダ構造に調整されていない/ Webkitのからキャッシュへ移動しました/

https://issues.apache.org/jira/browse/CB-330

このソリューションは、プライベートAPIを呼び出すWebkitデータの場所を変更するよりも安全であるようです。アプリケーションが実行されている間、Webkitストレージの場所が使用されます。すべてのデータの再開または終了時に、ドキュメントフォルダにバックアップされます。タイムスタンプは古いバックアップが新しいストレージデータを上書きできないことを保証します(アプリがクラッシュした場合...)。

最高:iOSアップデートの際に、その修正が適用されたアプリケーションを使用して古いiOSバージョンにいるユーザーは、損害を受けません。それで、なぜ待つべきではないか...

関連する問題