iOS通用鏈接(UniversalLink)配置詳細(xì)流程

簡(jiǎn)介

Universal Links 是蘋果自iOS9.0推出的用于應(yīng)用之間跳轉(zhuǎn)的一種安全認(rèn)證機(jī)制,主要用來(lái)通過(guò)HTTPS鏈接來(lái)無(wú)縫啟動(dòng)APP也切。手機(jī)中如果安裝了支持該鏈接的APP就會(huì)直接進(jìn)入到APP中。如果沒(méi)有安裝APP則會(huì)跳轉(zhuǎn)到Safari瀏覽器中腰湾,展示H5頁(yè)面雷恃。

一、Universal Links 配置過(guò)程

  1. 登錄蘋果賬號(hào)后费坊,點(diǎn)擊創(chuàng)建的APP 的Bundle ID倒槐,跳轉(zhuǎn)到APP 信息頁(yè)面。
  2. 記錄下Team IDBundle ID 備用附井。
  3. 勾選上 功能列表上的 ”Associated Domains“選項(xiàng)讨越。
配置蘋果后臺(tái)
  1. 創(chuàng)建一個(gè)text空文本文件,去掉文件后綴永毅,命名為apple-app-site-association(不能修改把跨,且不能添加后綴)。
  2. 文件內(nèi)添加json格式數(shù)據(jù)沼死,內(nèi)容如下
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID":"8ARUHGUQNH.com.YHKJ.AppSample",
                "paths": [ "/AppSample/*"]
            }
        ]
    }
}

如果一個(gè)域名下面有多端APP着逐,可寫作

{
    "applinks":{
        "apps":[],
        "details":[
            {
                "appID":"8ARUHGUQNH.com.YHKJ.AppSample",
                "paths":["/AppSample/*"]
            }
            {
                "appID":"8ARUHGUQNH.com.YHKJ.appManage",
                "paths":["/manageAppSample/*"]
            }
        ]
    }
}

apps:為必寫且固定為[ ]
appID是指:TeamID.BundleId的組成
paths:是一個(gè)支持的路徑列表字符串?dāng)?shù)組,可以是一個(gè)也可以是多個(gè),用于過(guò)濾可以跳轉(zhuǎn)到App的鏈接耸别,支持通配符*健芭,通配符表示允許該域名下的任意路徑。
details數(shù)組中可以配置多個(gè)APP的信息秀姐,如果有多個(gè)APP需要支持Universal慈迈,則可以直接添加多個(gè)。
嚴(yán)格區(qū)分字母大小寫

  1. apple-app-site-association文件創(chuàng)建好后 發(fā)給后臺(tái)省有,讓后臺(tái)放到域名的服務(wù)器根目錄下痒留,也可以在根目錄中添加.well-known文件夾,將文件上傳到.well-known文件夾下(.點(diǎn)一定不能少)锥咸,對(duì)應(yīng)連接分別為
https://xxx/apple-app-site-association
https://xxx/.well-known/apple-app-site-association
xxx為服務(wù)端的域名
  1. 打開你的iOS工程狭瞎,如下添加“Associated Domains”功能 和 域名地址,
    applinks:域名地址搏予,Domains中的域名必須是使用applinks開頭熊锭。
添加Associated Domains
添加域名地址

二、測(cè)試Universal Link鏈接

蘋果提供了一個(gè)網(wǎng)頁(yè)來(lái)驗(yàn)證我們編寫的這個(gè)apple-app-site-association文件是否合法有效,
https://search.developer.apple.com/appsearch-validation-tool/

如果 Universal Link 配置成功雪侥,在iOS自帶Safari瀏覽器中碗殷,打開 Universal Link 鏈接,下拉會(huì)出現(xiàn)應(yīng)用入口速缨,點(diǎn)擊“打開”可以跳轉(zhuǎn)至原生App锌妻;如打開微信的 Universal Link : https://help.wechat.com/app/ 如下圖

打開微信通用鏈接

二 、Universal Link 的運(yùn)行機(jī)制原理

  1. 當(dāng)App初次安裝后或者更新版本后的第一次啟動(dòng)(第二次啟動(dòng)就不會(huì))旬牲,向工程配置的applinks:的域名請(qǐng)求apple-app-site-association配置文件仿粹。
  2. App自動(dòng)的將apple-app-site-association配置文件向iOS系統(tǒng)配置。
  3. 當(dāng)任何WebView發(fā)起UniversalLink的url的時(shí)候原茅,系統(tǒng)遍歷注冊(cè)過(guò)的通用鏈接吭历,如果命中則直接打開App觸發(fā)Delegate方法。
  4. 如果沒(méi)命中擂橘,WebView繼續(xù)跳轉(zhuǎn)加載url晌区。
    以上都是系統(tǒng)默默替你做的,我們要做的就是確保配置的正確性通贞。

