步驟一 創(chuàng)建apple-app-site-association文件
在文本編輯器中創(chuàng)建一個內(nèi)容為json格式的文件香璃,蘋果將會在app安裝的的時候,從我們在項目中填入的域名請求這個文件舟误。
例子:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
}
]
}
}
說明:
appId:組成方式是 teamId.yourapp’s bundle identifier葡秒。如上面的 9JA89QQLNQ就是teamId。登陸開發(fā)者中心嵌溢,在Account -> Membership里面可以找到Team ID眯牧。
paths:1.使用指定整個網(wǎng)站
2.包括一個特定的URL,例如/ wwdc / news /赖草,以指定一個特定的鏈接
3.將附加到特定的網(wǎng)址(例如/ videos / wwdc / 2015 / )学少,以指定網(wǎng)站的一部分
4.除了使用匹配任何子字符串外,還可以使用秧骑?匹配任何單個字符版确。您可以將兩個通配符合并在一個路徑中,例如/ foo / * / bar / 201乎折?/ mypage绒疗。
5.用于在path數(shù)組中指定網(wǎng)站路徑的字符串區(qū)分大小寫。
!注意
這個文件名必須為apple-app-site-association骂澄,切記沒有后綴名吓蘑。不要將.json附加到apple-app-site-association文件名。
如果您的應(yīng)用程序在iOS 9或更高版本中運行,并且您使用HTTPS來提供apple-app-site-association文件磨镶,則可以創(chuàng)建一個使用application / json MIME類型的純文本文件溃蔫,而無需對其進(jìn)行簽名。如果您在iOS 8中支持交接和共享Web憑據(jù)琳猫,則仍然需要按照共享Web憑據(jù)參考中的說明對文件進(jìn)行簽名伟叛。
如果copy這個結(jié)構(gòu)需要檢查是否有中文標(biāo)點符號。
寫完之后在效驗json的網(wǎng)站中驗證json結(jié)構(gòu)是否正確脐嫂。
步驟二 將創(chuàng)建的apple-app-site-association文件上傳到服務(wù)器
上傳該文件到你的域名所對應(yīng)的根目錄或者.well-known目錄下痪伦,這是為了蘋果能獲取到你上傳的文件。
!注意
當(dāng)你在瀏覽器中輸入這個文件鏈接后雹锣,直接能看到對應(yīng)的json數(shù)據(jù),而不是下載。
下面是淘寶和微信的測試配置文件,打開自己配置的文件打開應(yīng)該是相對應(yīng)的樣式癞蚕。
https://b.mashort.cn/apple-app-site-association https://help.wechat.com/apple-app-site-association
這個需要后臺配合,將文件重定向來達(dá)到這個目的蕊爵。具體需要后臺來操作。
步驟三 appIDs配置和項目配置
1.開發(fā)者中心配置:找到對應(yīng)的App ID桦山,在Application Services列表里有Associated Domains一條攒射,把它變?yōu)镋nabled就可以了。
2.工程配置中相應(yīng)功能:targets->Signing&Capabilites->Capability->Associated Domains恒水,在其中的Domains中填入你想支持的域名会放,也必須必須以applinks:為前綴。
!注意
1.Domains添加的域名沒有https或者h(yuǎn)ttp,以www開頭
步驟四 驗證是否配置成功,成功后跳轉(zhuǎn)指定頁面
你將要配置的網(wǎng)址在Safari中打開钉凌,在出現(xiàn)的網(wǎng)頁上方下滑咧最,可以看到有在”XX”應(yīng)用中打開:
!注意
如果你在apple-app-site-association文件中的paths中配置的是指定路徑,需要在域名后面拼接指定路徑
當(dāng)點擊某個鏈接,直接可以進(jìn)我們的app了御雕,但是我們的目的是要能夠獲取到用戶進(jìn)來的鏈接矢沿,根據(jù)鏈接來展示給用戶相應(yīng)的內(nèi)容。
我們需要在工程里的實現(xiàn)AppDelegate里對應(yīng)的方法:
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
NSLog(@"userActivity : %@",userActivity.webpageURL.description);
return YES;
}