序言
该文档为平时开发中遇到的关于微信转发的一些小问题,故将此记录下来,若有遇到同样问题的猿友,愿可以解决你的问题。可能有些地方写的不是很好,请轻喷。若还有其他的见解,也敬请提出,互相学习。
apiCloud 引入微信模块
登录apiCloud官网,寻找到微信模块,并添加到对应的app项目中 【该模块为免费使用】
添加好之后,需进入微信开发平台申请对应项目的key,需要app包名、 app icon,这个过程大概需要一天左右的时间。 具体可以参考
开始使用微信转发功能
- 注意事项【可针对不能转发的情况debug】
1、微信只能分享本地的图片,不能分享网络图片,所以需要先下载后再去进行转发2、微信对于照片的大小存在,不能超过10M【后面会提到一种参考的解决方法】3、config.xml中需配置正确的微信开发平台申请的项目KEY复制代码
- 使用代码
let wx = api.require('wx'); wx.isInstalled(function(ret, err) { // 先判断手机端是否存在微信客户端 if (ret.installed) { // 下载,并判断图片是否过大于10M,则不能分享 api.download({ url: 'http://xxxxx', //网络图片下载 url savePath: `fs://image/shareImg${new Date().getTime()}_${parseInt(Math.random() * 1000)}.png`, //图片存储路径,随机命名图片 report: true, cache: true, allowResume: true }, function(ret, err) { that.isLoading = true if (ret.state == 1) { that.isLoading = false if (ret.fileSize && ret.fileSize >= 10 * 1000 * 100) { api.toast({ msg: '图片大于10M,无法分享', duration: 1500, location: 'middle' }) return } wx.shareImage({ scene : 'session', contentUrl : ret.savePath // 此处使用savePath即可,无需使用fs }, function(ret, err) { if (ret.status) { api.toast({ msg: '分享成功', duration: 1500, location: 'middle' }) } else { api.toast({ msg: '分享失败,错误代码为' + err.code, duration: 1500, location: 'middle' }) } }); } else if (ret.state == 0){ // api.toast({ // msg: '图片下载中', // duration: 1000, // location: 'middle' // }) } else { that.isLoading = false api.toast({ msg: '图片下载失败,无法分享', duration: 1500, location: 'middle' }) } }); } else { api.toast({ msg: '当前设备未安装微信客户端', duration: 1500, location: 'middle' }) } }) }复制代码
关于大于10M图片转发的参考解决方案
可以使用apiCloud中api对象的imageCache,缺点就是分享的图片会出现模糊。
重复处理压缩图片质量大小,使其质量小于10M