三 朗若、注意事項(xiàng)

  1. 服務(wù)器的域名地址必須是HTTPS的,并且SSL證書必須通過(guò)蘋果信任昌罩。蘋果支持的HTTPS證書列表哭懈。
  2. apple-app-site-association名稱不能變,不能加后綴,只能放在上面說(shuō)的服務(wù)器位置茎用。但是 iOS 會(huì)先去請(qǐng)求.well-known 路徑遣总,如果apple-app-site-association文件請(qǐng)求不到你虹,再去請(qǐng)求根目錄,所以如果想要避免服務(wù)器接收過(guò)多GET請(qǐng)求彤避,可以直接把a(bǔ)pple-app-site-association文件放到well-known目錄下。
  3. 服務(wù)器上apple-app-site-association的更新不會(huì)讓iOS本地的apple-app-site-association同步更新夯辖,Universal Link的更新 只有在APP第一次安裝 和 更新版本的時(shí)候琉预,如果Universal Link有變更,只能重新打包發(fā)版蒿褂,然后讓用戶更新版本或者卸載重裝圆米。
  4. 跨域問(wèn)題,如果由當(dāng)前網(wǎng)頁(yè)跳轉(zhuǎn)Universal Link打開APP啄栓,當(dāng)前網(wǎng)頁(yè)的域名和Universal Link 的域名必須 不能一致娄帖,否則不會(huì)跳轉(zhuǎn),只會(huì)在當(dāng)前的WebView里面跳轉(zhuǎn)昙楚。
  5. 由瀏覽器或其他app應(yīng)用跳轉(zhuǎn)進(jìn)入我自己的APP時(shí)接收回調(diào)近速,要在AppDelegate.m/SceneDelegate.m中實(shí)現(xiàn)下面回調(diào)方法:
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
    // NSUserActivityTypeBrowsingWeb 由Universal Links喚醒的APP
    if (![userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        return YES;
    }
    NSURL *jumpUrl = userActivity.webpageURL; // 這個(gè)URL就是你跳轉(zhuǎn)的那個(gè)URL,下載頁(yè)地址堪旧,想要傳參數(shù)可以直接在URL后面拼接
    // TODO:在這里進(jìn)行跳轉(zhuǎn)具體頁(yè)面的操作
    return YES;
}

四 削葱、Universal LinksURL Scheme

另一種 外部喚起App 的方式是URL Scheme,但是URL Scheme有一些弊端。

  1. Universal Links 具有唯一性淳梦,比較安全析砸。它是使用標(biāo)準(zhǔn)的HTTPS協(xié)議鏈接到你的web站點(diǎn),所以一般不會(huì)被其它的APP所聲明爆袍。而URL Scheme是由開發(fā)者自定義的首繁,沒(méi)有限制,任何App都可以用同一個(gè)名字陨囊,有些釣魚App可以 設(shè)置知名的APP 的URL Scheme 來(lái)欺騙用戶弦疮。

  2. URL Scheme可以通過(guò)canOpenURL判斷用戶是否安裝App,但是只有安裝了APP才能跳轉(zhuǎn),未安裝則沒(méi)有效果谆扎。而Universal Links 如果安裝了就跳轉(zhuǎn)APP挂捅,如果未安裝就跳轉(zhuǎn)網(wǎng)頁(yè)展示你網(wǎng)站的內(nèi)容,比較靈活堂湖。

  3. 使用scheme跳轉(zhuǎn)系統(tǒng)會(huì)彈框提示闲先,替換成UL鏈接后可以實(shí)現(xiàn)無(wú)縫跳轉(zhuǎn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末无蜂,一起剝皮案震驚了整個(gè)濱河市伺糠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌斥季,老刑警劉巖训桶,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件累驮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡舵揭,警方通過(guò)查閱死者的電腦和手機(jī)谤专,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)午绳,“玉大人置侍,你說(shuō)我怎么就攤上這事±狗伲” “怎么了蜡坊?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赎败。 經(jīng)常有香客問(wèn)我秕衙,道長(zhǎng),這世上最難降的妖魔是什么僵刮? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任据忘,我火速辦了婚禮,結(jié)果婚禮上搞糕,老公的妹妹穿的比我還像新娘若河。我一直安慰自己,他們只是感情好寞宫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布萧福。 她就那樣靜靜地躺著,像睡著了一般辈赋。 火紅的嫁衣襯著肌膚如雪鲫忍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天钥屈,我揣著相機(jī)與錄音悟民,去河邊找鬼。 笑死篷就,一個(gè)胖子當(dāng)著我的面吹牛射亏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竭业,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼智润,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了未辆?” 一聲冷哼從身側(cè)響起窟绷,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咐柜,沒(méi)想到半個(gè)月后兼蜈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攘残,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年为狸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了歼郭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辐棒,死狀恐怖实撒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涉瘾,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布捷兰,位于F島的核電站立叛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏贡茅。R本人自食惡果不足惜秘蛇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顶考。 院中可真熱鬧赁还,春花似錦、人聲如沸驹沿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渊季。三九已至朋蔫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間却汉,已是汗流浹背驯妄。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留合砂,地道東北人青扔。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像翩伪,于是被迫代替她去往敵國(guó)和親微猖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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