账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    微信分享接口分享完成后在某些苹果设备上不能正常执行回调
    49
    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在某些场景下不难使用。

    请各位先生指点。。。。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 对于微信JS-SDK分享接口在部分苹果设备上无法正常执行回调的问题,可能的原因和解决方案有以下几点:

      1. 确保iOS系统版本和微信版本为最新版,旧版本可能会存在兼容性问题。

      2. 检查是否正确配置了JS-SDK并成功调用了updateTimelineShareDataupdateAppMessageShareData等分享相关的API,并且设置了正确的分享内容和回调函数。

      3. 在iOS 9.0及以上版本,需要在info.plist中添加URL Scheme白名单。请确认你的应用已经正确配置了scheme,即在LSApplicationQueriesSchemes中添加了wechat

      4. 回调函数的执行环境可能存在跨域问题,确保你的网页已设置好相应的CORS策略。

      5. 苹果设备上的Safari浏览器对JS有一定的限制,例如不允许自动触发某些操作(如弹窗、跳转等),检查回调函数内是否有这样的操作,如果有,尝试修改处理方式或者提示用户手动操作。

      6. 检查分享完成后,用户的实际操作步骤是否符合预期,比如有的设备上分享到微信聊天或朋友圈后,需要用户手动关闭分享页面才能回到原网页并触发回调。

      7. 使用真机进行调试,查看控制台是否有相关的错误信息,这有助于定位具体问题所在。

      如果以上都确认无误还是存在问题,建议参考微信官方文档详细排查:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62 。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部