iOS Universal Link(通用鏈接)

iOS 9之前牧挣,一直使用的是URL Schemes技術(shù)來從外部對App進行跳轉(zhuǎn),但是iOS系統(tǒng)中進行URL Schemes跳轉(zhuǎn)的時候如果沒有安裝App介汹,會提示Cannot open Page的提示雷猪,而且當注冊有多個scheme相同的時候,目前沒有辦法區(qū)分漫雕,但是從iOS 9起可以使用Universal Links技術(shù)進行跳轉(zhuǎn)頁面滨嘱,這是一種體驗更加完美的解決方案。

  • 什么是Universal Link(通用鏈接)

Universal Link是Apple在iOS 9推出的一種能夠方便的通過傳統(tǒng)HTTPS鏈接來啟動APP的功能浸间。如果你的應用支持Universal Link太雨,當用戶點擊一個鏈接時可以跳轉(zhuǎn)到你的網(wǎng)站并獲得無縫重定向到對應的APP,且不需要通過Safari瀏覽器魁蒜。如果你的應用不支持的話躺彬,則會在Safari中打開該鏈接。

  • 支持Universal Link(通用鏈接)

先決條件:必須有一個支持HTTPS的域名梅惯,并且擁有該域名下上傳到根目錄的權(quán)限(為了上傳Apple指定文件)。

1仿野、在開發(fā)者中心配置Associated Domains

登錄蘋果開發(fā)者中心找到對應的APPID铣减,配置Associated Domains,如下:

開發(fā)者中心配置圖片

2脚作、配置指定文件(apple-app-site-association)

創(chuàng)建一個內(nèi)容為json格式的文件葫哗,蘋果將會在合適的時候,從我們在項目中填入的域名請求這個文件球涛。這個文件名必須為apple-app-site-association劣针,切記沒有后綴名,文件內(nèi)容大概是這樣子:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TeamID.BundleID",
                "paths": [ "/app/*", "/qq_conn/2222222/*"]
            }
        ]
    }
}

appID:組成方式是TeamID.BundleID亿扁。TeamIDBundleID就是第一步中的12捺典。
paths:設定你的app支持的路徑列表,只有這些指定路徑的鏈接从祝,才能被app所處理襟己。*的寫法代表了可識別域名下所有鏈接。
"/app/*"是自己定義的路徑牍陌;
"/qq_conn/22222222/*"需要根據(jù)QQ互聯(lián)平臺設置擎浴,22222222QQ互聯(lián)后臺對應應用的APPID换薄。
ps:可先配置微信開放平臺QQ互聯(lián)平臺乌询。
如果上傳人員給你的訪問路徑是:
https://www.baidu.com/.well-known/apple-app-site-association
https://www.baidu.com/apple-app-site-association則:
微信開放平臺的Universal Link填寫是:https://www.baidu.com/app/
QQ互聯(lián)平臺的Universal Link填寫是:https://www.baidu.com/qq_conn/22222222/

3、上傳該文件

配置好文件后排嫌,把該文件給后臺開發(fā)人員上傳就可以了契讲。上傳到域名所對應的 根目錄或者.well-known目錄下仿吞,這是為了蘋果能獲取到你上傳的文件。上傳完后捡偏,讓上傳人員給你一個訪問路徑茫藏,先訪問一下,看看是否能夠獲取到霹琼,當你在瀏覽器中輸入這個文件鏈接后, 出現(xiàn)下圖就可以了:

apple-app-site-association

4务傲、在Xcode開發(fā)工具配置Associated Domains

在其中的Domains中填入你想支持的域名凉当,必須以applinks:為前綴,如:applinks:domain
如果上傳人員給你的訪問路徑是:
https://www.baidu.com/.well-known/apple-app-site-association
https://www.baidu.com/apple-app-site-association
Domains中填入:applinks:www.baidu.com
配置好后run起來售葡。

開發(fā)工具配置圖片

5看杭、關(guān)于驗證Universal Links是否生效

蘋果為了方便開發(fā)者,提供了一個網(wǎng)頁驗證我們編寫的這個apple-app-site-association是否合法有效

a) 在Safari輸入Universal Links挟伙,查看是否彈出跳轉(zhuǎn)鏈接
b) 在iOS原生備忘錄上, 輸入Universal Links,點擊是否可以跳轉(zhuǎn)app
注意:手機上必須安裝你需要跳轉(zhuǎn)的應用并配置Associated Domains

  • Universal Link(通用鏈接)注意點

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在設備上第一次運行時桂肌,如果支持Associated Domains功能,那么iOS會自動去GET定義的Domain下的apple-app-site-association文件

