我正在使用AngularJS v1.2.7和Cordova 3.3.0(
Android)我需要在手机内存中存储一些设置 – 所以当应用程序/设备重新启动时,应用程序仍然可以访问这些存储的数据.
关于这个的任何教程?我找不到任何:(
知道Cordova支持; LocalStorage,Websql(no more maintained),IndexedDB(Opera和Safari的not widely supported).我倾向于使用LocalStorage,但是即使在我重启设备后它仍保留/记住数据?
目前我正在使用答案#12969480 by Richard Szalay.
我建议编写一个自定义插件,并在Objective-C用户默认值中正确存储设置.
LocalStorage不是永久存储,而Websql似乎对存储设置有点过分.
您不必过多参与Objective-C并且有很好的Phonegap / Cordova插件指南:
http://docs.phonegap.com/en/3.3.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide
我使用此代码存储“FirstRun”变量来检查应用程序是否是新安装.插件检查应用程序之前是否已运行,并返回1或0,将其解析为整数并计算为true / false.
您可以更新此代码并向“AppChecks”类添加更多方法.我把所有简单的检查和设置存储放在这个类中.
AppChecks.h
#import <Cordova/CDVPlugin.h> @interface AppChecks : CDVPlugin - (void) checkFirstRun:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options; @end
AppChecks.m
#import "AppChecks.h" #import <Cordova/CDVPluginResult.h> @implementation AppChecks - (void) checkFirstRun:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options { NSString* callbackId = [arguments objectAtIndex:0]; CDVPluginResult* pluginResult = nil; NSString* javaScript = nil; @try { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *isFirstRun = @"1"; if (![defaults objectForKey:@"firstRun"]) { [defaults setObject:[NSDate date] forKey:@"firstRun"]; } else { isFirstRun = @"0"; } pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:isFirstRun]; javaScript = [pluginResult toSuccessCallbackString:callbackId]; } @catch (NSException* exception) { // could not get locale pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_JSON_EXCEPTION messageAsString:[exception reason]]; javaScript = [pluginResult toErrorCallbackString:callbackId]; } [self writeJavascript:javaScript]; } @end
在我的Javascript代码中使用:
cordova.exec( function( isFirstRun ) { isFirstRun = parseInt( isFirstRun ); if( isFirstRun ) { // do stuff for first run } },function(err) { // handle error from plugin },"AppChecks","checkFirstRun",[] );