Appearance
在政务微信中
本节目标:理解“在政务微信中”的核心思路,并能把它用于实际开发或面试表达。 在政务微信中,直接调用第三方应用来打开后端流数据(如 Blob 或二进制流)非常有限。微信类的应用对第三方应用调用有严格的权限控制,尤其在政务微信中,这种功能的限制通常更加严格,主要出于安全和数据隐私的考虑。
但是,有几种间接方案可以帮助实现类似的效果:
方案一:将文件上传至服务器并生成链接,调用第三方应用打开 将获取到的 Blob 数据(如文件流)上传到服务器上,并生成一个带授权的公共链接。 将生成的链接通过 openDocument API 或直接分享的方式发送到政务微信中。 用户点击链接后,微信会根据文件类型选择合适的应用打开,例如 PDF 文件可能调用微信的内置 PDF 预览器,或者如果文件链接符合规范,可能调用安装在手机中的第三方应用打开(如 WPS、Microsoft Word 等)。 方案二:利用微信内置的 openDocument API 打开文件 政务微信和普通微信类似,提供了 openDocument API,可以用于打开指定类型的文件(如 PDF、Word 等)。前提是文件必须位于微信能够访问的服务器上,不支持直接打开本地 Blob 对象。因此,步骤如下:
将文件上传至微信服务器或一个外网可访问的服务器。 生成文件下载链接,确保链接是微信可以访问的。 使用 wx.openDocument 方法,通过文件链接打开文件。 示例代码:
javascript 复制代码 uni.request({ url: urlJoin(sxz.getConfig().api, /sxz/checkRecord/getRecordFiles?id=${item.id}&type=3), header: { Authorization: uni.getStorageSync("token_type") + " " + uni.getStorageSync("assess_token"), }, method: "GET", responseType: "arraybuffer", success: (res) => { if (res.statusCode === 200) { const blob = new Blob([res.data], { type: "application/vnd.ms-word" }); // 上传 blob 数据到服务器,获取公共 URL uploadBlobToServer(blob).then((fileUrl) => { wx.openDocument({ filePath: fileUrl, // 服务器上的文件链接 success: () => { console.log("文档打开成功"); }, fail: (error) => { console.error("文档打开失败", error); }, }); }); } }, }); 方案三:通过中转链接或 URL Scheme 如果需要直接调用外部应用(如 WPS),可以使用 URL Scheme(如果政务微信允许的话):
生成特定的 URL Scheme 链接,通过 API 或在页面中展示,提示用户点击打开。 这需要政务微信支持外部 URL Scheme 执行跳转,具体效果还取决于用户设备的权限设置。一般政务微信对此的支持非常有限,需谨慎尝试。 总结来说,如果政务微信不直接支持调用第三方应用,最佳解决方法是通过 服务器生成可公开访问的链接 并使用 openDocument 来打开文档。
