关于微信公账号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 ...
随机推荐
- 3dsmax2017卸载/安装失败/如何彻底卸载清除干净3dsmax2017注册表和文件的方法
3dsmax2017提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dsmax2017失败提示3dsmax2017安装未完成,某些产品无法安装,也有时候想重新 ...
- openerp学习笔记 日期时间相关操作
日期格式化字符串:DATE_FORMAT = "%Y-%m-%d" 日期时间格式字符串:DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S" ...
- (转)shell变量及扩展
1.shell变量 shell变量赋值语句为”name=[value]“,等号两边不能有空格,可以给shell变量追加内容”name+=value“,取消shell变量的设置使用”unset name ...
- 权重平等分布局And TableRow布局误区
开头语: 本人最近在自学Android,虽然本人有2年Java Web的开发经验.但是发现Android的自学之路并不是那么平坦,我没有Android真机.但是有一个window phone的手机.开 ...
- CVE-2017-6920 Drupal远程代码执行漏洞学习
1.背景介绍: CVE-2017-6920是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. Drupal介绍:Drupal 是一个由 ...
- php对图片加水印--将文字作为水印加到图片
方法代码: /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $srcImg 原图片 * @param $wat ...
- Firebird execute block 批处理
火鸟的批处理,效率好高,使用简单. execute block as declare variable i ; begin ) do begin :i = :i + ; insert into m_u ...
- 面向对象 OOP中的抽象类,接口以及多态
[抽象类与抽象方法] 1.什么是抽象方法? 没有方法体{}的方法,必须使用abstract关键字修饰,这样的方法,我们称之为抽象方法. abstract function say() 2.什么是抽象类 ...
- office2007安装时显示安装程序找不到 office.zh-cn\officeLR.cab怎么办
根本原因是和VS2008有关解决方法如下:1. 找到vs2008安装程序(光盘,镜像文件,解压文件都一样),找到WCU文件夹在他里面找到WebDesignerCore文件夹,然后打开它找到WebDes ...
- json转化的时候如何忽略某些属性字段值
一.有时候在将对象或list对象转化为json的时候,我们可能不需要所有的属性值,这就需要我们去过滤掉这些属性了 我下面说两种比较流行的json包如何来忽略某些属性值 二. 使用jaskson包 1. ...