- History.pushState()实现的SPA导致微信jssdk配置签名失败
首先贴微信jssdk的文档原文: 所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。简单来说解决方案就是IOS的配置一次就行,android的话就要每跳到一个新页面(也就是通过[代码]History.pushState()[代码]改变了当前地址栏URL)就重新生成签名并进行配置。 接下来说说我的实际情况: IOS下是完全没问题的,反正就是用落地页的URL来生成签名并且配置嘛。 我的备用机——一加X(最新微信客户端版本6.5.23,安卓版本5.x)按上述技术解决方案是完完全全没有问题的。 我的主力机——小米6(同样是最新微信客户端版本6.5.23,MIUI9,安卓版本7.0)按上述技术解决方案就出问题了:落地页面自然是没问题的;点解超链接跳转到第二个页面,我选择在dom渲染结束后这一时机来生成新的配置,并保证在执行[代码]wx.config()[代码]后再接[代码]wx.ready(function() {})[代码],由于我开了jssdk的debug模式,因此会alert回馈给我看jssdk的执行结果:首先是配置的结果——[代码]{"errMsg":"config:ok"}[代码],接着就是我在[代码]wx.ready(function() {})[代码]中用以测试jssdk功能是否正常而使用的[代码]checkJsApi()[代码],结果是这样的:[代码]{"errMsg":"checkJsApi:permission denied"}[代码] 总结一下:我的方案总体来说应该是没有问题的,毕竟在IOS以及一加X上都是正常的,因此我怀疑这里面是不是有机型还是系统方面的兼容性差异。 另外:我也试过在小米6上,干脆就像IOS那样只配置一次(按落地页URL),也还是不行。
2017-12-17 - 关于转发客服消息到微信官方网页版客服工具“失败”的问题
首先说一下我做到哪一步了: 1. 我在微信公众平台(小程序)那已启用消息推送,且消息服务器已通过。 2. 我自己试验,在小程序端客服会话中发言,在消息服务器上打印Log,是有POST请求过来的。 3. 我使用EasyWeChat(一个非官方的微信SDK)的方法来响应“success”,是有效的。 好的,接下来,问题来了: 我在响应包中返回 MsgType 为 transfer_customer_service 的消息时,却显示“该小程序暂时无法提供服务,请稍后再试”,很明显,微信服务器不认我这个响应包。我查了一下LOG,请求是这样的: [代码]{[代码][代码]"ToUserName"[代码][代码]:[代码][代码]"gh_1169fa146440"[代码][代码],[代码][代码]"FromUserName"[代码][代码]:[代码][代码]"oCrkc0Qd9l3CCOswcycqS6yu7zs4"[代码][代码],[代码][代码]"CreateTime"[代码][代码]:[代码][代码]"1499432954"[代码][代码],[代码][代码]"MsgType"[代码][代码]:[代码][代码]"text"[代码][代码],[代码][代码]"Content"[代码][代码]:[代码][代码]"11"[代码][代码],[代码][代码]"MsgId"[代码][代码]:[代码][代码]"6440015500420683938"[代码][代码]}[代码]而响应是这样的: [代码]<[代码][代码]xml[代码][代码]><[代码][代码]ToUserName[代码][代码]>[代码][代码]<![CDATA[oCrkc0Qd9l3CCOswcycqS6yu7zs4]]>[代码][代码]</[代码][代码]ToUserName[代码][代码]><[代码][代码]FromUserName[代码][代码]>[代码][代码]<![CDATA[gh_1169fa146440]]>[代码][代码]</[代码][代码]FromUserName[代码][代码]><[代码][代码]CreateTime[代码][代码]>1499432954</[代码][代码]CreateTime[代码][代码]><[代码][代码]MsgType[代码][代码]>[代码][代码]<![CDATA[transfer_customer_service]]>[代码][代码]</[代码][代码]MsgType[代码][代码]></[代码][代码]xml[代码][代码]>[代码] 我自己的分析是这样的: - [代码]响应“success”[代码]的时候是没问题的,也就是说微信端跟我的消息服务器之间的通信是OK的。 - [代码][代码]在响应包中返回 MsgType 为 transfer_customer_service 的消息时报错,表示微信那边不认这个响应的结果。 这到底是什么情况呢?
2017-07-07