iOS Universal Links(通用鏈接)的使用

一蜒茄、 通用鏈接介紹

Apple 推出通用鏈接:一種能夠方便的通過傳統(tǒng) HTTP 鏈接來啟動 APP, 使用相同的網(wǎng)址打開網(wǎng)站和 APP摄杂。

當(dāng)你的應(yīng)用支持通用鏈接丧慈,iOS9 之后 , 用戶可以點(diǎn)擊一個鏈接跳轉(zhuǎn)到你的網(wǎng)站,并獲得無縫重定向到您安裝的應(yīng)用程序,而無需通過 Safari 瀏覽器。如果你的應(yīng)用不支持的話,點(diǎn)擊鏈接將會用 Safari 來打開玩祟。

二靡馁、 通用鏈接的關(guān)鍵實(shí)現(xiàn)條件

有一個注冊的域名

域名可通過 SSL 訪問(應(yīng)該是需要有效的證書)

支持上傳一個 JSON 文件到域名

iOS 9? 以上版本

Xcode 7 以上

需要真機(jī)測試,模擬器不支持通用鏈接

web server 需要支持 https,客戶端需要通告 https 訪問,并且不支持任何重定向

說了這么多是時候來點(diǎn)干貨了欲鹏;

三、 通用鏈接實(shí)現(xiàn)步驟

1.在項(xiàng)目中開啟Associated Domains 域

? 進(jìn)入自己的項(xiàng)目的Targets->Capabilites->Associated Domains,設(shè)置成ON狀態(tài)臭墨,這時候你會發(fā)現(xiàn)你的項(xiàng)目的文件夾下會多出一個.entitlements的文件

注意:我這里是使用了Xcode的自動管理證書赔嚎,所以當(dāng)我打開Associated Domains時Xcode會自動幫我處理證書配置問題以及appIDs打開Associated Domains。

如果你是使用手動管理證書胧弛,需在處理第1步之前先去自己的開發(fā)者賬號找到對應(yīng)的appIDs尤误,勾選Associated Domains選項(xiàng)。具體操作步驟:

進(jìn)入蘋果Apple Developer -> Member Center -> Certificates, Identifiers & Profiles – >Identifiers - >App IDs–>Edit 然后開啟打鉤 Associated Domains 后保存结缚。

如果證書設(shè)置正確以及App IDs的Associated Domains打開后损晤,你再執(zhí)行第1步操作之后Associated Domains下面的steps有2個對號,否則就會出現(xiàn)錯號红竭。

2.在Associated Domains下添加web端的域名

點(diǎn)擊Associated Domains的+號填入applinks:后面是你的域名尤勋,例如我公司的是
applinks:×××××.mingpao.com

3 制作apple-app-site-association 文件

創(chuàng)建一個json格式的命名為apple-app-site-association文件,注意這個文件必須沒有后綴名,文件名必須為apple-app-site-association!!!

{

"applinks":{

"apps":[],

"details":[

{

"appID": "G4E6298X77.com.mingpao.×××××",

"paths":[ "/*" ]

},

]

}

}

這里解釋一下:

appID 是由你的Team ID+BundleID組成喘落,如果你不知道你的Team ID是什么?進(jìn)入蘋果Apple Developer -> Member Center ->Membership->Team ID


