1 DeepLink的實(shí)現(xiàn)思路
在Android開發(fā)中屿衅,可以通過在清單文件中配置scheme來實(shí)現(xiàn)頁面跳轉(zhuǎn)莹弊,所以可以通過scheme匹配的方式來實(shí)現(xiàn)DeepLink的功能涡尘。配置方式大概分為三種:
1.1 為每一個(gè)要跳轉(zhuǎn)的Activity都指定一個(gè)對應(yīng)的匹配條件响迂,一般項(xiàng)目復(fù)雜頁面太多的話,就比較麻煩不太方便栓拜。
1.2 配置閃屏頁為匹配頁面惠昔,閃屏頁一般都是APP冷啟動時(shí)才會出現(xiàn),而且打開首頁后镇防,閃屏頁就會關(guān)閉,這種方式在APP沒有啟動的情況下可以很好的處理對應(yīng)的Inteng信息诫给,但是如果APP已經(jīng)啟動過了啦扬,去拉起閃屏頁就不合理了中狂。
1.3 配置首頁為匹配頁面扑毡,首頁在APP中一般都是常駐的,一般情況下首頁關(guān)閉就意味著APP的退出勋又,所以可以選擇用首頁來統(tǒng)一處理匹配scheme得到的Intent信息换帜,然后進(jìn)行統(tǒng)一的跳轉(zhuǎn)分發(fā)(需要將首頁Activity的啟動模式設(shè)置為singleTask以防止首頁創(chuàng)建多個(gè)頁面)
2 DeepLink的實(shí)現(xiàn)案例
在首頁的onCreate方法和onNewIntent方法里面,接收Intent參數(shù)進(jìn)行相應(yīng)的跳轉(zhuǎn)處理:
上述兩個(gè)步驟就可以實(shí)現(xiàn)deeplink的效果了,可以在as的終端輸入命令:
如果有多個(gè)參數(shù)端铛,&符號之前要加\進(jìn)行轉(zhuǎn)義疲眷,否則后面的參數(shù)接收不到狂丝。
但是在上面還有個(gè)問題,那就是在APP還沒啟動的情況下讯屈,由于直接拉起的是首頁頁面县习,并沒有經(jīng)過閃屏頁(如果APP已經(jīng)啟動過了,不需要走閃屏頁叛本,直接走首頁然后進(jìn)行相應(yīng)跳轉(zhuǎn)是沒有問題的)来候。這里主要的解決方案就是記錄一個(gè)是否經(jīng)過閃屏啟動的一個(gè)標(biāo)志位就行逸雹,如果是就正常處理梆砸,如果不是就要重新打開閃屏頁。
1 在閃屏頁面跳轉(zhuǎn)到首頁時(shí)峭拘,在Intent中傳遞一個(gè)標(biāo)志位鸡挠,以代表閃屏頁已經(jīng)啟動過了搬男。
2 在首頁頁面中獲取IS_SPLASH_LUNCH的值來判斷閃屏頁面是否已經(jīng)啟動過缔逛,如果為true不進(jìn)行特殊處理,如果為false就關(guān)閉首頁并開啟閃屏頁按脚,還要傳遞uri數(shù)據(jù)給閃屏頁辅搬。