iOS會先請求https://domain.com/.well-known/apple-app-site-association永淌,如果此文件請求不到崎场,再去請求https://domain.com/apple-app-site-association,所以如果想要避免服務器接收過多GET請求遂蛀,可以直接把apple-app-site-association放在./well-known目錄下

服務器上apple-app-site-association的更新不會讓iOS本地的apple-app-site-association同步更新谭跨,即iOS只會在App第一次啟動時請求一次,以后除非App更新或重新安裝李滴,否則不會在每次打開時請求apple-app-site-association

  • Universal Link的好處

之前的Custom URL scheme是自定義的協(xié)議饺蚊,因此在沒有安裝該app的情況下是無法直接打開的。而Universal Links本身就是一個能夠指向web頁面或者app內(nèi)容頁的標準web link悬嗓,因此能夠很好的兼容其他情況
Universal links是從服務器上查詢是哪個app需要被打開污呼,因此不存在Custom URL scheme那樣名字被搶占、沖突的情況
Universal links支持從其他app中的UIWebView中跳轉(zhuǎn)到目標app
提供Universal link給別的app進行app間的交流時包竹,對方并不能夠用這個方法去檢測你的app是否被安裝(之前的custom scheme URL的canOpenURL方法可以)

參考資料

iOS 喚起APP之Universal Link(通用鏈接)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末燕酷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子周瞎,更是在濱河造成了極大的恐慌苗缩,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件声诸,死亡現(xiàn)場離奇詭異酱讶,居然都是意外死亡,警方通過查閱死者的電腦和手機彼乌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門泻肯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渊迁,“玉大人,你說我怎么就攤上這事灶挟×鹦啵” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵稚铣,是天一觀的道長箱叁。 經(jīng)常有香客問我,道長惕医,這世上最難降的妖魔是什么耕漱? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮抬伺,結(jié)果婚禮上螟够,老公的妹妹穿的比我還像新娘。我一直安慰自己沛简,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布斥废。 她就那樣靜靜地躺著椒楣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪牡肉。 梳的紋絲不亂的頭發(fā)上捧灰,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音统锤,去河邊找鬼毛俏。 笑死,一個胖子當著我的面吹牛饲窿,可吹牛的內(nèi)容都是我干的煌寇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼逾雄,長吁一口氣:“原來是場噩夢啊……” “哼阀溶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸦泳,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤银锻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后做鹰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體击纬,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年钾麸,在試婚紗的時候發(fā)現(xiàn)自己被綠了更振。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炕桨。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖殃饿,靈堂內(nèi)的尸體忽然破棺而出谋作,到底是詐尸還是另有隱情,我是刑警寧澤乎芳,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布遵蚜,位于F島的核電站,受9級特大地震影響奈惑,放射性物質(zhì)發(fā)生泄漏吭净。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一肴甸、第九天 我趴在偏房一處隱蔽的房頂上張望寂殉。 院中可真熱鬧,春花似錦原在、人聲如沸友扰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽村怪。三九已至,卻和暖如春浮庐,著一層夾襖步出監(jiān)牢的瞬間甚负,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工审残, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留梭域,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓搅轿,卻偏偏與公主長得像病涨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子璧坟,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

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

  • 使用場景 通過qq或者微信分享出來的H5鏈接没宾,當點擊H5鏈接的某個按鈕時,要實現(xiàn)如下功能: 用戶未安裝APP時沸柔,跳...
    NanNan閱讀 1,279評論 0 1
  • 今天我們app在分享內(nèi)容到微信時循衰,部分用戶手機上會顯示未驗證應用,或者部分用戶分享到QQ直接失敗褐澎,原因就是由于蘋果...
    iOS開發(fā)實踐閱讀 1,878評論 0 0
  • 什么是Universal Link Universal Link是蘋果在WWDC 2015上提出的iOS 9 的新...
    JQWONG閱讀 6,768評論 1 7
  • 什么是通用鏈接: ??通用鏈接是iOS9推出的一項新功能会钝,如果你的應用(app)支持通用鏈接(Universal ...
    大佐100閱讀 728評論 0 0
  • 說明 此系列共有兩篇文章, 如需要實現(xiàn)微信跳轉(zhuǎn)到app功能, 閱讀過此篇文章后, 可再查看此文章: iOS Uni...
    cyh老崔閱讀 7,774評論 1 7