监听onPause事件,当不是用户主动暂停音乐时,在回调中执行this.data.audioCtx()。 我是这么解决当ios系统通知栏展示时音乐暂停问题,但是能明显感觉到音乐暂停有重新开始之间的卡顿
ios手机,上拉或者下拉或者接听微信语音电话,音乐暂停,未继续播放[图片] IOS手机,打开小程序,音乐播放,这个时候突然来个语音通话,接听、挂断(或者上拉、下拉)。音乐未播放,而是暂停了。期望继续播放。onShow、onHide事件都未触发。 const app = getApp() Page({ data: { audioCtx: null }, onLoad: function () { wx.setInnerAudioOption({ mixWithOther: false, obeyMuteSwitch: false }); this.init(); }, init: function () { if (!this.data.audioCtx) { this.data.audioCtx = wx.createInnerAudioContext(); this.data.audioCtx.src = '/static/00_00_37.30.mp3'; this.data.audioCtx.autoplay = true; this.data.audioCtx.loop = true; this.data.audioCtx.onPause(() => { console.log('上拉或者下拉或者接听微信语音电话,这里面收到到了,onPause--') }); } }, })
2021-01-15根据weixin-js-sdk依赖包中的index.js中miniProgram.getEnv方法,得到判断方式是根据window.__wxjs_environment === ‘miniprogram’ 来判断是微信环境还是小程序环境,那么在后期的应用过程中直接使用window.__wxjs_environment 判断微信小程序环境是不是更快速。 但是考虑到为什么这个方法是异步的,是否是小程序设置__wxjs_environment 与 开发者获取有可能存在先后的问题? 最近选择的解决方案代码如下: 这样会比之前快很多 if(window.__wxjs_environment){ //__wxjs_environment表明在小程序内 wx.miniProgram.getEnv(function () {}) //异步去添加WeixinJSBridgeReady监听 cb('mini') }else{ //不一定在小程序内 wx.miniProgram.getEnv(function (res) { if (res.miniprogram) { // 判断是否在小程序内 cb('mini') } else { cb('wx') } }) }
wx.miniProgram.getEnv在android手机vue比react返回结果慢1-2s?if (browserEnv.isInWeixin()) { // 判断是否在微信中 alert('isInWeixin') wx.miniProgram.getEnv(function (res) { alert('getEnv') if (res.miniprogram) { // 判断是否在小程序内 cb('mini') } else { cb('wx') } }) } else { cb('h5') } [图片][图片] 两个alert中间间隔的时间vue项目和react项目相差1-2s 手机型号:华为mate20Pro,Android10,MEUI10.1.0; 微信版本7.0.19,引入weixin-js-sdk版本都是1.4.0-test; 小程序线上最低基础库1.9.97; 本地调试基础库2.10.3
2020-10-14