- 需要获取微信配置:
所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用
-
startRecord, stopRecord
1、微信JSSDK
的API
都有一个大问题, 就是如果调用时间间隔过短, 就非常可能产生无效调用. 无效调用的意思是, 虽然你调用了某个API
, 但是相当于没调用,它不会触发success
, fail
或complete
中的任何一个callback
!
2、打比方说, 你做一个"按下录音, 抬手停止录音"的功能, 如果用户点击了一下录音按钮, 相当于快速地startRecord
然后stopRecord
, 那么stopRecord
是极有可能是无效的, 不会执行任何callback
.
3、然而问题还不止这个, 微信JSSDK
的调用是异步的. 举例来说就是, 你调用startRecord
的时间, 和startRecord
的success
的callback
被执行的时间可能间隔了若干毫秒甚至秒. 这意味着, 用户点击按钮可能会造成: 虽然是先调用startRecord
再调用stopRecord
, 但是可能stopRecord
先于startRecord
调用成功!
4、第一次调用startRecord
会弹出提示“是否允许获取录音权限”,而此时已经检测不到touchend
事件,因此录音动画会一直执行,解决:在mounted
(用的vue
)的时候
def.wx.ready(() => {
var allow_record = localStorage.getItem("allow_record");
if (!allow_record || allow_record !== true) {
def.wx.startRecord({
success: function() {
localStorage.setItem("allow_record", true);
def.wx.stopRecord();
},
fail: function() {
// alert("失败");
},
cancel: function() {
// alert("取消");
}
});
}
});
- 使用
jssdk
上传多张图片,在安卓正常,在ios
只能上传成功最后一张
ios
使用递归上传 - 音频无法自动播放
//一般情况下,这样就可以自动播放了,但是一些奇葩iPhone机不可以
document.getElementById('car_audio').play();
//必须在微信Weixin JSAPI的WeixinJSBridgeReady才能生效
document.addEventListener("WeixinJSBridgeReady", function () {
document.getElementById('audio').play();
document.getElementById('video').play();
}, false);
- 在自己的公众号能实现支付,从别的公众号进来不能支付。
既然自己的公众号能支付了,那么很有可能是跳转过来的公众号的url出现的问题。
正确的:http://3w.yijia.com/wechat/pay/?id=1
错误的:http://3w.yijia.com/wechat/pay?id=1
参数(也就是问号之前)要以/结尾,因为这是公众号支付配置的要求。
网友评论