ios上關(guān)于Universal Link 前端部署的應(yīng)用
前言:
文章會適當(dāng)說一些如何開發(fā)iOS上的universal link,但類似的文章太多了一艘一大堆,每篇都介紹的挺清楚,因此也不是重點
本文更加會側(cè)重從前端的角度,將整個universal link 部署應(yīng)用到wap app中的一些策略和一些問題解決辦法
其實整個Universal Link沒啥難的,真正上線過Universal link的人這些應(yīng)該都趟過一遍了,本文主要是我們team去應(yīng)用Universal link的時候一些文檔沉淀和記錄
Schema VS Universal Link
Deeplink相關(guān)的技術(shù),在wap中喚起app其實應(yīng)用最最廣泛的并不是Universal Link,而是直接Schema跳轉(zhuǎn)
1 location.href?=? ‘ schema://xxxx’
并且一般各大APP都會給自己做一套路由體系,這樣其實可以直接在schema頭后面對接路由體系,做到一行schema定位打開任意App內(nèi)功能界面(我就不詳細(xì)扯路由的事了)
1
2
3
4
5
6 -?(BOOL)application:(UIApplication?*)application?openURL:(NSURL?*)url?sourceApplication:(NSString?*)sourceApplication?annotation:(id)annotation?{
???? if ?([[url?absoluteString]?hasPrefix:@ “ schema://” ])?{
????????[[WKDispatcher?sharedInstance]?operationObjectFromRouteURL:[url?absoluteString]]; //路由
???????? return ?YES;
????}
}
如果單純?yōu)榱藢崿F(xiàn)deeplink -- 在WAP上打開App,并且傳遞來數(shù)據(jù)信息,定位App內(nèi)的具體邏輯,那么Schema就夠了,其實沒必要上Universal Link,Schema相當(dāng)于是很特殊的Url,他是schema://xxx這種樣子,如果安裝了APP才能支撐跳轉(zhuǎn)這種Schema Url,如果沒安裝APP就沒任何效果,而Universal Link則是把普通url,長http://xxx.xxx.xxx/xxx這樣的Normal Url,如果安裝了App,就能像Schema一樣傳遞給App,延續(xù)App內(nèi)邏輯,如果沒裝App,則還會繼續(xù)在瀏覽器里跳轉(zhuǎn)這個Normal Url
Schema的弊端
Schema無法判斷是否安裝App
一定會有這樣的產(chǎn)品需求的:
如果已經(jīng)安裝App,則打開App
如果沒有安裝App,則前往下載App
瀏覽器實際上是沒有能力判斷手機(jī)里是否安裝了某個App的,所以聰明的程序員們選擇了討巧的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 try ?{
???? var ?appSchema?=? ‘ schema://xxxx’ ;
???? if ?($.os.ios)?{
????????location.href?=?openNALocation;? //location.href?打開schema
????}
???? else ?{
????????$( ‘body’ ).append( ‘’ );? //iFrame?打開?schema
????}?
} catch ?(e)?{}
//延遲1000秒
setTimeout( function ?()?{
???? if ?($.os.ios)?{
????????location.href?=?`https: //itunes.apple.com/us/app/idxxxxxxx?mt=8`;
????}
???? else ?{
????????location.href?=?`https: //xxx.xxx.xxx/xxx/xxx.apk`;//直接apk下載link
????}?
},1000)
首先發(fā)起跳轉(zhuǎn)Schema
如果沒安裝App,會打開App失敗,沒效果
如果安裝App,會成功打開App
延遲1000ms
如果沒安裝App,Schema打開失敗,等1000秒后會自動跳轉(zhuǎn)
如果安裝App,App會打開,當(dāng)前網(wǎng)頁會被暫停,這延遲代碼不會執(zhí)行
聰明的人會發(fā)現(xiàn),這樣有個風(fēng)險,如果用戶打開APP成功后,又手動切回瀏覽器,那么延遲1000ms的代碼依然會執(zhí)行,安卓會跳出下載apk包得提示,iOS會又再度跳到Appstore,但這個瑕疵也不是太大的問題,所以這種做法被普遍采用,運用在各種安裝就跳轉(zhuǎn),不安裝就下載的用戶場景。
安卓這么用挺好,iOS有個討厭的彈框
如果用戶沒有安裝App,那么他一定會經(jīng)歷2個事情
schema打開app,但是失敗
延遲后,跳轉(zhuǎn)下載App
在第一個環(huán)節(jié),安卓上schema打開失敗,沒有任何反映,也沒有任何提示,一切順利,但是iOS就不同了。
schema會彈個可惡的跳轉(zhuǎn)失敗的框
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
ios上關(guān)于Universal Link 前端部署的應(yīng)用下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問題? 376
- 華為全新鴻蒙蓄勢待發(fā) 僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)應(yīng)用 719
- 蘋果手機(jī)系統(tǒng)iOS 17遭用戶質(zhì)疑 731
- iPhone12輻射超標(biāo)?蘋果推送iOS 17.1解決此事 750
- 傳華為囤積零部件 目標(biāo)明年智能手機(jī)出貨7000萬部;消息稱 MiOS 僅限國內(nèi),小米 28208
- 蘋果推送iOS17.0.3,解決iPhone15Pro系列存在機(jī)身過熱 216
- Testin云測兼容和真機(jī)服務(wù)平臺中上線iPhone 15系列手機(jī) 208
- 利爾達(dá)推出搭載HooRiiOS的Matter模組 145
- 運放參數(shù)解析:輸入偏置電流(Ibias)和失調(diào)電流(Ios) 128
- 昆侖太科發(fā)布支持國產(chǎn)飛騰騰銳D2000芯片的開源BIOS固件版本 448