uni-app 通过 plus.io 持久化存储Json文件(卸载也不会丢失)
Posted 地表最强菜鸡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uni-app 通过 plus.io 持久化存储Json文件(卸载也不会丢失)相关的知识,希望对你有一定的参考价值。
最近项目组在使用uni-app开发android端,遇到了一个问题,就是我们需要在App应用升级判断是在应用内执行的升级,还是在应用外执行的升级,如果是在应用内执行的升级,如果上次已经登录进去了,则不需要重新登陆,如果是应用外执行的升级,则需要到登录界面重新登陆。
问题就是如果App卸载会导致缓存数据丢失,这个时候我在考虑能不能把数据保存到手机中,这样应用在卸载之后就不会导致数据丢失,在重新打开App的时候对手机数据文件进行校验,来判断是应用内升级还是应用外升级,代码如下:
//提交服务器设置
submitSetURL: function() {
let _this = this;
if (this.serverURL == '') {
this.$refs.loginToast.show({
title: '服务器地址不能为空!',
type: 'warning',
});
} else {
//服务器链接
Any.wsUrl = "wss://" + _this.serverURL + "/talkws";
Any.httpUrl = "https://" + _this.serverURL + "/index.php/admin/";
// 请求本地文件系统对象,将服务器链接写入文件进行本地化保存
plus.io.requestFileSystem(
plus.io.PUBLIC_DOCUMENTS, // 程序公用文档目录常量
fs => {
// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象
fs.root.getFile('serverURL.json', {
create: true // 文件不存在则创建
}, fileEntry => {
// 文件在手机中的路径
//console.log(fileEntry.fullPath)
fileEntry.createWriter(writer => {
// 写入文件成功完成的回调函数
writer.onwrite = e => {
_this.$refs.loginToast.show({
title: '服务器地址保存成功!',
type: 'success',
});
};
// 向文件中写入数据
writer.write(JSON.stringify({
URL: this.serverURL
}));
})
}, e => {
console.log("getFile failed: " + e.message);
});
},
e => {
console.log(e.message);
}
);
}
},
//读取服务器地址
getServerURL: function() {
let _this = this;
let sURL = "";
//从本地文件中读取服务器链接
plus.io.requestFileSystem(
plus.io.PUBLIC_DOCUMENTS,
fs => {
fs.root.getFile('serverURL.json', {
create: false
}, fileEntry => {
fileEntry.file(function(file) {
console.log("文件大小:" + file.size + '-- 文件名:' + file.name);
//创建读取文件对象
let fileReader = new plus.io.FileReader();
//以文本格式读取文件数据内容
fileReader.readAsText(file, 'utf-8');
//文件读取操作完成时的回调函数
fileReader.onloadend = function(evt) {
sURL = JSON.parse(evt.target.result).URL;
//console.log("提取的服务器地址:", sURL);
_this.serverURL = sURL;
Any.wsUrl = "wss://" + sURL + "/talkws";
Any.httpUrl = "https://" + sURL + "/index.php/admin/";
if (sURL != "") {
_this.$refs.loginToast.show({
title: '服务器地址获取成功!',
type: 'success',
});
}
}
});
}, e => {
console.log("getFile failed: " + e.message);
});
},
e => {
console.log(e.message);
}
);
},
到此 plus.io 持久化存储Json文件介绍完成。
以上是关于uni-app 通过 plus.io 持久化存储Json文件(卸载也不会丢失)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 spring-data-neo4j-cross-store 在 neo4j 和 postgres 之间的部分 NodeEntity 上支持跨存储持久性?
python3教程:jsonpickle和sqlite3持久化存储字典对象