【微信H5分享配置】解决IOS需刷新后才能分享成功

原因

最近在做公众号H5分享,出现了很无语的bug,安卓直接调用分享设置后分享成功,IOS死活不行,必须要刷新页面后才能设置分享配置成功。

现在微信必须是先进行updateAppMessageShareData配置后(onMenuShareAppMessage虽然是旧版的方法,但是全网都建议写上,我也不知道为什么),用户手动点击右上角三个点…,点击转发给朋友才能弹出转发弹窗,不可以代码调用分享。

解决办法如下(俺是vue2的写法,其他框架大差不差)

在页面初始化时判断机型,如果是首次进入且是IOS,需刷新页面后再调用配置

 created() {
        if (this.isIOS()) {
            let iosReload = sessionStorage.getItem('iosReload');
            if (iosReload) {
                // ...执行业务
                  this.getConfig();
            } else {
                // 如果是IOS,且是第一次刷新页面,则刷新当前页面
                sessionStorage.setItem('iosReload', true);
                window.location.reload();
            }
        } else {
                // ...执行业务
            this.getConfig();
        }
    },

请求后端,获取微信配置,设置分享

    methods: {
        isIOS() {
            return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
        },
		getConfig() {
            const that = this
            try {
                that.loading = true;
                // 后端请求地址
                getWeiXinConfig({ url: location.href }).then((res) => {
                    if (res.success) {
                        wx.config({
                            debug: false,
                            appId: , // 必填,公众号的唯一标识
                            timestamp: , // 必填,生成签名的时间戳
                            nonceStr: , // 必填,生成签名的随机串
                            signature: , // 必填,签名
                            jsApiList: [
                                'checkJsApi',
                                'updateAppMessageShareData',
                                'updateTimelineShareData',
                                'onMenuShareAppMessage', // 旧的接口,即将废弃(网上说是要把旧接口也填上去,不然注册会失败)
                                'onMenuShareTimeline', // 旧的接口,即将废弃
                                'onMenuShareQQ', // 旧接口,分享给QQ好友
                                'onMenuShareQZone' // 旧接口,分享到QQ空间
                            ] // 必填,需要使用的JS接口列表
                        });
                        wx.ready(function () {
                            wx.updateAppMessageShareData({
                                title: '', // 分享标题
                                desc: '', // 分享描述
                                link: , // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                                imgUrl: , // 分享图标
                                success: function () {
                                    // 设置成功
                                    // alert('设置分享成功')
                                },
                                fail: function (e) {
                                   
                                }
                            })
                            wx.onMenuShareAppMessage({
                                title: '', // 分享标题
                                desc: ``, // 分享描述
                                link: ``, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                                imgUrl: ``, // 分享图标
                                success: function () {
                                    // 设置成功
                                    // alert('分享成功')
                                },
                                fail: function (e) {
                                    // alert(JSON.stringify(e))
                                    // alert(e)
                                }
                            })
                            wx.error((err) => {
                                // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名
                                // console.log('验证失败', err)
                                // alert(JSON.stringify(err))
                            })
                        })
                    }
                }).finally(() => {
                    that.loading = false
                })
            } catch (e) {
                that.loading = false
                // commons.showMsg(e)
            }
        },
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值