為什么要設(shè)計啟動流程
App的啟動流程是每一個移動應(yīng)用都需要精心設(shè)計的,一個優(yōu)秀的啟動流程可以最大程度降低用戶的“等待感”,同時還能第一時間抓住用戶G點,使其有興趣繼續(xù)使用。
一個典型的啟動流程是如何設(shè)計的
移動應(yīng)用發(fā)展到今天,啟動流程其實已經(jīng)是一個標準件了。不論什么類型的應(yīng)用:電商、社交或是行業(yè)應(yīng)用它們的啟動流程都是類似的,正因為如此我們才可以整理一個典型的啟動流程。我們通過下面三個步驟來逐步呈現(xiàn)。
第一步:啟動過程中都有哪些實體元素?
我們隨便下載幾個App,打開它們,基本都可以知道這一過程中涉及到了哪些元素:
啟動頁:打開應(yīng)用立即呈現(xiàn)在用戶眼前的圖片就是啟動頁,它一般是應(yīng)用的 logo 和 slogan
引導(dǎo)頁:如果我們是第一次打開應(yīng)用,一般在啟動頁之后會有幾張可以左右切換的圖片,它們一般會告訴用戶這個產(chǎn)品是什么、做什么用、和別人有什么區(qū)別等,我們叫它引導(dǎo)頁
廣告頁:應(yīng)用啟動后,基于運營/業(yè)務(wù)的需求,可以在啟動頁之后增加一頁用于宣傳的頁面,可以加入鏈接跳轉(zhuǎn)到應(yīng)用內(nèi)部某個落地頁面。
首頁:應(yīng)用完全啟動后,呈現(xiàn)給用戶的第一個頁面,用戶到了這個頁面才可以正式體驗應(yīng)用的相關(guān)功能。

這就是典型App啟動過程中用戶可能看到的頁面元素
第二步:啟動過程中可能存在哪些變化因素?
在我們知道應(yīng)用啟動過程中可能看到的頁面元素之后,現(xiàn)在應(yīng)該需要考慮的就是:用戶在這個過程中可能遇到什么情況,也就是我們常說的使用場景。
綜合用戶使用場景,可能存在如下兩種情況:
網(wǎng)絡(luò)因素:即無網(wǎng)絡(luò)、2G、3G、4G或者WiFi
啟動因素:首次啟動或者不是首次啟動
第三步:如何將實體和變化因素串起來?
首先,我們先拋開網(wǎng)絡(luò)因素看啟動因素,如果是應(yīng)用首次啟動,應(yīng)該是如何呢?

我們可以看到,一個典型的App首次啟動的流程是:先看到啟動頁,然后新手引導(dǎo),最后進入應(yīng)用的首頁
接下來,我們把網(wǎng)絡(luò)因素考慮進來,那么網(wǎng)絡(luò)因素應(yīng)該放在哪兒,即:你希望在什么節(jié)點判斷用戶當(dāng)前所處的網(wǎng)絡(luò)環(huán)境?有三個地方:
1. 一打開就判斷
2. 啟動頁結(jié)束后
3. 引導(dǎo)頁結(jié)束后
如果是第一種情況,那么如果用戶沒有網(wǎng)絡(luò)一打開App就會被彈窗警告提示,應(yīng)用的啟動流程會因此中斷,這時候你的App還要不要啟動?用戶會不會想,我一打開就蹦出這么個玩意(雖然知道是沒有網(wǎng)絡(luò))? 那第二種情況和第一種情況也是一樣的
所以,考慮到啟動流程的流暢性,我們應(yīng)該把網(wǎng)絡(luò)的判斷放到引導(dǎo)頁之后,也就是進入首頁時,如下圖所示:

這就是一個APP典型的,用戶首次打開時,系統(tǒng)的展示流程;那么好了,這時候我們再把另外一個因素考慮進來:如果用戶不是第一次打開應(yīng)用呢,這個流程該如何進行?我們通過以下三個問題來釋疑:
第一個問題,是不是第一次有什么區(qū)別?
如果是第一次,App需要展示引導(dǎo)頁;如果不是,則不需要展示,同時可能需要加入廣告頁。
第二個問題,為什么要特別針對不是第一次設(shè)計流程?
從第一個問題,我們可以看到,如果不是第一次,App有可能需要加入廣告頁;而廣告頁和引導(dǎo)頁是有本質(zhì)不同的,引導(dǎo)頁如果用戶不更新版本使用一次后即不會再使用,而廣告頁即使不更新版本,仍然需要展示。那既然引導(dǎo)頁是和版本掛鉤的,所以引導(dǎo)頁一般是直接打包在版本更新的資源文件里面,而廣告頁與版本無關(guān)所以需要后臺手動配置,然后應(yīng)用下載之后進行展示,說了這么多,其實可以用就一句話形象說明:引導(dǎo)頁是寫死的,廣告頁是動態(tài)的。寫死和動態(tài)這兩個區(qū)別想必大家都心知肚明,那么為它專門設(shè)計一個流程也就順理成章了。
那應(yīng)該如何設(shè)計?
既然廣告頁是后臺動態(tài)配置的,那么App應(yīng)該需要從服務(wù)器獲取并下載下來才行,那么問題來了,這廣告頁要什么時候下載呢?是用戶打開App的時候去下載嗎?
當(dāng)然不是了,機智的互聯(lián)網(wǎng)人早想好辦法,既然不是第一次使用App,那么完全可以在用戶使用的過程中默默的把廣告頁下載到本地,當(dāng)用戶下一次打開App的時候,直接讀取緩存數(shù)據(jù)就行了
第三個問題,如果確實需要,那么放在什么時候判斷是不是第一次?

