為什么要設(shè)計(jì)啟動(dòng)流程
App的啟動(dòng)流程是每一個(gè)移動(dòng)應(yīng)用都需要精心設(shè)計(jì)的倔撞,一個(gè)優(yōu)秀的啟動(dòng)流程可以最大程度降低用戶(hù)的“等待感”,同時(shí)還能第一時(shí)間抓住用戶(hù)G點(diǎn)慕趴,使其有興趣繼續(xù)使用痪蝇。
一個(gè)典型的啟動(dòng)流程是如何設(shè)計(jì)的
移動(dòng)應(yīng)用發(fā)展到今天,啟動(dòng)流程其實(shí)已經(jīng)是一個(gè)標(biāo)準(zhǔn)件了冕房。不論什么類(lèi)型的應(yīng)用:電商躏啰、社交或是行業(yè)應(yīng)用它們的啟動(dòng)流程都是類(lèi)似的,正因?yàn)槿绱宋覀儾趴梢哉硪粋€(gè)典型的啟動(dòng)流程耙册。我們通過(guò)下面三個(gè)步驟來(lái)逐步呈現(xiàn)给僵。
第一步:?jiǎn)?dòng)過(guò)程中都有哪些實(shí)體元素?
我們隨便下載幾個(gè)App详拙,打開(kāi)它們帝际,基本都可以知道這一過(guò)程中涉及到了哪些元素:
啟動(dòng)頁(yè):打開(kāi)應(yīng)用立即呈現(xiàn)在用戶(hù)眼前的圖片就是啟動(dòng)頁(yè),它一般是應(yīng)用的 logo 和 slogan
引導(dǎo)頁(yè):如果我們是第一次打開(kāi)應(yīng)用饶辙,一般在啟動(dòng)頁(yè)之后會(huì)有幾張可以左右切換的圖片蹲诀,它們一般會(huì)告訴用戶(hù)這個(gè)產(chǎn)品是什么、做什么用弃揽、和別人有什么區(qū)別等侧甫,我們叫它引導(dǎo)頁(yè)
廣告頁(yè):應(yīng)用啟動(dòng)后,基于運(yùn)營(yíng)/業(yè)務(wù)的需求蹋宦,可以在啟動(dòng)頁(yè)之后增加一頁(yè)用于宣傳的頁(yè)面披粟,可以加入鏈接跳轉(zhuǎn)到應(yīng)用內(nèi)部某個(gè)落地頁(yè)面。
首頁(yè):應(yīng)用完全啟動(dòng)后冷冗,呈現(xiàn)給用戶(hù)的第一個(gè)頁(yè)面守屉,用戶(hù)到了這個(gè)頁(yè)面才可以正式體驗(yàn)應(yīng)用的相關(guān)功能。
這就是典型App啟動(dòng)過(guò)程中用戶(hù)可能看到的頁(yè)面元素
第二步:?jiǎn)?dòng)過(guò)程中可能存在哪些變化因素蒿辙?
在我們知道應(yīng)用啟動(dòng)過(guò)程中可能看到的頁(yè)面元素之后拇泛,現(xiàn)在應(yīng)該需要考慮的就是:用戶(hù)在這個(gè)過(guò)程中可能遇到什么情況滨巴,也就是我們常說(shuō)的使用場(chǎng)景。
綜合用戶(hù)使用場(chǎng)景俺叭,可能存在如下兩種情況:
網(wǎng)絡(luò)因素:即無(wú)網(wǎng)絡(luò)恭取、2G、3G熄守、4G或者WiFi
啟動(dòng)因素:首次啟動(dòng)或者不是首次啟動(dòng)
第三步:如何將實(shí)體和變化因素串起來(lái)蜈垮?
首先,我們先拋開(kāi)網(wǎng)絡(luò)因素看啟動(dòng)因素裕照,如果是應(yīng)用首次啟動(dòng)攒发,應(yīng)該是如何呢?
我們可以看到晋南,一個(gè)典型的App首次啟動(dòng)的流程是:先看到啟動(dòng)頁(yè)惠猿,然后新手引導(dǎo),最后進(jìn)入應(yīng)用的首頁(yè)
接下來(lái)负间,我們把網(wǎng)絡(luò)因素考慮進(jìn)來(lái)偶妖,那么網(wǎng)絡(luò)因素應(yīng)該放在哪兒,即:你希望在什么節(jié)點(diǎn)判斷用戶(hù)當(dāng)前所處的網(wǎng)絡(luò)環(huán)境政溃?有三個(gè)地方:
1. 一打開(kāi)就判斷
2. 啟動(dòng)頁(yè)結(jié)束后
3. 引導(dǎo)頁(yè)結(jié)束后
如果是第一種情況餐屎,那么如果用戶(hù)沒(méi)有網(wǎng)絡(luò)一打開(kāi)App就會(huì)被彈窗警告提示,應(yīng)用的啟動(dòng)流程會(huì)因此中斷玩祟,這時(shí)候你的App還要不要啟動(dòng)腹缩?用戶(hù)會(huì)不會(huì)想,我一打開(kāi)就蹦出這么個(gè)玩意(雖然知道是沒(méi)有網(wǎng)絡(luò))空扎? 那第二種情況和第一種情況也是一樣的
所以藏鹊,考慮到啟動(dòng)流程的流暢性,我們應(yīng)該把網(wǎng)絡(luò)的判斷放到引導(dǎo)頁(yè)之后转锈,也就是進(jìn)入首頁(yè)時(shí)盘寡,如下圖所示:
這就是一個(gè)APP典型的,用戶(hù)首次打開(kāi)時(shí)撮慨,系統(tǒng)的展示流程竿痰;那么好了,這時(shí)候我們?cè)侔蚜硗庖粋€(gè)因素考慮進(jìn)來(lái):如果用戶(hù)不是第一次打開(kāi)應(yīng)用呢砌溺,這個(gè)流程該如何進(jìn)行影涉?我們通過(guò)以下三個(gè)問(wèn)題來(lái)釋疑:
第一個(gè)問(wèn)題,是不是第一次有什么區(qū)別规伐?
如果是第一次蟹倾,App需要展示引導(dǎo)頁(yè);如果不是,則不需要展示鲜棠,同時(shí)可能需要加入廣告頁(yè)肌厨。
第二個(gè)問(wèn)題,為什么要特別針對(duì)不是第一次設(shè)計(jì)流程豁陆?
從第一個(gè)問(wèn)題柑爸,我們可以看到,如果不是第一次盒音,App有可能需要加入廣告頁(yè)表鳍;而廣告頁(yè)和引導(dǎo)頁(yè)是有本質(zhì)不同的,引導(dǎo)頁(yè)如果用戶(hù)不更新版本使用一次后即不會(huì)再使用里逆,而廣告頁(yè)即使不更新版本进胯,仍然需要展示用爪。那既然引導(dǎo)頁(yè)是和版本掛鉤的原押,所以引導(dǎo)頁(yè)一般是直接打包在版本更新的資源文件里面,而廣告頁(yè)與版本無(wú)關(guān)所以需要后臺(tái)手動(dòng)配置偎血,然后應(yīng)用下載之后進(jìn)行展示诸衔,說(shuō)了這么多,其實(shí)可以用就一句話(huà)形象說(shuō)明:引導(dǎo)頁(yè)是寫(xiě)死的颇玷,廣告頁(yè)是動(dòng)態(tài)的笨农。寫(xiě)死和動(dòng)態(tài)這兩個(gè)區(qū)別想必大家都心知肚明,那么為它專(zhuān)門(mén)設(shè)計(jì)一個(gè)流程也就順理成章了帖渠。
那應(yīng)該如何設(shè)計(jì)谒亦?
既然廣告頁(yè)是后臺(tái)動(dòng)態(tài)配置的,那么App應(yīng)該需要從服務(wù)器獲取并下載下來(lái)才行空郊,那么問(wèn)題來(lái)了份招,這廣告頁(yè)要什么時(shí)候下載呢?是用戶(hù)打開(kāi)App的時(shí)候去下載嗎狞甚?
當(dāng)然不是了锁摔,機(jī)智的互聯(lián)網(wǎng)人早想好辦法,既然不是第一次使用App哼审,那么完全可以在用戶(hù)使用的過(guò)程中默默的把廣告頁(yè)下載到本地谐腰,當(dāng)用戶(hù)下一次打開(kāi)App的時(shí)候,直接讀取緩存數(shù)據(jù)就行了
第三個(gè)問(wèn)題涩盾,如果確實(shí)需要十气,那么放在什么時(shí)候判斷是不是第一次?
把引導(dǎo)頁(yè)去掉之后春霍,這時(shí)候其實(shí)只有兩個(gè)地方桦踊,一個(gè)是在啟動(dòng)頁(yè)之前,一個(gè)是在啟動(dòng)頁(yè)之后终畅,如果在啟動(dòng)頁(yè)之前籍胯,畫(huà)風(fēng)是這樣的
對(duì)比這兩種流程竟闪,我想,大家都應(yīng)該知道哪種更好了吧杖狼?是的炼蛤,當(dāng)然是第二種啦~
解決這三個(gè)問(wèn)題之后,我們就可以著手處理不是第一次使用APP的啟動(dòng)流程了蝶涩,也就是處理上圖中的“其他流程”理朋。從第二個(gè)問(wèn)題,我們知道了绿聘,廣告頁(yè)是用戶(hù)在使用過(guò)程中自發(fā)下載的嗽上,那么系統(tǒng)判斷完不是第一次打開(kāi)后,就需要看本地是否緩存了廣告圖熄攘,如果有則展示兽愤,如果沒(méi)有則不展示。
到了這一步挪圾,我們需要思考浅萧,現(xiàn)在廣告圖有了,那是不是就一定展示呢哲思?需要考慮網(wǎng)絡(luò)環(huán)境嗎洼畅?我這里列出當(dāng)前用戶(hù)可能處在的網(wǎng)絡(luò)環(huán)境:無(wú)/2G/3G/4G/WiFi。我們一一分析棚赔,如果是沒(méi)有網(wǎng)絡(luò)帝簇,還要給用戶(hù)看廣告嗎?如果2G環(huán)境靠益,需要嗎丧肴?以此類(lèi)推...
當(dāng)你捋清楚這些關(guān)系之后,就能夠得到下面這張圖捆毫,當(dāng)然這是根據(jù)應(yīng)用本身的業(yè)務(wù)需求而定闪湾,并不適用所有產(chǎn)品,這里僅考慮通用的情況:
我們從圖中可以看到绩卤,如果是2G的網(wǎng)絡(luò)途样,考慮到可能頁(yè)面加載時(shí)間較長(zhǎng)(電商的廣告落地頁(yè)一般是專(zhuān)題H5活動(dòng)頁(yè)面,數(shù)據(jù)量很大)濒憋,會(huì)導(dǎo)致應(yīng)用啟動(dòng)中斷何暇,所以直接跳過(guò)了廣告頁(yè)進(jìn)入首頁(yè),只有當(dāng)用戶(hù)是處于:3G/4G/WiFi 網(wǎng)絡(luò)環(huán)境下凛驮,才展示給用戶(hù)廣告裆站,這樣可以確保用戶(hù)能夠較快訪(fǎng)問(wèn)廣告落地頁(yè)面,產(chǎn)生的廣告效果也會(huì)更好。
應(yīng)用正式啟動(dòng)后宏胯,還有一些非常重要的工作:例如羽嫡,校驗(yàn)版本、授權(quán)肩袍、加載廣告頁(yè)杭棵,我們把這些完善后,就是一個(gè)完整的應(yīng)用啟動(dòng)流程了:
總的來(lái)說(shuō)
對(duì)照上圖氛赐,我們?cè)侔堰@整個(gè)流程完整的描述出來(lái):
對(duì)于第一次啟動(dòng)的情況
1. 首先打開(kāi)啟動(dòng)頁(yè)魂爪,判斷是否第一次啟動(dòng),然后打開(kāi)引導(dǎo)頁(yè)這時(shí)候才看當(dāng)前用戶(hù)所處的網(wǎng)絡(luò)環(huán)境艰管,如果沒(méi)有網(wǎng)絡(luò)滓侍,則進(jìn)入首頁(yè),但是此時(shí)的首頁(yè)僅有框架沒(méi)有數(shù)據(jù)且需要一個(gè)沒(méi)有網(wǎng)絡(luò)的提示牲芋;如果有網(wǎng)絡(luò)撩笆,則展示最新的首頁(yè)。
對(duì)于不是第一次啟動(dòng)的情況:
1. 也是打開(kāi)啟動(dòng)頁(yè)街图,判斷是否第一次啟動(dòng)浇衬,然后需要判斷當(dāng)前客戶(hù)端有沒(méi)有緩存的廣告頁(yè)懒构,如果沒(méi)有餐济,則直接跳過(guò)進(jìn)入首頁(yè),也需要判斷網(wǎng)絡(luò)情況胆剧,這時(shí)候與第一次打開(kāi)沒(méi)有網(wǎng)絡(luò)不同的是絮姆,不是第一次打開(kāi)但是沒(méi)有網(wǎng)絡(luò),可以加載緩存數(shù)據(jù)秩霍,也就是說(shuō)篙悯,首頁(yè)看到的不只是框架還有數(shù)據(jù),只不過(guò)是之前的緩存數(shù)據(jù)铃绒,但是也需要提示沒(méi)有網(wǎng)絡(luò)鸽照;
2. 如果有廣告頁(yè),需要根據(jù)當(dāng)前用戶(hù)所處的網(wǎng)絡(luò)狀況決定是否展示颠悬,如果是沒(méi)有網(wǎng)絡(luò)/2G網(wǎng)絡(luò)矮燎,則不展示廣告圖,直接進(jìn)入緩存首頁(yè)赔癌;
3. 如果是3G/4G/WiFi 網(wǎng)絡(luò)環(huán)境诞外,那么展示此廣告圖,默認(rèn)展示3s灾票,用戶(hù)可以跳過(guò)峡谊;
4. 進(jìn)入首頁(yè)后,需要校驗(yàn)服務(wù)端是否有新版本,如果有需要提示用戶(hù)進(jìn)行版本更新既们;同時(shí)還需要不定期查看服務(wù)端是否有新的廣告頁(yè)濒析,如果有,則后臺(tái)自動(dòng)下載到客戶(hù)端本地啥纸,以供下次使用悼枢;如果是 iOS 版第一次啟動(dòng),還需要進(jìn)行必要的授權(quán)脾拆,例如位置馒索、網(wǎng)絡(luò)、推送等名船,關(guān)于授權(quán)的內(nèi)容绰上,將在下一篇文章中進(jìn)行更新,敬請(qǐng)期待渠驼。