微信分享接口分享完成后在某些苹果设备上不能正常执行回调

发布于 2022-09-07 15:42:42 字数 3035 浏览 22 评论 0

  1. 我写了一个H5项目,现在已经在线上,发现使用ip7 plus ip x等手机在分享给朋友后可以正常完成回调然后执行跳转动作,但是如果分享到朋友圈的话,分享完成后(朋友圈分享成功)不能正常的执行回调完成跳转的事件,请问有哪位遇到这古怪的问题吗?
  2. 以下附上相关代码
    <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript" charset="utf-8">
        $(function () {
            var bodyH = $("body").height();
            var candyH = $(".candy").height();
            var bottomH = $(".bottom").height();
            var h = bodyH - (bodyH - candyH) - bottomH;
            $(".candy .container").css("min-height",h+"px");

            wx.config({!! $shareConfig['js_sdk_config'] !!});
            wx.ready (function () {
                // 微信分享的数据
                var shareData = {
                    "imgUrl" : '{{$shareConfig['imgUrl']}}',    // 分享显示的缩略图地址
                    "link" : '{{$shareConfig['link']}}',    // 分享地址
                    "desc" : '{{$shareConfig['desc']}}',   // 分享描述
                    "title" : '{{$shareConfig['title']}}',   // 分享标题
                    success : function () {
                        // 分享成功可以做相应的数据处理
                        console.log('share success');
                        var _candy_id = '{{$candy->id ?? false}}';
                        var _user_id  = '{{$user->id ?? false}}';
                        var _openid   = '{{$user->openid ?? false}}';
                        var _post_json = {candy_id:_candy_id,user_id:_user_id,openid:_openid};
                        $.ajaxSetup({
                            headers: {
                                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                            }
                        });
                        $.ajax({
                            type: "POST",
                            url: "{{url('/share')}}",
                            data: _post_json,
                            dataType: "json",
                            success: function(data){
                                if (data.code === '1024'){
                                    document.getElementById("redirect").click();
                                }
                            }
                        });
                    }
                };
                wx.onMenuShareTimeline (shareData);
                wx.onMenuShareAppMessage (shareData);
            });
            wx.error(function(res){
                // config信息验证失败会执行error函数,如签名过期导致验证失败,
                // 具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,
                //对于SPA可以在这里更新签名。
                alert("好像出错了!!");
            });
        });
    </script>

注意:

<body>
<a href="{{url('/signUp', array('abbreviation'=>$candy->abbreviation))}}" style="visibility: hidden;" id="redirect"></a>
</body>
document.getElementById("redirect").click();

这行代码是为了兼容部分手机不能正常跳转的问题,取代windows.location.href在某些场景下不难使用。

请各位先生指点。。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

月野兔 2022-09-14 15:42:42

clipboard.png

感谢以上各位的出谋划策,闷头调试了一天,重要找到了一个不知道为什么解决了此问题的解决方案,那就是加一个定时器!!!

            wx.config({!! $shareConfig['js_sdk_config'] !!});
            wx.ready (function () {
                // 微信分享的数据
                var shareData = {
                    "imgUrl" : '{{$shareConfig['imgUrl']}}',    // 分享显示的缩略图地址
                    "link" : '{{$shareConfig['link']}}',    // 分享地址
                    "desc" : '{{$shareConfig['desc']}}',   // 分享描述
                    "title" : '{{$shareConfig['title']}}',   // 分享标题
                    success : function () {
                        alert('success');
                        // 分享成功可以做相应的数据处理
                        console.log('share success');
                        var _candy_id = '{{$candy->id ?? false}}';
                        var _user_id  = '{{$user->id ?? false}}';
                        var _openid   = '{{$user->openid ?? false}}';
                        var _post_json = {candy_id:_candy_id,user_id:_user_id,openid:_openid};
                        $.ajaxSetup({
                            headers: {
                                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                            }
                        });
                        setTimeout(function(){
                            //回调要执行的代码
                            $.ajax({
                                type: "POST",
                                url: "{{url('/share')}}",
                                data: _post_json,
                                dataType: "json",
                                success: function(data){
                                    // 分享成功后跳转页面
                                    if (data.code === '1024'){
                                        document.getElementById("redirect").click();

                                    }
                                }
                            });
                        }, 500);

                    }
                };
                wx.onMenuShareAppMessage (shareData);
                wx.onMenuShareTimeline (shareData);
            });

setTimeout(call_function, time)

大家在此处加一个定时器就可以解决这个问题!!!

离笑几人歌 2022-09-14 15:42:42

你这传的代码只有看到你调用了
wx.onMenuShareTimeline (shareData);
wx.onMenuShareAppMessage (shareData);
根本不知道做了什么

请爱~陌生人 2022-09-14 15:42:42

clipboard.png
可以在微信开发者工具中查看分享配置成功没有,工具上面也可以查看分享回调的!

瑾兮 2022-09-14 15:42:42

图片描述

分享做调整了,具体看分享功能调整

庆幸我还是我 2022-09-14 15:42:42

你好!我也遇到和你同样 的问题,现在尝试添加延迟测试看看!谢谢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文