我最近做了一个需要这个的应用程序,针对 Android 和 iOS。您可以使用以下组合::
1.本地存储::
检查本地存储
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 数据库(更方便,更持久)
设置你的数据库
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 插件调用在所有设备上调用本机插件类。在调用过程中,您可以将参数传递给类,并且本机类可以将您的数据存储在操作系统本身中。
例如 :: 在 iOS 中,您创建一个插件 .h 和 .m 类并将其注册到 Cordova.plist 文件。完成后,您需要使用 Phonegap 从 JavaScript 向该类发送调用。一旦使用 NSDictionary 或任何其他 NSArray 类型接收到参数,您就可以调用 CoreData 类来存储无限量的数据。你永远不会耗尽内存。
这也可以对所有其他操作系统以类似的方式完成:)
对于加密,请尝试以下操作 :: 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;