Android Deeplink(二)

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冷啟動(dòng)時(shí)才會(huì)出現(xiàn),而且打開首頁后,閃屏頁就會(huì)關(guān)閉,這種方式在APP沒有啟動(dòng)的情況下可以很好的處理對應(yīng)的Inteng信息,但是如果APP已經(jīng)啟動(dòng)過了,去拉起閃屏頁就不合理了。

1.3 配置首頁為匹配頁面,首頁在APP中一般都是常駐的,一般情況下首頁關(guān)閉就意味著APP的退出,所以可以選擇用首頁來統(tǒng)一處理匹配scheme得到的Intent信息,然后進(jìn)行統(tǒng)一的跳轉(zhuǎn)分發(fā)(需要將首頁Activity的啟動(dòng)模式設(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還沒啟動(dòng)的情況下,由于直接拉起的是首頁頁面,并沒有經(jīng)過閃屏頁(如果APP已經(jīng)啟動(dòng)過了,不需要走閃屏頁,直接走首頁然后進(jìn)行相應(yīng)跳轉(zhuǎn)是沒有問題的)。這里主要的解決方案就是記錄一個(gè)是否經(jīng)過閃屏啟動(dòng)的一個(gè)標(biāo)志位就行,如果是就正常處理,如果不是就要重新打開閃屏頁。

1 在閃屏頁面跳轉(zhuǎn)到首頁時(shí),在Intent中傳遞一個(gè)標(biāo)志位,以代表閃屏頁已經(jīng)啟動(dòng)過了。

2 在首頁頁面中獲取IS_SPLASH_LUNCH的值來判斷閃屏頁面是否已經(jīng)啟動(dòng)過,如果為true不進(jìn)行特殊處理,如果為false就關(guān)閉首頁并開啟閃屏頁,還要傳遞uri數(shù)據(jù)給閃屏頁。

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

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

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