Cordova:在Android和iOS上存储永久数据

Cordova:在Android和iOS上存储永久数据,android,cordova,cordova-plugins,Android,Cordova,Cordova Plugins,我正在尝试在Cordova上为Android和iOS永久存储数据。所谓永久,我的意思是,即使用户卸载了移动应用程序,它仍然存在,所以如果他们再次安装,我将能够重用它 我依赖这个插件https://github.com/Crypho/cordova-plugin-secure-storage在iOS上使用keychain,在Android上使用SharedReferences iOS运行正常,我可以删除和安装应用程序,并看到我的数据仍然存在 在安卓系统中,数据在我卸载后立即被清除。(安卓设备是安全

我正在尝试在Cordova上为Android和iOS永久存储数据。所谓永久,我的意思是,即使用户卸载了移动应用程序,它仍然存在,所以如果他们再次安装,我将能够重用它

我依赖这个插件
https://github.com/Crypho/cordova-plugin-secure-storage
在iOS上使用
keychain
,在Android上使用
SharedReferences

iOS运行正常,我可以删除和安装应用程序,并看到我的数据仍然存在

在安卓系统中,数据在我卸载后立即被清除。(安卓设备是安全的,这意味着它有一个锁屏,我可以通过
stetho
查看它来确认它是否写入SharedReferences)

我认为它会被删除,因为allowbackup默认值可能为false,但即使我将其转换为True,它仍然不起作用


我会提前感谢你的帮助


(我添加了Android标签,因为可能有一些Android开发者知道SharedReference数据被删除的原因…

当您卸载应用程序时,SharedReference的数据也被删除,因为它位于属于此应用程序的位置,以确保当您将模式设置为私有时,其他应用程序可以获取您的数据。如果你想要一些数据,存储状态忽略是你的应用卸载,你应该写一个文件SD卡或外部存储目录。但只有在android-Q之前,它才可用于您可以使用的少量关键/价值数据(如应用程序设置)

将其安装到您的项目中:

cordova plugin add cordova-plugin-cloud-settings --variable ANDROID_BACKUP_SERVICE_KEY="<API_KEY>"
然后,即使在重新安装应用程序后,您也可以加载数据:

cordova.plugin.cloudsettings.load(function(settings){
    console.log("Successfully loaded settings");
    console.dir(settings);
});

在我的例子中,我使用了插件

问题解决了

在config.xml中进行聚合

<platform name="android">
...
    <custom-preference name="android-manifest/application/@android:allowBackup" value="true" />
...
</platform>

...
...
在中的示例中查看插件的更多详细信息

和文档中的andoid

cordova plugin add cordova-custom-config
<platform name="android">
...
    <custom-preference name="android-manifest/application/@android:allowBackup" value="true" />
...
</platform>