通过这几天的调试验证发现以下几点问题: 1.因使用的是uniapp搭建的项目,uniapp内置的有一个wx对象,导致了JS-SDK中的wx对象不能使用,企业微信Api文档上边说到过也可以使用jWeixin对象,通过调试验证后发现,jWeixin对象,只能用于安卓端、PC端、Mac端,IOS端中不能使用。解决方案如下:以下注释的为解决方案 <!DOCTYPE html> <html lang="zh-CN"> <head></head> <body> <noscript> <strong>Please enable JavaScript to continue.</strong> </noscript> </body> <script> // 处理uni内部自带wx对象 window.wx = {}; </script> <!-- 先处理uni内置对象后在引用 --> <!-- 引入企业微信的JS-SDK开始 --> <script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script> <!-- 引入企业微信的JS-SDK结束 --> </html> 2.由于IOS端是延迟注入的,如需使用agentConfig接口的话,会出现agentConfig接口调用不起来,有两种解决方案,解决方案如下: 1.使用定时器,延迟调用,0.5s就可以。 setTimeout(() => { wx.agentConfig({ corpid: _this.data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致 agentid: _this.data.agentid, // 必填,企业微信的应用id (e.g. 1000247) timestamp: _this.data.timestamp1, // 必填,生成签名的时间戳 nonceStr: _this.data.noncestr1, // 必填,生成签名的随机串 signature: _this.data.agent_conf_sign, // 必填,签名,见附录-JS-SDK使用权限签名算法 jsApiList: ['getContext', 'getCurExternalContact', 'sendChatMessage'], //必填,传入需要使用的接口名称 success: function(agent) { // wx.ready(function() { // resolve(agent); // }) } }); }, 500) 2.把agentConfig放在config的ready方法中即可。 wx.ready(function() { wx.agentConfig({ corpid: _this.data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致 agentid: _this.data.agentid, // 必填,企业微信的应用id (e.g. 1000247) timestamp: _this.data.timestamp1, // 必填,生成签名的时间戳 nonceStr: _this.data.noncestr1, // 必填,生成签名的随机串 signature: _this.data.agent_conf_sign, // 必填,签名,见附录-JS-SDK使用权限签名算法 jsApiList: ['getContext', 'getCurExternalContact', 'sendChatMessage'], //必填,传入需要使用的接口名称 success: function(agent) { } }) }) 总结:既然官方已经把jWeixin抛出来使用了,就请把IOS端没有jWeixin对像的问题解决一下。。。
为什么在iso端config检查调用的接口,除了agentConfig通过其他aip全是false?只有IOS端有问题 [图片]
2021-07-30已经找出问题所在,在IOS端中不能使用jWeixin对象
第三方自建H5应用,为什么JS-SDK在IOS端中只有config能调用,其它的接口都不能调用?通过在config中开启了debug后测试发现,只有PC端和安卓端上的接口可以调用成功,而IOS端的接口只有config能调用成功,其它的接口均没有调用 // 通过config接口注入权限验证配置 jWeixin.config({ beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: corpid, // 必填,企业微信的corpID timestamp: timestamp, // 必填,生成签名的时间戳 nonceStr: noncestr, // 必填,生成签名的随机串 signature: conf_sign, // 必填,签名,见 附录-JS-SDK使用权限签名算法 jsApiList: ['agentConfig'] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来 }); console.log(jWeixin, 'jWeixin') jWeixin.ready(() => { jWeixin.checkJsApi({ jsApiList: ['agentConfig', 'getContext', 'getCurExternalContact', 'sendChatMessage'], // 需要检测的JS接口列表,所有JS接口列表见附录2, success: function(res) { console.log(res) // 以键值对的形式返回,可用的api值true,不可用为false // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"} } }); // _this.$setStorage('agent1', 'wjp'); // 通过agentConfig注入应用的权限 jWeixin.agentConfig({ corpid: corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致 agentid: agentid, // 必填,企业微信的应用id (e.g. 1000247) timestamp: timestamp1, // 必填,生成签名的时间戳 nonceStr: noncestr1, // 必填,生成签名的随机串 signature: agent_conf_sign, // 必填,签名,见附录-JS-SDK使用权限签名算法 jsApiList: ['getContext', 'getCurExternalContact', 'sendChatMessage'], //必填,传入需要使用的接口名称 success: function(agent) { // 获取进入H5页面的入口环境 // _this.$setStorage('agent2', 'agent'); // _this.$setStorage('agent', agent); jWeixin.invoke('getContext', {}, function(res) { if (res.err_msg == "getContext:ok") { //返回进入H5页面的入口类型,目前有normal、contact_profile、single_chat_tools、group_chat_tools、chat_attachment let entry = res.entry; _this.$setStorage('entry', entry); if (entry == 'single_chat_tools') { jWeixin.invoke('getCurExternalContact', {}, function(CurExternal) { // _this.$setStorage('getCurExternalContact', CurExternal); if (CurExternal.err_msg == "getCurExternalContact:ok") { getApp().globalData.userId = CurExternal.userId; // _this.$setStorage('CurExternal', CurExternal); } else { // _this.$setStorage('CurExternal1', CurExternal); }; }); }; }; }); }, fail: function(res) { if (res.errMsg.indexOf('function not exist') > -1) { alert('版本过低请升级') } } }); }); 安卓:[图片][图片][图片][图片] PC:[图片] [图片] [图片] [图片] IOS:[图片][图片]
2021-07-29楼主,请问你这个为题解决了吗?
自定义组件properties传递对象修改问题一、问题描述: 1、自定义了头部导航,写了一个公共组件<mp-header>,<mp-header>组件properties 接受一个header对象,在A页面中引入了<mp-header>组件,A页面的js中定义 data:{ header: { title: "", back:function(){ //返回指定页面 } } } 2、现在有这样一个问题,当我不修改header里面title的时候,<mp-header>组件中能正确接受到header里面的back函数,当我修改header里面的title之后,<mp-header>组件中接收到的back是个null; [图片] [图片] 3、在页面中修改header的方法如下: var header = this.data.header; header.title = title this.setData({ header: header }) 请官方大神指导
2019-12-18