公司的工程,转的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 安卓也报错了
所以 有没有大神做过这个怎么解决啊
3 个回复
易软 (作者)
将wx 打出来 安卓下 是有angetConfig 的 但是在ios下就没有??
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 - 后端
你好,有关注到你写的关于h5应用企业微信的贴,尝试以后还是有点问题,能否帮忙提供一下脱敏源码,感谢
易软 (作者)
是有点问题。应该还是全局污染的问题
2023-06-10 10:49