易软
易软
  • 发布:2022-02-15 11:21
  • 更新:2023-06-06 09:02
  • 阅读:2600

uniapp转H5应用在企业微信上ios端无法获取到wx.agentConfig方法

分类:uni-app

公司的工程,转的H5应用,两种方法都试过都无法在ios端调用到agentConfig方法

方法一:

在index.html中引入了
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script type="text/javascript" src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
然后再until.js公共库里我进行了注册

initJssdk: function(callback) {  
                let userInfo = ESUtils.ESDB.getLoginInfo();  
                let cropId = userInfo.cropId;  
                let userId = userInfo.id;  
                let url = window.location.href;  
                let server = userInfo.serverurl;  
                window.wx = window.jWeixin;  
                ESUtils.network.request({  
                    data: {  
                        .....  
                    },  
                    success: res => {  
                        if (res.data.response.code == 200) {  
                            let info = res.data.body;  
                            wx.config({  
                                beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题  
                                debug: false, // 开启调试模式  
                                appId: info.appId, // 必填,企业微信的corpID  
                                timestamp: info.timestamp, // 必填,生成签名的时间戳  
                                nonceStr: info.nonceStr, // 必填,生成签名的随机串  
                                signature: info.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法  
                                jsApiList: [  
                                    'chooseImage',  
                                    'scanQRCode',  
                                    'previewImage',  
                                    'getLocation',  
                                    'previewFile',  
                                    'openLocation',  
                                    'uploadImage',  
                                    'getLocalImgData',  
                                    'downloadImage',  
                                    'startRecord',  
                                    'stopRecord',  
                                    'onVoiceRecordEnd',  
                                    'playVoice',  
                                    'pauseVoice',  
                                    'stopVoice',  
                                    'onVoicePlayEnd',  
                                    'uploadVoice',  
                                    'downloadVoice',  
                                    'translateVoice'  
                                ]  
                            });  
                            wx.ready((res) => {  
                                callback && callback(info);  
                            })  
                            wx.error(() => {  

                            });  
                        }  
                    }  
                });  
        }  
initJssdkAgent: function(callback) {  
            this.initJssdk((info) => {  
                // window.wx = window.jWeixin;  
                setTimeout(()=>{  
                    wx.agentConfig({  
                        corpid: info.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致  
                        agentid: info.angetId, // 必填,企业微信的应用id (e.g. 1000247)  
                        timestamp: info.timestamp, // 必填,生成签名的时间戳  
                        nonceStr: info.nonceStr, // 必填,生成签名的随机串  
                        signature: info.signature1, // 必填,签名,见附录-JS-SDK使用权限签名算法  
                        jsApiList: [  
                            "selectEnterpriseContact",  
                            "getContext",  
                            "getCurExternalContact",  
                            "openUserProfile",  
                            "getCurExternalChat",  
                            "selectExternalContact",  
                            "selectPrivilegedContact",  
                            "createChatWithMsg",  
                            "sendChatMessage",  
                            "openExistedChatWithMsg",  
                            "shareToExternalContact",  
                            "shareToExternalChat",  
                            "setShareAttr",  
                            "getShareInfo",  
                            "shareAppMessage", //自定义转发发到会话  
                            "shareWechatMessage", //自定义转发到微信  
                            "openEnterpriseChat"  
                        ],  
                        success: res => {  
                            console.log(res);  
                            callback && callback(res)  
                        },  
                        fail: err => {  
                            console.log(err);  
                            callback && callback(err)  
                        }  
                    });   
                }, 500);  
            });  
        }

然后调用 在安卓是没有任何问题的但是在ios端就会报系统的 undefined is not an object(evaluation ‘wx.config’) 只有重新刷新一次后config就获取到了,但是又会报angetConfig失败

方法二:动态加载sdk

createdScript: function(callback) {  
            let userInfo = ESUtils.ESDB.getLoginInfo();  
            let cropId = userInfo.cropId;  
            let userId = userInfo.id;  
            let url = window.location.href;  
            let server = userInfo.serverurl;  
            window.wx = null;  
            const script1 = document.createElement("script");  
            script1.setAttribute("type", "text/javascript");  
            script1.setAttribute("referrerpolicy", "origin");  
            script1.setAttribute("src", "https://res.wx.qq.com/open/js/jweixin-1.2.0.js");  
            document.head.appendChild(script1);  
            script1.onload = function() {  
                const script2 = document.createElement("script");  
                script2.setAttribute("type", "text/javascript");  
                script2.setAttribute("referrerpolicy", "origin");  
                script2.setAttribute("src", "https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js");  
                document.head.appendChild(script2);  
                script2.onload = () => {  
                    callback && callback(server, userId, url, cropId)  
                }  
            }  
        }

然后initJssdk中调用createdScript 将代码放在createdScript的回调中

这样在安卓也没有问题但是在ios中报错为 undefined is not function (near '...wx.agentConfig')

很多方法都试过 包括将 wx 改为 jWeixin 可是还是不行 改为jWeixin 安卓也报错了
所以 有没有大神做过这个怎么解决啊

2022-02-15 11:21 负责人:无 分享
已邀请:
易软

易软 (作者)

将wx 打出来 安卓下 是有angetConfig 的 但是在ios下就没有??

DCloud_UNI_GSQ

DCloud_UNI_GSQ

看下我发布的文章

  • 易软 (作者)

    https://ask.dcloud.net.cn/article/35380这篇是吧,试过了还是不行。我现在找到方法了我也发了出来

    https://ask.dcloud.net.cn/article/39636

    2022-02-17 09:43

  • DCloud_UNI_GSQ

    回复 易软: 两个方案在企业上都不行吗?

    2022-02-17 16:33

  • 易软 (作者)

    回复 DCloud_UNI_GSQ: 是的。

    2022-02-17 16:47

  • 易软 (作者)

    回复 DCloud_UNI_GSQ: 不是ios获取到了安卓失败就是安卓成功ios失败

    2022-02-17 16:52

ambar_coder

ambar_coder - 后端

你好,有关注到你写的关于h5应用企业微信的贴,尝试以后还是有点问题,能否帮忙提供一下脱敏源码,感谢

  • 易软 (作者)

    是有点问题。应该还是全局污染的问题

    2023-06-10 10:49

该问题目前已经被锁定, 无法添加新回复