iOS的UniversalLink開發(fā)總結(jié)

一,簡介

通用鏈接是Apple在WWDC2015上為iOS9引入的一個新功能谢床,是通過傳統(tǒng)HTTP鏈接來啟動App的技術性含≈拚裕可以使用相同的網(wǎng)址打開網(wǎng)站和App。通過唯一的網(wǎng)址,就可以鏈接到App中具體的視圖板鬓,不需要特殊的schema悲敷。如果用戶沒有安裝App則鏈接到對應的普通網(wǎng)頁。

二俭令,對比URL Scheme跳轉(zhuǎn)

在iOS 9之前后德,我們從外部啟動App都是通過URL scheme的方式進行跳轉(zhuǎn),開發(fā)者通過配置info.plist文件中的 URL Types 可以輕松實現(xiàn)跳轉(zhuǎn)抄腔,而且現(xiàn)在蘋果還對這種跳轉(zhuǎn)的方式加了一個提示框:“是否打開XXX”瓢湃,跳轉(zhuǎn)過程也顯得不流暢。

而UniversalLink跳轉(zhuǎn)方式可以實現(xiàn)無縫跳轉(zhuǎn)赫蛇,當瀏覽器識別到預先指定好的URL绵患,就可以直接喚醒App,不需要在瀏覽器中打開再去點擊其他按鈕悟耘。

三落蝙,開發(fā)步驟

1,打開Associated Domains服務

登錄開發(fā)者賬號暂幼,在Identifiers下AppIDs找到自己的App ID筏勒,編輯打開Associated Domains服務。

image

2,在Xcode中開啟Associated Domains服務

找到工程的Capabilities -> Associated Domains旺嬉,打開此功能管行,在Domains中添加跳轉(zhuǎn)域名,域名的格式為:

applinks:www.example.com

注:
①邪媳,你的服務器必須支持SSL捐顷;
②,Domains可以添加多個雨效;
③迅涮,Domains必須以 applinks: 開頭;

image

3徽龟,配置 apple-app-site-association 文件

蘋果官方給出的格式如下圖所示:

image

其中apps項必須對應一個空的數(shù)組逗柴,details項對應一個字典的數(shù)組,其中appID對應項由前綴和ID兩部分組成顿肺,可以在developer.apple.com中的Identifiers→AppIDs中點擊對應的App ID查看戏溺。

image

paths對應域名中的path,用于過濾可以跳轉(zhuǎn)到App的鏈接屠尊,支持通配符‘*’旷祸,‘?’以及‘NOT’進行匹配讼昆,匹配的優(yōu)先級是從左至右依次降低托享。

最后,需要把配置好的json文件上傳到服務器中該域名的根目錄下,也就是說闰围,我們可以用GET請求可以獲取到這個apple-app-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/目錄下。

Tips

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

4羊瘩,Xcode代碼處理

當服務器部署完成之后泰佳,我們需要在AppDelegate中實現(xiàn)代理方法:

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

具體實現(xiàn)如下:

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

if (![userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
return YES;
}

//讀取url地址
NSURL *jumpUrl = userActivity.webpageURL;
// TODO: handle jump code

return YES;
}

5,測試過程

最簡單的測試方法尘吗,是在系統(tǒng)的短信中點擊一個URL直接跳轉(zhuǎn)到App逝她,點擊之前定義的鏈接,如果能跳轉(zhuǎn)到App內(nèi)摇予,就正明配置成功了汽绢。

四吗跋,挖坑提示

1侧戴,在Safari中點擊鏈接打開App后,會發(fā)現(xiàn)App的右上角的navigationBar會有一串網(wǎng)址的鏈接箭頭跌宛,如果你點擊了它酗宋,它會跳轉(zhuǎn)到Safari,同時系統(tǒng)會默認你選擇用Safari來打開該域名的鏈接疆拘,而不用app打開蜕猫,也就是說下次你再點擊該鏈接,它只會在Safari中打開哎迄,不會在App中打開了回右。那么如何開啟app跳轉(zhuǎn)呢?有兩種方法:第一種漱挚,在Safari頁面中翔烁,手指往下拉一下頁面,會顯示一個“隱藏”的banner旨涝,俗稱為 smart banner蹬屹,右側(cè)有一個button,點擊它,就開啟App跳轉(zhuǎn)功能了慨默。第二種贩耐,長按跳轉(zhuǎn)鏈接,底下會彈出一些選項厦取,選擇在App中打開潮太,同樣可以開啟這個功能。

2蒜胖,apple-app-site-association 文件注意格式是否正確消别,json格式中的引號是全角還是半角的。(特別注意一下這個問題台谢,如果是中文的引號寻狂,點擊鏈接不會跳轉(zhuǎn)到App)

五,總結(jié)

1朋沮,apple-app-site-association不需要.json后綴蛇券。

2,如果要對沒有path的域名進行支持(如:www.163.com)樊拓,在json文件的paths中用通配符’*’是不行的纠亚,需要在paths數(shù)組中加入’/’進行匹配。

3筋夏,對json文件的請求僅在App第一次啟動時進行蒂胞,如果此時網(wǎng)絡連接出了問題apple會緩存請求,等有網(wǎng)的時候再去請求条篷,而實際測試抓包并沒有請求故通用連接會失效骗随。

4,paths匹配的優(yōu)先級是從左至右依次降低赴叹,但需要明確鸿染,否則會出問題。比如"paths":[ "NOT /together/",""]乞巧,在IOS9.2上path為/together/*都不會跳到App涨椒,但是在IOS9.0上會跳到。

5绽媒,從iOS 9.2開始蚕冬,在相同的domain內(nèi)Universal Links是不work的,必須要跨域才生效

六是辕,參考鏈接

1)https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW1 官網(wǎng)鏈接

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囤热,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子免糕,更是在濱河造成了極大的恐慌赢乓,老刑警劉巖忧侧,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異牌芋,居然都是意外死亡蚓炬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門躺屁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肯夏,“玉大人,你說我怎么就攤上這事犀暑⊙被鳎” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵耐亏,是天一觀的道長徊都。 經(jīng)常有香客問我,道長广辰,這世上最難降的妖魔是什么暇矫? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮择吊,結(jié)果婚禮上李根,老公的妹妹穿的比我還像新娘。我一直安慰自己几睛,他們只是感情好房轿,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著所森,像睡著了一般囱持。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上必峰,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天洪唐,我揣著相機與錄音钻蹬,去河邊找鬼吼蚁。 笑死,一個胖子當著我的面吹牛问欠,可吹牛的內(nèi)容都是我干的肝匆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼顺献,長吁一口氣:“原來是場噩夢啊……” “哼旗国!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起注整,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤能曾,失蹤者是張志新(化名)和其女友劉穎度硝,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寿冕,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蕊程,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驼唱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藻茂。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玫恳,靈堂內(nèi)的尸體忽然破棺而出辨赐,到底是詐尸還是另有隱情,我是刑警寧澤京办,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布掀序,位于F島的核電站,受9級特大地震影響惭婿,放射性物質(zhì)發(fā)生泄漏森枪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一审孽、第九天 我趴在偏房一處隱蔽的房頂上張望县袱。 院中可真熱鬧,春花似錦佑力、人聲如沸式散。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暴拄。三九已至,卻和暖如春编饺,著一層夾襖步出監(jiān)牢的瞬間乖篷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工透且, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留撕蔼,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓秽誊,卻偏偏與公主長得像鲸沮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锅论,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

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