最近一年來也玩過幾個小程序祸憋,都是些比較簡單的demo。直到前段時間肖卧,由于公司業(yè)務(wù)需要蚯窥,著手開發(fā)了一套播放音頻的微信小程序,發(fā)現(xiàn)這里面的坑還真不少塞帐。下面就簡要總結(jié)一下:
小程序存在問題
-
手機端redirectTo跳轉(zhuǎn)頁面會保留原有頁面的數(shù)據(jù)拦赠,再次進來不會丟失;pc端如果是redirectTo葵姥,relauch離開頁面再回來荷鼠,原頁面數(shù)據(jù)會丟失redirectTo,relauch離開頁面數(shù)據(jù)就會卸載榔幸,官方修復(fù)了這個bug - 微信6.7.2版本
wx.getBackgroundAudioManager()
獲取全局音頻允乐,開發(fā)版與體驗版無法在后臺播放,必須要在 app.json 中配置requiredBackgroundModes
屬性:"requiredBackgroundModes": ["audio"]
- 小程序button按鈕邊框去不掉削咆,可以設(shè)置
button::after{border:none}
- 小程序需要首次展示的東西最好設(shè)置為
wx:if=“{{isShow}}”
牍疏,防止第一次進入變量值為undefined,頁面閃爍問題拨齐,例如:
data: {
isShow: false
}
<block wx:if=“{{isShow}}”>
<view>頁面</view>
</block>
<block wx:else>
<loading />
</block>
音頻播放問題
- 如果頁面有多個音頻鳞陨,以id作為唯一標識
- slider組件的
bindchanging
函數(shù),不停地拖拽會出現(xiàn)bug瞻惋,使用bindchang
代替厦滤,既可以點擊跳轉(zhuǎn)進度,又可以拖拽跳轉(zhuǎn)進度 -
wx.seekBackgroundAudio({postion: time})
在手機上無法跳轉(zhuǎn)至指定進度熟史,改為獲取全局播放音頻audio馁害,然后使用audio.seek(time)
- 在同一個頁面切換不同音頻,如果全局音頻正在播放蹂匹,會先觸發(fā)該音頻的onStop方法碘菜,再觸發(fā)點擊音頻的onPlay方法
- PC端調(diào)試工具與蘋果手機在音頻暫停、手動停止或者自然結(jié)束之后仍會觸發(fā)一次onTimeUpdate函數(shù)限寞,注意清空這個函數(shù)忍啸,在onPlay方法中重新定義該函數(shù)
WePY遇到的問題
- 如果頁面的data是對象,只改變對象的屬性值頁面無法重新渲染履植,必須給對象重新賦值计雌,頁面才會重新渲染
- 使用
this.xx = xx
更新數(shù)據(jù)時,如果每次更新的數(shù)據(jù)值沒有變化玫霎,則頁面不重新渲染 - 使用WePY時凿滤,在卸載頁面函數(shù)中修改數(shù)據(jù)妈橄,需要使用
this.$apply()
讓它立即改變;另外翁脆,在異步函數(shù)內(nèi)部眷蚓,一定要使用this.$apply()
立即改變修改的數(shù)據(jù)值
動態(tài)效果圖: