uniapp android与ios app的文件分享功能

使用的分享插件

购买插件for云打包,按照插件提示,选择使用插件的app;

输入ios和android名,即在hBuilderX 云打包时弹框里面的Android包名和Bundle ID;

在manifest.json文件的App原生插件配置中选择云端插件,导入刚刚购买的插件

一、android

如果是需要前端自己生成文件,则使用5+app的方法,写入文件

我这里需要把字符串写入文件,然后把写入的文件分享出去

portTextRequest([textstr, name,url]){
	const vm=this
	plus.io.requestFileSystem(plus.io.PUBLIC_DOWNLOADS, function(fs) {
		fs.root.getFile(name+'.txt', {create: true
		}, function(fileEntry) {
		    fileEntry.file(function(file) {
			    fileEntry.createWriter(function(writer) {
			    writer.onwrite = function() {
			    if(uni.getSystemInfoSync().platform=="android"){
			        uni.showModal({
				        title:'导出提示',
				        content:"txt文件导出成功,导出至:"+writer.fileName.match(/Android.*$/g)[0],
				        confirmText:'分享',  
				        showCancel:true,
				        success(res) {
				            if(res.confirm){
						        const FileShare= uni.requireNativePlugin('life-FileShare');
						        FileShare.render({
							        type:"SYSTEM",
		    				            filePath:plus.io.convertLocalFileSystemURL(writer.fileName),
						        }, result => {
                                });
					        }
				        }
			        })
		        }
			    writer.seek(0);
			    writer.write(textstr);
		    }, function(e) {
			    file.resInfo = e;
		    });
	    });
    });
}

这里说一下,textstr是要写入文件文本字符串,name是自定义的文件名,url android分享没用到,ios分享才用到。

const FileShare= uni.requireNativePlugin('life-FileShare');开始是引入我们前面导入的插件,FileShare.render是分享,其他ipa不明白可以查看uniapp官网和5+app官网。

我这里后面括号啥的可能写的不对,如果复制进去看到后面括号有问题就自己添加或者删除,代码就是这样。

二、ios

ios一串字符要以文件形式分享出去比android麻烦,但我花了一周时间终于走通了。

1. 申请app在微信公众平台的appid,这个是分享必要的,android使用上述插件可以不申请。

申请步骤:

(1)登录注册微信开放平台,申请成为开发者,需要开发认证费用,进入之后创建移动应用。填写相关信息,申请ios的appid时需要一个可以调起你app的通用链接Universal Link(这个申请过程中可以在表单上看到)。

(2)Universal Link申请有两种方法,一种是在hBuilderX的manifest.json的App模块配置中勾选Share(分享),然后勾选微信分享,在IOS平台通用链接那一条下点击自动生成,然后走uniCloud云服务空间那条路,这条路我没走通,需要的话可以自行研究;还有一种方法是原生生成Universal Link的方法

(3)具体可参考以下文章,我是照着下面这个文章走通的。UniApp:IOS篇:通用链接【Universal Links】配置_染小七的博客-CSDN博客_ios ulinks

(4)申请并配置成功后,在微信开放平台上填入,然后提交审核。

2. 在项目中配置

打开hBuilderX的manifest.json的App模块配置,勾选分享,填入以下信息

 3. 代码实现

要想将文本转为文件,不能用上述android的方法,需要将文本内容转为base64格式的字符串,具体是先将字符串转为Blob对象,然后将Blob对象转为base64。uniapp不支持Blob对象,window对象这些,但renderjs里面支持。

文本转Base64代码:

let urlObject = window.URL || window.webkitURL || window;
let export_blob = new Blob([textstr],{ type: 'text/plain'});
this.blobToBase64(export_blob, (dataurl) => {
    let pdfBase64 = dataurl;  //这个pdfBase64就是base64格式
});
blobToBase64(blob, callback) {
	const fileReader = new FileReader();
	fileReader.onload = (e) => {
		callback(e.target.result);
	};
}

分享代码:

const FileShare= uni.requireNativePlugin('life-FileShare');
//下面的url是base64格式的文本
var dtask = plus.downloader.createDownload(url,  
{filename:"_doc/pdf/"+name+'.txt'}, function(d, status){
	if(status == 200){                          
		FileShare.render({
			type:"SYSTEM",
			filePath:plus.io.convertLocalFileSystemURL(d.filename),
		}, result => {

		});
	} else {
	}  
});
dtask.start();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值