关于微信公账号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 ...
随机推荐
- APP开发的三种技术对比
目前来说主流的App开发方式有三种:Native App .Web App.Hybird App.下面我们来分析一下这三种App开发方式的优劣对比: 一 :Native App 即 原生App开发 优 ...
- Unity QualitySettings.antiAliasing 抗锯齿
QualitySettings.antiAliasing 抗锯齿 Description 描述 Set The AA Filtering option. 设置AA过滤选项. The AntiAliaz ...
- mojing手柄遥杆控制
using UnityEngine; using UnityEngine.UI; using System.Collections; using MojingSample.CrossPlatformI ...
- springboot和quartz整合实现动态定时任务(持久化单节点)
Quartz是一个完全由java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制,它支持定时任务持久化到数据库,从而避免了重启服务器时任务丢失,支持分布式多节点,大大的 ...
- 虚拟机下linux 的root密码忘记怎么修改(转)
1.开机时任意按一个方向键,进入界面,选择linux系统,按e键进入 2.然后用上下键选择kerner(内核)那一行,按e键进入编辑界面,编辑界面最后一行显示如下:(grub edit> ker ...
- poj 2105 IP Address
IP Address Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 18951 Accepted: 10939 Desc ...
- RabbitMQ入门-理论
目录 RabbitMQ简介 RabbitMQ原理简介 RabbitMQ安装 .NET Core 使用 RabbitMQ Hello World 工作队列 扇型交换机 直连交换机 主题交换机 远程过程调 ...
- java启动线程时 extends与implements的一个差异
java extends与implements在使用时的一个差异: Implements: public class ThreadImplementsTest implements Runnable{ ...
- 使用Charles为Android设备抓取https请求的包
之前开发的Android APP使用的都是http请求,之后改成了https,就出现了以下情况,无法正常读取抓取的内容 找了好多资料说法大概差不多,照着弄,结果出现如下情况,后来发现这种情况其实是手机 ...
- 借助 CORS 从 JavaScript 使用 API 应用
应用服务提供内置的跨域资源共享 (CORS) 支持,可让 JavaScript 客户端对 API 应用中托管的 API 进行跨域调用.应用服务允许配置对 API 的 CORS 访问,无需在 API 中 ...