最近、Android と iOS をターゲットにして、これを必要とするアプリを作成しました。次の組み合わせを使用できます::
1. ローカルストレージ ::
localStorage を確認する
function supports_html5_storage() {
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch (e) {
return false;
}
}
項目を LocalStorage に設定する
localStorage.setItem("bar", foo);
また
localStorage["bar"] = foo;
LocalStorage からアイテムを取得する
var foo = localStorage.getItem("bar");
また
var foo = localStorage["bar"];
2. SQLite データベース (より便利で永続的)
DB をセットアップする
var shortName = 'BHCAppDB';
var version = '1.0';
var displayName = 'BHCAppDB';
var maxSize = 65535;
if (!window.openDatabase){
alert('!! Databases are not supported in this Device !! \n\n We are sorry for the inconvenience and are currently working on a version that will work on your phone');
}
db = openDatabase(shortName, version, displayName,maxSize);
createAllTables(db);
テーブルを作成する
function createAllTables(db){
db.transaction(function(transaction){
transaction.executeSql("CREATE TABLE IF NOT EXISTS Profile(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT, gender TEXT,age INTEGER)");
}
SQL クエリを実行する
transaction(function(transaction){
var rowCount = 'SELECT * FROM Profile';
transaction.executeSql(rowCount,[],function(transaction,result){
if(result.rows.length == 0){
var sqlString = 'INSERT INTO Profile (name,gender,age) VALUES("自己","Female",18)';
transaction.executeSql(sqlString);
}
});
});
3. すべてのデバイスのネイティブ ストレージ
これは、Phonegap の最良の部分です。Phonegap プラグイン呼び出しを使用して、すべてのデバイスでネイティブ プラグイン クラスを呼び出すことができます。呼び出し中に、パラメーターをクラスに渡すことができ、ネイティブ クラスはデータを OS 自体に格納できます。
たとえば、:: iOS では、プラグイン .h & .m クラスを作成し、それを Cordova.plist ファイルに登録します。それが完了したら、Phonegap を使用して JavaScript からクラスに呼び出しを送信する必要があります。NSDictionary またはその他の NSArray タイプを使用してパラメーターを受け取ったら、CoreData クラスを呼び出して無制限の量のデータを保存できます。メモリ不足になることはありません。
これは、残りのすべてのOSでも同様の方法で実行できます:)
暗号化については、次を試してください :: SQLCipher
以下は、既存の SQLite データベースの操作に関する追加情報です。この例の encrypted.db は、作成した新しいデータベースとプラグマです。
ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'secret'; -- create a new encrypted database
CREATE TABLE encrypted.t1(a,b); -- recreate the schema in the new database (you can inspect all objects using SELECT * FROM sqlite_master)
INSERT INTO encrypted.t1 SELECT * FROM t1; -- copy data from the existing tables to the new tables in the encrypted database
DETACH DATABASE encrypted;