关于微信公账号H5 API 调用的坑 BUG
页面A已经配置过,如果是单页面跳转,则页面B可以共享当前的SDK配置(至少菜单是这样的)
刷新页面,原先的菜单仍然会保持原样,只是调用SDK已经失效了,需要重新配置,重新配置后,菜单仍然会保持原样(如果没有显式调用)
IOS不会保持原样!刷新页面所有菜单都出来了!!!
微信会记录当前页面的菜单(除非显示改变它,否则再次进来,即使刷新页面,仍然会保持原来的菜单样子)
重新进入公众号,菜单会恢复原样吗?
地理位置测试:如果A页面已经配置过SDK,能正确获取地理位置,但是B页面获取地理位置会报签名错误(也就是说路由切换时B页面是需要重新配置的),这个和菜单的显示隐藏不同!!!
设置分享内容测试:
如果A页面设置了分享内容,那跳转到B页面,分享时(没有重设分享内容),虽然内容已经不同,但仍然触发A页面设置的分享回调(这很危险,特别是B页面重新配置SDK失败或忘了配置的情况下,会产生逻辑错乱)
然后在B页面设置分享内容,分享失效(B页面没有重设sdk),回到A页面,然后分享,发现分享的内容是当时B页面设置的分享内容(回调也是B页面的结果)!!
然后A页面重设分享内容,可以设置成功
刷新页面后,分享内容的设置将失效
page2刷新页面,从page2调回到page1,重新配置微信SDK[ok],重新设置分享内容,分享内容无效(并且无法产生分享成功/取消的回调)
A页面配置了微信,并设置了分享内容,B页面重新配置了微信,没有设置分享内容,这时候分享居然是有效的,而且是A页面当时分享的内容
B页面设置分享内容,然后回到A页面,A页面分享出来的是B页面设置的分享内容(居然没有分享失效[相当于上次的微信配置仍然有效])
ios打开微信调试模式后,分享取消或成功,不会产生回调
ios取消分享,会成功回调(关闭微信调试模式后),但是分享成功不会立即回调(会有延迟[这个问题调试了很久!!我艹],解决办法是写在timeout里面!我日)
微信配置/成功/失败回调:
wx.ready是可以提前调用的,而且可以随意多次使用(微信配置好之后,都会依次调用[可以推断:wx.ready是push到注册config:ok事件的])
wx.error也可以提前调用,而且error只能被调用依次,后面的error调用总是覆盖前面的(可以推断出error是直接替换的)
wx.config/ready/error,三者没有严格的调用顺序要求
测试微信配置还没有彻底完成,就跳转路由:
A页面路由到B页面,如果B页面在500ms内(大概时间)就配置了sdk:ok,调用显示/隐藏,报:permission denied,调地理位置,同样报:permission denied.(所以在切换路由,进入页面马上配置微信,需要做延时调用)
入口页面即使在构造函数中,就开始配置微信也不会有任何问题
A页面配置微信,B页面直接调用显示/隐藏函数,报:permission denied,调用地理位置,报:invalid signature(本页面重新配置后,正常)
A页面正在配置微信(还没有结束),路由到B页面,B页面比A页面先配置微信(B页面会报两次invalid singature,所有的注册函数都会被调用两次)
B页面比A页面后配置微信,那么A页面的功能会报:invalid signature,B页面的一切正常
IOS:如果A页面还没有配置完,路由到了B页面,则A页面的所有功能函数回调都没问题,B页面报:invalid singature(但B页面的所有功能依然能够正常使用[及时B页面多次重新配置,报签名错误,仍然能够正常使用所有功能])一次配置,永久有效??
第一次配置就错误,后来手动配置成功,除了取微信坐标外所有功能都可以正常使用(debug模式下),非DEBUG模式下,还是都能正常调用(和Android一致)
微信的所有回调函数,都会使angular脱离作用域(作用域外执行的代码(如变量赋值),不会刷新视图)
外面订阅了Observerable,函数里面直接返回Observable.of<any>(),是否可以直接被调用
某些页面配置成功了,设置分享内容也成功了,分享的内容(链接和标题)是错误的
原因1:分享的页面必须是同域名页面,如果页面域名不同,分享设置无法生效!
关于微信公账号H5 API 调用的坑 BUG的更多相关文章
- 微信公众账号开发之N个坑(二)
上篇说到微信公众账号的几个坑,前面五个,已经说到菜单,宝宝继续往下赘述了.可惜,还不知道宝宝的宝宝到底是不是心疼宝宝呢,完了,我凌乱了... 回到正题,我们就不吐槽其他的了,上一篇说到微信的菜单了,那 ...
- 微信公众账号开发之N个坑(一)
我这人干活没有前奏,喜欢直接开始.完了,宝宝已经被你们带污了.. 微信公众账号开发文档,官方版(https://mp.weixin.qq.com/wiki),相信我,我已经无力吐槽写这个文档的人了,我 ...
- H5Plus 入门学习-Dcloud H5+ API调用实例
使用API Reference完整简单的操作,更多操作查看官方文档. 最后提供项目的下载地址[下载][一款移动APP演示]
- 微信支付开发h5调用
这两天做微信支付开发.碰到大坑.纠结死我了.好不容做完. 后台java:直接上代码:注意区分前后端的变量大小写... @RequestMapping(value = "/index" ...
- Android微信SDK API 调用教程1
最近一直在调用微信的API,却发现一直调用不成功,纠结了好久,各方面找教程,找官方,官方里的文档也只是写得很模糊,说是按三步走. 1.申请App_ID 2.填写包名3. 获取程序签名的md5值, 这三 ...
- Android微信SDK API 调用教程
最近一直在调用微信的API,却发现一直调用不成功,纠结了好久,各方面找教程,找官方,官方里的文档也只是写得很模糊,说是按三步走. 1.申请App_ID 2.填写包名3. 获取程序签名的md5值, 这 ...
- Android微信SDK API 调用教程【转】
原文:http://blog.csdn.net/worker90/article/details/8211451 最近一直在调用微信的API,却发现一直调用不成功,纠结了好久,各方面找教程,找官方,官 ...
- [h5+api]移动app开发用到的微信好友,朋友圈,qq好友,新浪微博分享合集
适用H5+环境,能够使用plus方法的移动app中 /** * Created by HBuilder. * User: tyx * Date: 2018-11-21 * Time: 17:28:51 ...
- 在Angular.js中的H5页面调用Web api时跨域问题处理
/// <summary> /// 被请求时 /// 在Angular.js中的H5页面调用Web api时跨域问题处理 /// </summary> /// <para ...
随机推荐
- pip安装Python依赖环境
将包依赖信息保存在requirements.txt文件 pip freeze > requirements.txt 根据依赖文件安装依赖 pip install -r requirements. ...
- element ui 表格提交时获取所有选中的checkbox的数据
<el-table ref="multipleTable" :data="appList" @selection-change="changeF ...
- TCP/CP调试
首先要先给自己的电脑分配一个固定的内网IP,不可以自动获取,然后将这个固定的IP设置为DMZ主机就可以将你的电脑暴露给外网,就能实现你想要的功能!! {1}设置成固定IP的方法是在路由的DHCP服务器 ...
- 加载 Firefox 配置
有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用 firebug在打开的页面上继续定位页面元素,调试起来不方便 .加载浏览器配置,需要用 FirefoxProfile(profile_d ...
- 从外网GitHub clone开源项目的时候,.git文件过大,导致克隆慢
以clone impala为例,主要是加入-depth=1参数: git clone -b cdh4-2.0 --depth=1 https://github.com/cloudera/Impala. ...
- 将forme表单转换为Json对象
//将Form 表单转换为Json字符串 $.fn.serializeObject = function () { var o = {}; var a = this.serializeArray(); ...
- wxss无法调用本地资源图片
微信小程序中,wxss中不能调用本地资源图片作为背景图片,奇怪的是在微信开发者工具中可以调用,但是到了真机预览的时候发现并不行,有的电脑上的连微信开发者工具里也不可以调用. 原因在于小程序上传的是代码 ...
- Java - 如何进行安全发布
首先让我简单解释一下所谓"发布". 发布(publish),使对象可以在当前作用域之外的代码中可见,如果该对象被发布,则该对象的非私有域中引用的所有实例同样也会被发布. 不仅仅是作 ...
- Java 8 读取文件
以前的Java版本中读取文件非常繁琐,现在比较简单.使用Java8的Files以及Lambda,几句代码就可以搞定. public static String getXml() { StringBuf ...
- phpmyadmin登录报错crypt_random_string requires at least one symmetric cipher be loaded 解决方法
通过phpmyadmin登陆时提示以下错误: phpmyadmin crypt_random_string requires at least one symmetric cipher be load ...