由于業(yè)務(wù)需求,小程序需要做到根據(jù)場(chǎng)景的不同進(jìn)入不同的頁(yè)面
場(chǎng)景分別是
場(chǎng)景一:通過(guò)掃描二維碼進(jìn)入今日?qǐng)?bào)價(jià)功能(測(cè)試數(shù)據(jù))
場(chǎng)景二:通過(guò)微信發(fā)現(xiàn)通知欄小程序點(diǎn)擊進(jìn)入公司列表(測(cè)試數(shù)據(jù))
就這樣根據(jù)不同場(chǎng)景進(jìn)入不同頁(yè)面拦键,微信小程序也提供了不同的場(chǎng)景(具體請(qǐng)看開(kāi)發(fā)文檔)
因此需要:發(fā)現(xiàn)欄小程序主入口(1001)和掃描二維碼(1011)兩個(gè)場(chǎng)景值
獲取場(chǎng)景可以通過(guò)生命周期函數(shù)獲取侨艾,例如:onShow虏肾,onLaunch侣灶。通過(guò)生命周期函數(shù)參數(shù)scene就可以獲取場(chǎng)景值锰茉,例如:
onShow:function(options){
console.log(options.scene)//輸出場(chǎng)景值
}
就這樣獲取到場(chǎng)景值之后就可以根據(jù)不同場(chǎng)景進(jìn)入不同頁(yè)面了倔既,通過(guò)路由管理的頁(yè)面重定向wx.redirectTo實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)(具體請(qǐng)看開(kāi)發(fā)文檔)
坑就在這里了K∏!
在onShow生命周期函數(shù)中渤涌,安卓手機(jī)通過(guò)wx.redirectTo是可以重定向成功佩谣,但蘋(píng)果就會(huì)失敗,百度了一圈实蓬,谷歌了一輪茸俭,還是沒(méi)找到問(wèn)題所在,然后就輸出了一下失敗回調(diào)函數(shù)的錯(cuò)誤日志看看
報(bào):
errMsg ?redirectTo:fail no page
就是說(shuō)頁(yè)面沒(méi)有加載安皱,然后我自己就猜想是不是蘋(píng)果在頁(yè)面沒(méi)完全加載完wx.redirectTo就已經(jīng)結(jié)束了调鬓,所以報(bào)找不到頁(yè)面的錯(cuò)誤,但安卓就不會(huì)呢练俐?袖迎?(難道。腺晾。燕锥。)后來(lái)我添加了一個(gè)setTimeout定時(shí)函數(shù)測(cè)試了一下,果然延遲了100毫米之后蘋(píng)果是可以重定向了悯蝉。但這不是我想要的業(yè)務(wù)情景归形,因?yàn)榧恿搜訒r(shí),會(huì)看到默認(rèn)頁(yè)面的短暫一瞬間才重定向到另外一個(gè)頁(yè)面鼻由。
現(xiàn)在處理的方法是在定義一個(gè)全局的場(chǎng)景值暇榴,然后在默認(rèn)頁(yè)面加載的時(shí)候再去做判斷場(chǎng)景值,然后再重定向蕉世,還沒(méi)想到更好的處理方法蔼紧。。