uni-app 啟動(dòng)界面(splash)參數(shù)配置說(shuō)明

說(shuō)明:應(yīng)用啟動(dòng)時(shí)為了提升用戶體驗(yàn)(不顯示黑屏)需設(shè)置啟動(dòng)界面,相關(guān)配置參考Manifest.json文件中的“應(yīng)用圖標(biāo)和啟動(dòng)圖片”章節(jié)。

啟動(dòng)界面的默認(rèn)邏輯是應(yīng)用啟動(dòng)時(shí)顯示,此時(shí)在后臺(tái)異步加載應(yīng)用的入口頁(yè)面(通常為index.html),當(dāng)入口頁(yè)面加載完成后(webview的loaded事件觸發(fā))自動(dòng)關(guān)閉啟動(dòng)界面并顯示入口頁(yè)面。即App引擎會(huì)自動(dòng)檢測(cè)首頁(yè)渲染,若未渲染則不關(guān)閉splash,提升用戶體驗(yàn)。

1. 啟動(dòng)圖配置項(xiàng)(manifest.json —> app-plus —> splashscreen)

屬性 類型 默認(rèn)值 描述 備注
alwaysShowBeforeRender Boolean true 白屏?xí)r是否開啟程序啟動(dòng)界面 為保證用戶體驗(yàn),建議開啟
waiting Boolean true 程序啟動(dòng)界面是否顯示等待雪花 -
autoclose Boolean true App引擎是否自動(dòng)關(guān)閉程序啟動(dòng)界面 -
delay Boolean 0 啟動(dòng)界面在應(yīng)用的首頁(yè)面加載完畢后延遲關(guān)閉的時(shí)間 僅在 autoclose 設(shè)置為 true 時(shí)有效

(1) alwaysShowBeforeRender 可設(shè)置首頁(yè)白屏檢測(cè)開關(guān),默認(rèn)為true,則splash的關(guān)閉邏輯為:

  • App啟動(dòng)時(shí),App引擎自動(dòng)檢測(cè)首頁(yè)渲染情況,若首頁(yè)未渲染(白屏),則不關(guān)閉splash;否則,關(guān)閉splash;
  • 若啟動(dòng)時(shí)間超過(guò)10秒,則不管首頁(yè)是否白屏,自動(dòng)關(guān)閉splash

注意:若App啟動(dòng)時(shí)有動(dòng)態(tài)顯示其他頁(yè)面的需求,場(chǎng)景舉例:

  • 歡迎頁(yè)場(chǎng)景:首次啟動(dòng),顯示App歡迎頁(yè);否則,顯示首頁(yè)內(nèi)容
  • 登錄頁(yè)場(chǎng)景:用戶未登錄,打開登錄頁(yè);否則,顯示首頁(yè)內(nèi)容
    此時(shí),App引擎無(wú)法高效判斷首頁(yè)及跳轉(zhuǎn)頁(yè)渲染情況,建議將alwaysShowBeforeRender 設(shè)置為false,開發(fā)者手動(dòng)調(diào)用 plus.navigator.closeSplashscreen() 關(guān)閉啟動(dòng)界面。

(2) autoclose

  • 默認(rèn)為true:此時(shí)delay設(shè)置有效(delay 不能任意使用,從應(yīng)用啟動(dòng)到 splash 關(guān)閉的總時(shí)長(zhǎng),不會(huì)超過(guò) 6s。也就是說(shuō),delay 的時(shí)長(zhǎng)也是計(jì)算在這個(gè) 6s 的限制內(nèi))。
  • 修改為false:需開發(fā)者手動(dòng)調(diào)用 plus.navigator.closeSplashscreen() 方法關(guān)閉啟動(dòng)圖(這個(gè)時(shí)間不能太晚,6s 超時(shí)后依舊會(huì)主動(dòng)關(guān)閉);通常在打開入口頁(yè)面時(shí)還需要做一些額外的業(yè)務(wù)邏輯等待操作(如提交服務(wù)器更新數(shù)據(jù),預(yù)創(chuàng)建Webview窗口等)時(shí)使用。

2. 示例

"splashscreen" : {
     "alwaysShowBeforeRender" : true,//白屏?xí)r是否開啟程序啟動(dòng)界面
     "waiting" : true,//程序啟動(dòng)界面是否顯示等待雪花
     "autoclose" : true,//是否自動(dòng)關(guān)閉程序啟動(dòng)界面
     "delay" : 0 //啟動(dòng)界面在應(yīng)用的首頁(yè)面加載完畢后延遲關(guān)閉的時(shí)間
 },

3. 常見啟動(dòng)界面問(wèn)題

(1) 應(yīng)用一直停留在啟動(dòng)界面無(wú)法進(jìn)入應(yīng)用
查看manifest.json中plus->splashscreen節(jié)點(diǎn)下的autoclose屬性值,如果設(shè)置為false則需要查看應(yīng)用的入口頁(yè)面(index.html)中是否正確調(diào)用plus.navigator.closeSplashscreen()方法

  • 通常如果不需要做一些業(yè)務(wù)邏輯等待(如等待服務(wù)器返回?cái)?shù)據(jù)、預(yù)創(chuàng)建Webview窗口等)操作的情況,應(yīng)該直接將autoclose屬性值設(shè)置true

HBuilder新建的空白App默認(rèn)是自動(dòng)關(guān)閉啟動(dòng)畫面的,但官方的幾個(gè)示例,如Hello H5+、Hello mui的啟動(dòng)圖片都是在首頁(yè)的plusready里手動(dòng)關(guān)閉的。如果開發(fā)者新建了示例模板應(yīng)用,又刪除了首頁(yè)plusready里的plus.navigator.closeSplashscreen(),就會(huì)導(dǎo)致應(yīng)用停留在啟動(dòng)界面無(wú)法進(jìn)入。

  • 切記不要在頁(yè)面初始時(shí)使用alert()
    如果你在plus ready里調(diào)用了plus.navigator.closeSplashscreen(),但是在該代碼生效前使用了alert,那么由于alert阻斷了后續(xù)代碼的執(zhí)行,根本無(wú)法執(zhí)行到closeSplashscreen,進(jìn)而導(dǎo)致啟動(dòng)封面關(guān)不掉。

(2) 是否可自定義html頁(yè)面作為應(yīng)用啟動(dòng)界面
App云端打包不支持,如果有原生開發(fā)環(huán)境,則可以使用5+ SDK做原生開發(fā)來(lái)實(shí)現(xiàn)。

參考:uni-app 啟動(dòng)界面(splash)參數(shù)配置說(shuō)明 | 啟動(dòng)慢的原因啟動(dòng)界面、封面圖片、Splash關(guān)不掉,一直轉(zhuǎn)圈,無(wú)法進(jìn)入

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容