paths 是一個字符串的數(shù)組,這里是你的應(yīng)用支持的通用鏈接與不支持的鏈接最冰,這里小編使用的是/*,代表著只要是Associated Domains域名下的所有的鏈接都支持瘦棋。如果你不支持某一個鏈接,在這個鏈接前面加NOT空格锌奴,舉個例子

"paths":[? "NOT /home/*",? "/*"? ]

如果這樣寫就是除了不支持/home下所有的鏈接兽狭,其他鏈接都支持。

這里有很多公司的apple-app-site-association文件設(shè)置?


4.上傳apple-app-site-association 文件

把你剛才制作好的apple-app-site-association文件交給服務(wù)器端的小伙伴鹿蜀,放到服務(wù)器的根目錄下箕慧,還有一種說法是,iOS9.3之前是根目錄下即:https://××××.mingpao.com/apple-app-site-association茴恰,iOS9.3之后是.well-known目錄下即:https://××××.mingpao.com/.well-known/apple-app-site-association颠焦,小編為了安全起見兩個都放了。

到此為止往枣,Universal Links的工作已經(jīng)基本完成了伐庭,下面我們可以檢測一下上傳apple-app-site-association 文件是否成功。蘋果有一個檢測的接口 蘋果測試入口 分冈,將你的域名放入測試口圾另,點(diǎn)擊TestURL即可。

但是但是但是雕沉,小編把公司的域名放到蘋果進(jìn)行測試得到的答案是沒有通過集乔,但是卻能正常的使用Universal Links了,關(guān)于原因坡椒,網(wǎng)上有很多說法扰路。有些小伙伴說是因?yàn)槟愕腁PP沒有上線,等上線了就會測試通過倔叼,但是小編的APP上線后測試依然不能通過汗唱。還有一些小伙伴說我們并沒有對蘋果開放爬蟲。也就是不允許蘋果爬蟲你們的網(wǎng)站丈攒,這個是測不通的哩罪。

我們創(chuàng)建apple-app-site-association文件的目的是為了讓iOS系統(tǒng)能獲取這個文件,知道你的哪些是鏈接是Universal Links巡验,哪些不是Universal Links识椰。所以在你第一次安裝APP時,iOS系統(tǒng)會去對應(yīng)的路徑下拿取apple-app-site-association文件深碱,所以我們可以通過抓包來判斷通不通。另外直接用Xcode debug調(diào)試APP時藏畅,iOS也會去拿取apple-app-site-association文件敷硅。

如果不通問題可能有很多:

1.域名不是https請求

2.服務(wù)器端的SSL證書有問題(偽證書或者無效證書)

3.服務(wù)器端的證書配置有問題

小編曾經(jīng)在這里卡了2天就是找不到原因功咒,結(jié)果是服務(wù)器端的證書配置有問題。

為了避免移動端的小伙伴被坑绞蹦,我把服務(wù)器端SSL證書配置向?qū)У木W(wǎng)址給大家力奋。https://sg.godaddy.com/zh/help/ssl-16623?

5.在AppDelegate處理Universal Links

在AppDelegate里面添加下面的方法



- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler

{

if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {

NSURL *webpageURL = userActivity.webpageURL;

NSString *host = webpageURL.host;

if ([host isEqualToString:@"××××.mingpao.com"]) {

//判斷域名是自己的網(wǎng)站,進(jìn)行我們需要的處理

}else{

[[UIApplication sharedApplication]openURL:webpageURL];

}

}

return YES;

}

當(dāng)用Universal Links啟動APP時就會調(diào)用上面的方法幽七。

把我們設(shè)置好通用鏈接的URL放到備忘錄中景殷,長按URL會多出一條在“××××”中打開,當(dāng)你點(diǎn)擊時就會打開你的APP澡屡,并且在上面的方法中將URL傳給你處理猿挚。


如果你選擇在Safari中打開,上下滑動頁面驶鹉,你會發(fā)現(xiàn)仍然有一個按鈕可以打開你的應(yīng)用绩蜻。


參考資料

蘋果官方文檔

http://pinwei.blog.51cto.com/5452359/1734167/

http://www.2cto.com/kf/201604/497162.html?

文筆不好,望大家見諒室埋。寫的不全或者有誤的地方办绝,望大家不吝賜教。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姚淆,一起剝皮案震驚了整個濱河市孕蝉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腌逢,老刑警劉巖降淮,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異上忍,居然都是意外死亡骤肛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門窍蓝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腋颠,“玉大人,你說我怎么就攤上這事吓笙∈缑担” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵面睛,是天一觀的道長絮蒿。 經(jīng)常有香客問我,道長叁鉴,這世上最難降的妖魔是什么土涝? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮幌墓,結(jié)果婚禮上但壮,老公的妹妹穿的比我還像新娘冀泻。我一直安慰自己,他們只是感情好蜡饵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布弹渔。 她就那樣靜靜地躺著,像睡著了一般溯祸。 火紅的嫁衣襯著肌膚如雪肢专。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天焦辅,我揣著相機(jī)與錄音博杖,去河邊找鬼。 笑死氨鹏,一個胖子當(dāng)著我的面吹牛欧募,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仆抵,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼跟继,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了镣丑?” 一聲冷哼從身側(cè)響起舔糖,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎莺匠,沒想到半個月后金吗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趣竣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年摇庙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遥缕。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡卫袒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出单匣,到底是詐尸還是另有隱情夕凝,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布户秤,位于F島的核電站码秉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鸡号。R本人自食惡果不足惜转砖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鲸伴。 院中可真熱鬧堪藐,春花似錦莉兰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杉辙。三九已至模捂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜘矢,已是汗流浹背狂男。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留品腹,地道東北人岖食。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像舞吭,于是被迫代替她去往敵國和親泡垃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容