現象描述
從應用市場打開快應用,點擊返回時,系統添加桌面圖標只出現一次彈窗。但是使用deeplink打開跳轉頁面,點擊返回時,系統添加桌面圖標會出現一次彈窗后再閃一次。
問題分析
現網正常通過Deeplink、網頁跳轉方式進入快應用時,使用系統創建桌面圖標時,出現一次彈框,不會再閃一次。對Deeplink跳轉的頁面代碼進行分析,發現頁面代碼里對onBackPress(監聽返回按鈕動作)函數進行了重寫處理。
其中this.entryDirect為Deeplink跳轉時攜帶的參數。
onBackPress是用戶點擊返回按鈕時觸發的,當返回true表示頁面按應用自己的返回邏輯處理,返回false表示按默認的返回邏輯處理,不返回值則和返回false一樣,按默認的返回邏輯處理。
在這段代碼中,開發者在onBackPress中判斷為Deeplink進入快應用時,調用this.app.exit()退出應用,此時會觸發finish事件,而開發者沒有在onBackPress返回true,所以按默認的返回邏輯處理,也觸發了finish事件。快應用中心在監聽到finish事件后,就會彈框引導用戶創建圖標,從而導致出現兩次彈框。
解決方法
對界面onBackPress函數代碼進行修改,調用this.app.exit()退出應用后,不再使用默認按鈕返回邏輯。
建議與總結
當頁面需要使用onBackPress(監聽返回按鈕動作)函數處理自己邏輯時,需要在函數最后返回true,否則處理完onBackPress代碼后默認會走系統返回邏輯,容易導致異常。
原文鏈接:https://developer.huawei.com/consumer/cn/forum/topic/0204422876080970622?fid=18
原作者:Mayism