通用鏈接的作用是將網(wǎng)站和App建立聯(lián)系,通過點(diǎn)擊http鏈接打開App
以下是幾篇不錯(cuò)的文章,照著做。等實(shí)際做的時(shí)候再添加過程和填坑過程。
One URL works for both your website and your app.
Apple 推出通用鏈接:一種能夠方便的通過傳統(tǒng)HTTP鏈接來啟動(dòng)APP, 使用相同的網(wǎng)址打開網(wǎng)站和 APP。
主要工作
- 添加域名到
Capabilities - 上傳
apple-app-site-association文件 - 在
AppDelegate里處理通用鏈接 - 開發(fā)者網(wǎng)站打開
Associated Domains功能
開發(fā)者中心->Identitiers->App IDs->需要支持的應(yīng)用App ID - 添加功能之后,
Provisioning Profile需要重新生成并更新一下,因?yàn)?code>entitlement文件增加內(nèi)容了,需要更新到證書里面
主要原理
如果支持通用鏈接(比如iOS9,并且把這個(gè)功能打開了),當(dāng)用戶點(diǎn)擊了通用鏈接后,iOS系統(tǒng)會(huì)啟動(dòng)App,并且APPDelegate中的代理函數(shù)application:continueUserActivity:restorationHandler:會(huì)被調(diào)用。NSUserActivity * 類型的參數(shù)userActivity的屬性activityType的值為NSUserActivityTypeBrowsingWeb,這樣就可以判斷這次的啟動(dòng)是用戶通過點(diǎn)擊通用鏈接而過來的。對(duì)于iOS9以前的不支持通用鏈接的系統(tǒng),這里不會(huì)進(jìn)來。
另外,URL信息,通過userActivity的屬性webpageURL傳遞過來。根據(jù)這個(gè)URL,可以跳轉(zhuǎn)本地的頁面,或者像以前一樣,調(diào)用Safari顯示網(wǎng)頁,具體操作就根據(jù)URL的編碼約定了。
// 通用鏈接
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
// 用戶點(diǎn)擊通用鏈接,導(dǎo)致APP啟動(dòng),會(huì)進(jìn)到這個(gè)里面
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
if (nil == url) {
return YES;
}
if ([url.host isEqualToString:@"domain.com"]) {
// 是目標(biāo)鏈接,調(diào)用Native代碼,打開對(duì)應(yīng)的頁面
} else {
// 不是目標(biāo)鏈接,用Safari打開
[[UIApplication sharedApplication] openURL:url];
}
}
return YES;
}