Universe Link 簡介
iOS 9之前,一直使用的是URL Schemes技術(shù)來從外部對App進行跳轉(zhuǎn),但是iOS系統(tǒng)中進行URL Schemes跳轉(zhuǎn)的時候如果沒有安裝App,會提示無法打開頁面的提示惋鹅。
iOS 9之后起可以使用Universal Links技術(shù)進行跳轉(zhuǎn)頁面,這是一種體驗更加完美的解決方案。
簡而言之: Universal Links 是從瀏覽器或者網(wǎng)頁上打開鏈接跳轉(zhuǎn)到手機上的app疏橄。
- 我們在該鏈接域名根目錄配置過的一個鏈接(直接跳轉(zhuǎn)到我們app);也可以在該鏈接中放置對應(yīng)的H5頁面(點擊H5頁面按鈕跳轉(zhuǎn)到我們app)墙基。
當用戶的點擊該鏈接软族,只要手機中安裝了支持該鏈接的APP就會直接進入到APP中刷喜。如果沒有安裝APP則會跳轉(zhuǎn)到Safari瀏覽器中,展示H5頁面立砸。對用戶來說則是一個無縫跳轉(zhuǎn)的過程掖疮。
使用Universal Link(通用鏈接)跳轉(zhuǎn)的好處
1, 唯一性: 不像自定義的URL Scheme,因為它使用標準的HTTPS協(xié)議鏈接到你的web站點颗祝,所以一般不會被其它的APP所聲明浊闪。另外,URL scheme因為是自定義的協(xié)議螺戳,所以在沒有安裝 app 的情況下是無法直接打開的(在Safari中還會出現(xiàn)一個不可打開的彈窗)搁宾,而Universal Link(通用鏈接)本身是一個HTTPS鏈接,所以有更好的兼容性倔幼;
2, 安全: 當用戶的手機上安裝了你的APP盖腿,那么系統(tǒng)會去你配置的網(wǎng)站上去下載你上傳上去的說明文件(這個說明文件聲明了當前該HTTPS鏈接可以打開那些APP)。因為只有你自己才能上傳文件到你網(wǎng)站的根目錄损同,所以你的網(wǎng)站和你的APP之間的關(guān)聯(lián)是安全的翩腐;
3, 可變: 當用戶手機上沒有安裝你的APP的時候,Universal Link(通用鏈接)也能夠工作膏燃。如果你愿意茂卦,在沒有安裝你的app的時候,用戶點擊鏈接组哩,會在safari中展示你網(wǎng)站的內(nèi)容等龙;
4, 簡單: 一個HTTPS的鏈接,可以同時作用于網(wǎng)站和APP伶贰;
5, 私有: 其它APP可以在不需要知道你的APP是否安裝了的情況下和你的APP相互通信蛛砰。
支持Universal Link(通用鏈接)
先決條件:必須有一個支持HTTPS的域名,并且擁有該域名下上傳到根目錄的權(quán)限(為了上傳Apple指定文件)幕袱。
配置指定apple-app-site-association文件
apple-app-site-association文件創(chuàng)建編輯其內(nèi)容
需要創(chuàng)建一個apple-app-site-association文件暴备,必須命名為apple-app-site-association,切記沒有后綴们豌。
apple-app-site-association 文件是放到根目錄下
https://<fully qualified domain>/.well-known/apple-app-site-association
https://<fully qualified domain>/apple-app-site-association
apple-app-site-association 內(nèi)容
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TeamID.com.****.***",
"paths": [ "/main/api.html", "/main/api_gobear.html" ]
},
{
"appID": "5NZRFH2H.com.apple.wwdc",
"paths": [ "*"]
}
]
}
}
iOS14 Universal Link隱藏頂部橫幅方法
"applinks": { "details": [ { "appIDs": [ "ABCDE12345.com.example.app"], "components": [ { "/": "/main/*", "exclude": true //加這行可以隱藏頂部橫幅 } ] } ] }
注意修改之后不會立即生效涯捻,生效時間大概在24小時之內(nèi)。
1望迎,apps:是限制只能在這幾個app中使用障癌, 基本是不填寫,所以是空數(shù)組
2辩尊,appID :為teamId.bundle identifier形式涛浙,5NZRFH2H就是teamId,com.apple.wwdc是項目identifier。
登陸開發(fā)者中心轿亮,在Account -> Membership里面可以找到Team ID疮薇。
3,details:數(shù)組中可以配置多個APP的信息我注,如果公司內(nèi)有多個APP需要支持Universal link按咒,則可以直接添加多個
4,paths:設(shè)定你的app支持的路徑列表但骨,只有這些指定路徑的鏈接励七,才能被app所處理。的寫法代表了可識別域名下所有鏈接奔缠。注意是區(qū)分大小寫的
5掠抬,/app/是自己定義的路徑;
上傳完后校哎,讓上傳人員給你一個訪問路徑两波,先訪問一下,看看是否能夠獲取到贬蛙,當你在瀏覽器中輸入這個文件鏈接后, 出現(xiàn)下圖就可以了:
蘋果開發(fā)者賬號配置
注意記得最后要更新下載證書雨女,替換原來的證書
xcode 項目配置
在添加好的 Associated Domains 添加 links
點擊加號添加 ,格式是 applinks:+配置的域名
例如: applinks:www.Share.com
可以添加多個
訪問 apple-app-site-association 文件路徑就是
https://www.Share.com/.well-known/apple-app-site-association
或
https://www.Share.com/apple-app-site-association
注意:
Universal link
的域名和H5頁面URL的域名
不可以是同一個阳准,詳情請看Universal link同域不能喚起Universal Link
有跨域問題,Universal Link
必須要求跨域馏臭,如果不跨域野蝇,就不會跳轉(zhuǎn)(iOS 9.2
之后的改動)
假如當前網(wǎng)頁的域名是A
,當前網(wǎng)頁發(fā)起跳轉(zhuǎn)的域名是B
括儒,必須要求B
和A
是不同域名才會觸發(fā)Universal Link
绕沈,如果B
和A
是相同域名,只會繼續(xù)在當前WebView
里面進行跳轉(zhuǎn)帮寻,哪怕你的Universal Link
一切正常乍狐,根本不會打開App
Universal Link
請求apple-app-site-association
時機- 當我們的
App
在設(shè)備上第一次運行時,如果支持Associated Domains
功能固逗,那么iOS
會自動去GET
定義的Domain
下的apple-app-site-association
文件
APP 處理 Universal Link
跳轉(zhuǎn)APP 方法
我們需要在工程里的實現(xiàn)AppDelegate里對應(yīng)的方法:
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
if (url是我們希望處理的) {
//進行我們的處理
} else {
[[UIApplication sharedApplication] openURL:url];
}
}
return YES;
}
測試是否生效
a) 在Safari輸入Universal Links
浅蚪,查看是否彈出跳轉(zhuǎn)鏈接
b) 在iOS原生備忘錄上, 輸入Universal Links
,點擊是否可以跳轉(zhuǎn)app
Universal Link
的運行機制原理
當App初次安裝后或者更新版本后的第一次啟動(第二次啟動就不會)烫罩,向工程配置的applinks:的域名
請求apple-app-site-association
配置文件惜傲。
App自動的將apple-app-site-association
配置文件向iOS系統(tǒng)配置。
當任何WebView發(fā)起UniversalLink
的url的時候贝攒,系統(tǒng)遍歷注冊過的通用鏈接盗誊,如果命中則直接打開App觸發(fā)Delegate方法。
如果沒命中,WebView繼續(xù)跳轉(zhuǎn)加載url哈踱。
以上都是系統(tǒng)默默替你做的备籽,我們要做的就是確保配置的正確性。
Universal link 查詢配置鏈接 UAT 環(huán)境
iOS 查看配置
https://<fully qualified domain>/apple-app-site-association
https://<fully qualified domain>/.well-known/apple-app-site-association
安卓 查看配置
https://<fully qualified domain>/.well-known/assetlinks.json
更多內(nèi)容可以查看原文[Universal Links(通用鏈接)詳解]http://www.reibang.com/p/f1c97d0d0d22