安装新应用后,科尔多瓦本地存储不会清除

时间:2019-11-26 10:25:25

标签: cordova vue.js

我目前正在使用Vue.js / Cordova应用,并且我正在使用VueX-persist将商店保存在本地存储中。

在商店内,我跟踪在应用程序登录页面上显示的当前应用程序版本。我的问题似乎在iOS和Android上有所不同,但都存在相同的问题,即当我重新安装应用程序时无法清除存储空间。

例如,我安装了版本为1.0.7的应用程序,然后将版本更改为1.0.8,并添加了一些硬编码文本,因此我知道这是在安装更新的应用程序。

Store.js:

state: {
    appVersion: '1.0.8', 
}

Login.vue:

<p>Should be version - 1.0.8 / Store Version is - {{$store.getters.appVersion}}</p>

新应用程序安装了硬编码文本,但版本仍显示1.0.7,这在iOS和Android上发生。

当我卸载该应用程序并尝试重新安装它时,两者之间就有所不同。 在iOS上,所有内容都会正确更新并且可以正常运行。与android一样,即使卸载该应用程序也不会对其进行更新。我必须手动清除本地存储并刷新应用程序才能进行更改。但是,更奇怪的是,一旦我删除了该应用程序并再次尝试'cordova run android',它又回到了1.0.0,这是我制作的第一个版本。

我尝试删除平台并重新添加它们,然后重新运行以下

npm run build 
cordova run ios
cordova run android

更新:

我再次将版本更新为1.0.10,然后运行此代码以检查存储中的版本以及本地存储中保存的版本,但是两者都报告了1.0.9(旧存储的版本)

// Function to migrate store data to keep it up dated after app updates
const migrateStoreData = function () {
  const previousStoreData = JSON.parse(localStorage.getItem('appStore'));
  console.log('Previous: ', previousStoreData.appVersion);
  console.log('Current: ', store.getters.appVersion);
};
migrateStoreData();

2 个答案:

答案 0 :(得分:1)

这是默认行为,我认为这样可以。 否则,用户必须在每次更新应用后登录。

但是,当然,在某些情况下,您必须迁移存储的数据。

这就是为什么我在main.js中运行一个迁移,该迁移仅比较两个版本(currentAppVersion和storedAppVersion)

如果要从localStorage删除所有内容,则必须转到 Settings->Apps搜索您的App,然后在存储区上滑动一下。 现在,您有2个按钮可以删除所有内容。

希望对您有帮助

答案 1 :(得分:0)

我设法对Vuex Persist使用了reducer以从商店中排除'appVersion'值。

 const vuexPersist = new VuexPersist({
  key: 'appStore',
  storage: localStorage,
  reducer: state => // exclude certain values from being persisted
    Object.keys(state).reduce((acc, curr) => {
      if (!['appVersion'].includes(curr)) acc[curr] = state[curr];
      return acc;
    }, {}),
});