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文件(卸载也不会丢失)的主要内容,如果未能解决你的问题,请参考以下文章

使用uni-app开发,需要了解全局变量实现的几种方式

如何使用 spring-data-neo4j-cross-store 在 neo4j 和 postgres 之间的部分 NodeEntity 上支持跨存储持久性?

python3教程:jsonpickle和sqlite3持久化存储字典对象

h5+ IOS App中判断本地文件是否存在 plus.io.resolveLocalFileSystemURL()

React通过redux-persist持久化数据存储

uni-app,vue,react,Trao之缓存类封装