目录
最近在公司开发一个微信小程序项目,用到的uniapp技术,在分享图片时,查看了uniapp的技术文档,写的还是很粗糙的,说得不太清楚,在我看了一个下午得出了一个结论,uniapp并没有封装可以转发图片到微信好友中的api。
提示:以下是本篇文章正文内容,下面案例可供参考
1. 分享图片功能, 使用的是 wx.showShareImageMenu() 而不是uniapp的uni.share() 。
wx.showShareImageMenu({ //分享给朋友 path: qrimg.value, success: (res) => { console.log("分享成功:", res); }, fail: (err) => { console.log("分享取消:", err); }, })
2. 分享的图片,如果是后端直接返回路径,需将路径转换为临时路径传入; 如果是前端生成图片,直接通过 wx.createCanvasContext() 画一个, 然后通过 canvasToTempFilePath 转成图片临时路径。
uni.canvasToTempFilePath({ destWidth: 100, destHeight: 100, canvasId: 'qrcode', success: function(res) { // 在H5平台下,tempFilePath 为 base64 // qrimg.value=res.tempFilePath resolve(res.tempFilePath) }, fail: function(error) { wx.showToast({ title: "保存图片失败", duration: 2000 }) if (error.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || error.errMsg === "saveImageToPhotosAlbum:fail auth deny" || error.errMsg === "saveImageToPhotosAlbum:fail authorize no response" ) { // 这边微信做过调整,必须要在按钮中触发,因此需要在弹框回调中进行调用 wx.showModal({ title: '提示', content: '需要您授权保存相册', showCancel: false, success: modalSuccess => { wx.openSetting({ success(settingdata) { console.log("settingdata", settingdata) if (settingdata.authSetting['scope.writePhotosAlbum']) { wx.showModal({ title: '提示', content: '获取权限成功', showCancel: false, }) } else { wx.showModal({ title: '提示', content: '获取权限失败,将无法保存到相册哦~', showCancel: false, }) } }, }) } }) reject(error) } reject(error) } })
3. 用Windows电脑端微信,打开当前小程序,会发现,调用 wx.showShareImageMenu() 无反应( success、fail 方法都没执行),经咨询,showShareImageMenu方法不支持在Windows上使用, 因此需要提前判断是否是Windows系统(通过判断 getSystemInfoSync().platform 是否等于 windows ),如果是Windows系统,要么隐藏入口,要么toast给提示,来避开此问题
来源地址:https://blog.csdn.net/weixin_54079103/article/details/129149328