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

时间:2019-05-08 08:18:16

标签: android cordova cordova-plugins

我正在尝试将数据永久存储在适用于Android和iOS的Cordova上。永久地说,我的意思是,即使用户卸载了该移动应用程序,该应用程序仍保留在其中,因此,如果他们再次安装它,我将能够重用它。

我依赖于此插件https://github.com/Crypho/cordova-plugin-secure-storage,该插件在iOS上使用keychain,在Android上使用SharedPreferences

iOS正常运行,我可以删除并安装应用,然后查看我的数据是否仍然存在。

在Android中,卸载后,数据将立即清除。 (Android设备是安全的,这意味着它具有锁定屏幕,我可以通过使用stetho查看它来确认它已写入SharedPreferences)

我一直在考虑删除它,因为allowbackup默认值可能是false,但是即使将其设置为True,它仍然无法正常工作。

<platform name="android">
    <edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
            <application android:allowBackup="true" />
        </edit-config>
</platform>

感谢您的帮助...

(我添加了Android标签,因为可能有些android开发人员知道SharedPreference数据被删除的原因...)

3 个答案:

答案 0 :(得分:1)

在卸载应用程序时,SharedPreference的数据也被删除,因为它位于此应用程序的位置,以确保在设置模式为私有时其他应用程序可以获取您的数据。如果您需要一些数据,则存储状态将被忽略,即您的应用已卸载,则应在sdcard或外部存储目录上写入文件。但仅在android-Q之前可用。

答案 1 :(得分:1)

对于少量键/值数据(例如,应用程序设置),您可以使用cordova-plugin-cloud-settings

将其安装到您的项目中

cordova plugin add cordova-plugin-cloud-settings --variable ANDROID_BACKUP_SERVICE_KEY="<API_KEY>"

保存一些数据,这些数据将备份到平台的云存储中。

cordova.plugin.cloudsettings.save({
  user: {
    id: 1678,
    name: 'Fred',
    preferences: {
      mute: true,
      locale: 'en_GB'
    }
  }
});

即使重新安装应用程序之后,您也可以加载数据:

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

答案 2 :(得分:0)

就我而言,我使用了插件cordova-custom-config

cordova plugin add cordova-custom-config

问题已经解决。

在config.xml中进行聚合

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

cordova-custom-config-example

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

guide中的andoid文档