以下两图一个是默认的分享样式,一个是自定义的分享样式
在微信环境中分享一个H5,分享出来的卡片默认是没有文案和图标的。若想添加文案和图标需要借助微信的js-sdk
1.公众号的设置
首先得有一个公众号,这个是前提。微信内分享的这个H5页面可以和公众号没有关系,但是自定义图标的这个功能相当于借助了公众号的能力。
1.1登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”
按照提示下载校验文件放置到H5的域名根目录下,可在浏览器访问校验文件验证成功与否。
2.引入js文件
<script></script>标签引入js文件即可
3.通过config接口注入权限验证配置
主要参照微信js-sdk说明文档
1 2 3 4 5 6 7 8
| wx.config({ debug: true, appId: '', timestamp: , nonceStr: '', signature: '', jsApiList: [] });
|
timestamp、nonceStr、signature为请求自己公司后端接口返回的值,可以让后端同学看文档中签名算法的相关部分。这样做的原因是调用微信的js接口传的参要与后端调微信接口的参数一致。
4.通过ready接口处理成功验证
1 2 3 4 5
| wx.ready(function(){ });
|
5.通过error接口处理失败验证
1 2 3 4
| wx.error(function(res){ });
|
6.具体的功能
6.1分享好友(微信好友或qq好友)
1 2 3 4 5 6 7 8 9 10 11
| wx.ready(function () { wx.updateAppMessageShareData({ title: '', desc: '', link: '', imgUrl: '', success: function () { } }) });
|
6.2分享到朋友圈或qq空间
1 2 3 4 5 6 7 8 9 10
| wx.ready(function () { wx.updateTimelineShareData({ title: '', link: '', imgUrl: '', success: function () { } }) });
|
上一个例子吧:
vue-cli搭建的H5页面相关功能统一写在main.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| let ruleName = location.href.split('#/')[1].split('?')[0];
const shareInfoMap = { usedCar: { title: '好生活二手车特惠活动', desc: '好生活好车特惠,高价置换回购,点击报名,免费评估。', icon: 'https://cdn.lifeat.cn/webappGroup/usedcar-shareIcon.png', }, default: { title: '', desc: window.location.href, icon: 'https://cdn.lifeat.cn/webappgroup/betterLifelogo.png', },
}
let infoMap = shareInfoMap[ruleName] ? shareInfoMap[ruleName] : shareInfoMap['default'];
if (shareInfoMap[ruleName]) { request.post('/wxmp/sign/jsSdk', { url: location.href, }).then(res => { let { timestamp, nonceStr, signature, appId } = res; wx.config({ debug: false, appId, timestamp, nonceStr, signature, jsApiList: ['updateAppMessageShareData','updateTimelineShareData'] }); wx.error(function (errres) { console.info(errres) }) wx.ready(() => { console.info('ready') wx.updateAppMessageShareData({ title: infoMap.title, desc: infoMap.desc, link: location.href, imgUrl: infoMap.icon, success: function () { console.info("成功") }, fail: function (erres) { console.info('失败:', erres) } }) wx.updateTimelineShareData({ title: infoMap.title, link: location.href, imgUrl: infoMap.icon, success: function () { console.info("成功") }, fail: function (erres) { console.info('失败:', erres) } }) }); }).catch(err => { console.info('err:', err) }) }
|