H5页面微信分享

单纯的h5页面在微信中访问

1.使用微信分享默认的标题,描述,以及缩略图

HTML5中外部浏览器唤起微信分享 h5页面调用微信分享_微信

标题:微信自动抓取html中的title
例如:
	<title>标题</title>
	
描述:自动获取当前浏览页的url(不可自定义,无法修改)

缩略图:可以在父层 div 上设置 display: none; 或者对 img 设置 position: absolute; visibility: hidden;)
例如:
    <div style="display:none;"><img src="./logo512.png" alt=""></div>
    //插入图片,微信会抓取当前图片作为分享的缩略图
    <div id="root"></div>
</body>

2.自定义微信分享内容(标题,描述以及缩略图)

如下图

HTML5中外部浏览器唤起微信分享 h5页面调用微信分享_HTML5中外部浏览器唤起微信分享_02


自定义分享内容需要调用微信的api,详情请参考官方微信开放文档 一定要认真读文档,按照文档的步骤一步一步配置,以下仅仅是在项目代码中的使用方式

yarn add (npm install) weixin-js-sdk

调试时建议使用微信开发者工具

import wx from 'weixin-js-sdk';
getWxInformation = (url,args) => {

    let config = {
        title:"自定义标题",
        desc: "自定义描述",
        link: "跳转连接",// 此链接中不可以含有#,若含有’#‘将配置不生效,url.splict('#')[0]
        imgUrl: "自定义缩略图的url"
    };
    
	
    ajax.post("url").then(res => {	
		// wx.config中的配置项appId,timestamp,nonceStr,signature均由后台请求接口返回
		
        wxConfig(res?.data,config)
    });
};

//微信方法调用顺序
//先wx.config被调用之后,成功,wx.ready方法才会被调用
"updateTimelineShareData","updateAppMessageShareData",是微信新的api,但是有时候新的api不起作用
所以调用的时候可以配置一下老的api,以免某些手机出现不支持使用新api,这样就可以避免兼容问题了(
 "onMenuShareAppMessage","onMenuShareTimeline"对应的老api)


wxConfig = (data,config) => {

    wx.config({
        debug: false, // true,开启,控制台会打印出相关信息,手机上也会弹出alter信息
        appId: data?.appId,// 必填
        timestamp: data?.timestamp,// 必填
        nonceStr: data?.nonceStr,// 必填
        signature: data?.signature,// 必填
        jsApiList: [ // 配置所需调用微信的api
            "updateTimelineShareData",
            "updateAppMessageShareData",
            "onMenuShareAppMessage",
            "onMenuShareTimeline"
        ]
    });

    wx.checkJsApi({
        jsApiList: [
            "updateAppMessageShareData",
            "updateTimelineShareData",
            "onMenuShareAppMessage",
            "onMenuShareTimeline"
        ], // 需要检测的JS接口列表,所有JS接口列表见附录2,
        success: function(res) {
            // 以键值对的形式返回,可用的api值true,不可用为false
            // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
        }
    });

    wx.ready(function () {

        wx.onMenuShareAppMessage({
            ...config,
            success: function () {

            }
        });

        wx.onMenuShareTimeline({
            ...config,
            success: function () {

            }
        });

        wx.updateAppMessageShareData({
            ...config,
            success: function () {

            }
        });

        wx.updateTimelineShareData({
            ...config,
            success: function () {

            }
        })

    });

    wx.error(function(res){
    });
};

3.微信二次分享时,自定义内容不生效

原因:

微信二次分享时,微信会自动向当前页面url中添加参数,例如:https://localhost:8080/login
微信二次分享时的连接为:https://localhost:8080/login?form=...等内容,
与生成wx.config参数时所需要的页面url产生差异,所以导致二次分享自定义内容失效


解决办法:

在html文件中重置一下路由
例如:
if(window.location.href.includes("from=")){
        window.location.href = "https://localhost:8080/login"
   }