從iOS9之后,蘋果就推出了這個(gè)功能,用來喚醒外部app。這個(gè)功能在那些電商app上使用尤其廣泛,當(dāng)你打開對(duì)應(yīng)的h5網(wǎng)頁后,上面跳出一個(gè)是否跳轉(zhuǎn)app的按鈕。
現(xiàn)在iOS11已經(jīng)基本覆蓋,iOS12也馬上就要發(fā)布了,這算是一個(gè)很成熟的服務(wù)了,所以對(duì)接一下,也十分必要。
在這個(gè)功能推出之前,iOS這邊基本都用url scheme做app間的通信,這個(gè)功能在企鵝系應(yīng)用中直接被屏蔽,在其他應(yīng)用中使用的也不少。但是,這個(gè)會(huì)產(chǎn)生很多問題,應(yīng)為url scheme不唯一,用戶可以隨便自定義這個(gè)url scheme。之前單位做應(yīng)用的時(shí)候變碰到過這個(gè)問題,裝了另外一個(gè)app之后,用urlscheme喚醒我的app的時(shí)候,喚醒了別的app,這個(gè)便是由于url scheme沖突造成的問題。unviersal links 由于域名的唯一性,便不會(huì)產(chǎn)生這個(gè)問題。
下面我們來說一下具體對(duì)接過程
1.在xcode中開啟Associated Domians服務(wù)
路徑:Target->Capbilities->Associated Domians
之前看有人說,需要先在開發(fā)者賬號(hào)中開啟這個(gè)服務(wù),實(shí)際上你只要在工程中打開這個(gè)服務(wù),然后build一下,開發(fā)者那邊自動(dòng)會(huì)開啟這個(gè)服務(wù)。

在domains里面添加你需要的鏈接。
a.必須以applinks作為開頭
b.該鏈接的服務(wù)器必須支持ssl
2.填寫apple-app-site-association文件
這是一個(gè)json格式的文件,但是文件名不能有后綴

在這個(gè)文件里 可以配置多個(gè)appID,appID的格式為你該工程所在的team的teamID+你的工程ID-->>T1212JGF.com.xxx.xxx
具體的可以在開發(fā)者賬號(hào)的Account -> Membership -> Team ID 查看
paths里面可以配置所有你需要響應(yīng)的鏈接。
比如你在applinks里配置了www.baidu.com,你現(xiàn)在需要打開www.baidu.com就能喚醒a(bǔ)pp,那你可以直接寫''/*".
你需要在某幾個(gè)特定的鏈接下喚醒a(bǔ)pp,那就在paths里面填寫你那特定的鏈接。paths里面可以填寫多個(gè)鏈接
3. 把a(bǔ)pple-app-site-association文件傳到applinks的根目錄下。
比如你applinks為www.baidu.com。那就將后臺(tái)把這個(gè)文件傳到這個(gè)目錄下。當(dāng)你訪問www.baidu.com/apple-app-site-association這個(gè)鏈接的時(shí)候,能成功的下載這個(gè)文件,那就說明成功了。
4.工程中配置
在工程APPdelegate中添加對(duì)于該服務(wù)的響應(yīng)代碼,這里可以對(duì)該鏈接是否跳轉(zhuǎn)進(jìn)行控制。

<pre style="margin: 0px; padding: 0px; overflow: auto; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler{ if([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]){
NSURL *url = userActivity.webpageURL;
} return YES;
}</pre>

5. 測(cè)試
在safari中打開對(duì)應(yīng)的鏈接

當(dāng)你打開鏈接,然后下拉,出現(xiàn)該多出的頁面,那么恭喜你,你成功了。點(diǎn)擊打開按鈕,你就能跳轉(zhuǎn)到你需要的頁面了。