文章主要介绍了如何在uniapp中实现PDF等文件的分享功能,通过使用特定的分享插件,可以绕过uni.app自带API的限制。安卓系统上分享至微信无需appid,iOS上则需要配置appid。分享过程包括创建下载任务,然后调用FileShare插件进行分享。用户需要注意权限配置和云插件的使用。

1. uniapp自带分享功能的局限性

  • uniapp自带的uni.share API只能分享图文等内容,无法分享PDF等文件。
  • 如果需要分享文件,必须调用系统的分享功能。

2. 分享插件的使用

  • 插件地址分享插件地址
  • 插件优势
    • 安卓分享到微信无需配置appid。
    • 注意事项:PDF文件名不能包含/\?等特殊字符,否则微信会自动去掉斜杠及其前面的字符。

3. 封装用法

/**
 * 任意文件分享,需勾选云插件并云打包
 * 安卓调用系统分享无需勾选配置appid,Ios需勾选分享配置,并添加微信appid
 * 参数传对象
 * 参数url:文件网络地址 必填
 * 参数fileType:分享的对象 QQ为QQ,微信为WX,系统默认是SYSTEM,不填写默认SYSTEM
 * 参数name:文件名字 如:电子发票
 */
const FileShare = uni.requireNativePlugin('life-FileShare'); // 分享文件
const anyShareFile = (e) => {
    if (!e.url) return 'url缺失';
    let url = e.url;
    let fileType = e.fileType || 'SYSTEM';
    let name = e.name || '文件';
    let aa = name + "." + url.slice(url.lastIndexOf(".") + 1).toLowerCase(); // 获取该文件类型
    // 下载文件
    var dtask = plus.downloader.createDownload(url, { filename: "_doc/pdf/" + aa }, function(d, status) {
        if (status == 200) {
            FileShare.render({
                type: fileType, // QQ为QQ,微信为WX,系统默认是SYSTEM
                filePath: plus.io.convertLocalFileSystemURL(d.filename),
            }, result => {
                // 处理分享结果
            });
        } else {
            console.log("Download failed: " + status);
        }
    });
    dtask.start();
}

更多推荐