把引導(dǎo)頁去掉之后,這時候其實只有兩個地方,一個是在啟動頁之前,一個是在啟動頁之后,如果在啟動頁之前,畫風(fēng)是這樣的


對比這兩種流程,我想,大家都應(yīng)該知道哪種更好了吧?是的,當(dāng)然是第二種啦~
解決這三個問題之后,我們就可以著手處理不是第一次使用APP的啟動流程了,也就是處理上圖中的“其他流程”。從第二個問題,我們知道了,廣告頁是用戶在使用過程中自發(fā)下載的,那么系統(tǒng)判斷完不是第一次打開后,就需要看本地是否緩存了廣告圖,如果有則展示,如果沒有則不展示。

到了這一步,我們需要思考,現(xiàn)在廣告圖有了,那是不是就一定展示呢?需要考慮網(wǎng)絡(luò)環(huán)境嗎?我這里列出當(dāng)前用戶可能處在的網(wǎng)絡(luò)環(huán)境:無/2G/3G/4G/WiFi。我們一一分析,如果是沒有網(wǎng)絡(luò),還要給用戶看廣告嗎?如果2G環(huán)境,需要嗎?以此類推...
當(dāng)你捋清楚這些關(guān)系之后,就能夠得到下面這張圖,當(dāng)然這是根據(jù)應(yīng)用本身的業(yè)務(wù)需求而定,并不適用所有產(chǎn)品,這里僅考慮通用的情況:

我們從圖中可以看到,如果是2G的網(wǎng)絡(luò),考慮到可能頁面加載時間較長(電商的廣告落地頁一般是專題H5活動頁面,數(shù)據(jù)量很大),會導(dǎo)致應(yīng)用啟動中斷,所以直接跳過了廣告頁進入首頁,只有當(dāng)用戶是處于:3G/4G/WiFi 網(wǎng)絡(luò)環(huán)境下,才展示給用戶廣告,這樣可以確保用戶能夠較快訪問廣告落地頁面,產(chǎn)生的廣告效果也會更好。
應(yīng)用正式啟動后,還有一些非常重要的工作:例如,校驗版本、授權(quán)、加載廣告頁,我們把這些完善后,就是一個完整的應(yīng)用啟動流程了:

總的來說
對照上圖,我們再把這整個流程完整的描述出來:
對于第一次啟動的情況
1. 首先打開啟動頁,判斷是否第一次啟動,然后打開引導(dǎo)頁這時候才看當(dāng)前用戶所處的網(wǎng)絡(luò)環(huán)境,如果沒有網(wǎng)絡(luò),則進入首頁,但是此時的首頁僅有框架沒有數(shù)據(jù)且需要一個沒有網(wǎng)絡(luò)的提示;如果有網(wǎng)絡(luò),則展示最新的首頁。
對于不是第一次啟動的情況:
1. 也是打開啟動頁,判斷是否第一次啟動,然后需要判斷當(dāng)前客戶端有沒有緩存的廣告頁,如果沒有,則直接跳過進入首頁,也需要判斷網(wǎng)絡(luò)情況,這時候與第一次打開沒有網(wǎng)絡(luò)不同的是,不是第一次打開但是沒有網(wǎng)絡(luò),可以加載緩存數(shù)據(jù),也就是說,首頁看到的不只是框架還有數(shù)據(jù),只不過是之前的緩存數(shù)據(jù),但是也需要提示沒有網(wǎng)絡(luò);
2. 如果有廣告頁,需要根據(jù)當(dāng)前用戶所處的網(wǎng)絡(luò)狀況決定是否展示,如果是沒有網(wǎng)絡(luò)/2G網(wǎng)絡(luò),則不展示廣告圖,直接進入緩存首頁;
3. 如果是3G/4G/WiFi 網(wǎng)絡(luò)環(huán)境,那么展示此廣告圖,默認展示3s,用戶可以跳過;
4. 進入首頁后,需要校驗服務(wù)端是否有新版本,如果有需要提示用戶進行版本更新;同時還需要不定期查看服務(wù)端是否有新的廣告頁,如果有,則后臺自動下載到客戶端本地,以供下次使用;如果是 iOS 版第一次啟動,還需要進行必要的授權(quán),例如位置、網(wǎng)絡(luò)、推送等,關(guān)于授權(quán)的內(nèi)容,將在下一篇文章中進行更新,敬請期待。