iOS的通用鏈接(UniversalLink)匯總 + Schemes使用概述

一沉颂、概述

1.1条摸、技術(shù)描述

官方的描述如下:
Seamlessly link to content inside your app, or on your website in iOS 9 or later. With universal links, you can always give users the most integrated mobile experience, even when your app isn’t installed on their device.
iOS9.0后開始支持,使用“通用鏈接”技術(shù)的App铸屉,支持點(diǎn)擊外部的url鏈接钉蒲,如果App有安裝,則直接打開App且可以直接到具體頁(yè)面彻坛;如果App未安裝顷啼,則會(huì)在Safari打開,并且提示按鈕昌屉,點(diǎn)擊可以跳轉(zhuǎn)AppStore下載地址頁(yè)钙蒙。

總的來說,其和Scheme技術(shù)相近间驮,都是允許外部喚起App的技術(shù)方案躬厌,都是DeepLink的實(shí)現(xiàn)方式之一。

1.2竞帽、使用場(chǎng)景:

  • 拉新:通過活動(dòng)鏈接分享到社交平臺(tái)扛施,新用戶點(diǎn)擊可以跳轉(zhuǎn)到App的下載介紹頁(yè)鸿捧,點(diǎn)擊下載可以直接到AppStore的下載頁(yè)進(jìn)行下載。
  • 活動(dòng)溯源回流分析:活動(dòng)鏈接分享到社交平臺(tái)后疙渣,用戶點(diǎn)擊跳轉(zhuǎn)回App的具體頁(yè)面匙奴,這樣可以更準(zhǔn)確分析活動(dòng)效果,看有多少用戶點(diǎn)擊跳回昌阿。
  • 廣告精準(zhǔn)投放:點(diǎn)擊廣告饥脑,可以直接拉起目標(biāo)App,提高廣告的轉(zhuǎn)化率懦冰。

1.3灶轰、對(duì)比UniversalLink ,Scheme存在的缺點(diǎn)

Scheme是以appShcema://url_path打開app的方式刷钢,必須在xcode的URL Types配置聲明笋颤,支持的Scheme前綴。

  • Scheme無(wú)法判斷是否安裝App内地。如果已經(jīng)安裝則跳轉(zhuǎn)成功伴澄,未安裝打開失敗沒有效果。
  • 任何App都可以用同一個(gè)名字阱缓,有些釣魚App如果暫用被安裝了非凌,可能被欺騙。

可以說UniversalLink解決Scheme上面兩個(gè)弊端荆针,提供更加流暢和安全的用戶體驗(yàn)肖卧。

二柑晒、UniversalLink大概配置(具體自行Search,網(wǎng)上教程很多)

  • 環(huán)境要求:
    后端服務(wù)器必須https,且擁有該域名下的上傳到根目錄的權(quán)限允乐;
    只支持iOS9+的系統(tǒng)忘闻,舊系統(tǒng)只能走Schema贞间。

  • 開發(fā)者中心配置:針對(duì)具體的AppId進(jìn)行配置坝锰,在在Application Services里開啟Associated Domains。

  • XCode工程配置:在Associated Domains下配置applinks:xxx域名xxx今魔,必須以applinks:開頭勺像。

  • 編寫apple-app-site-association配置文件,并且上傳到后端服務(wù)器根目錄下错森,文件格式如下咏删。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "開發(fā)者后臺(tái)的應(yīng)用id",
                "paths": [ "/openapp/*"]
            },
            {
                "appID": "開發(fā)者后臺(tái)的應(yīng)用id",
                "paths": [ ""]
            }
        ]
    }
}
  • 代碼處理UniversalLink,在以下方法中攔截處理url
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler
  • 校驗(yàn)UniversalLink是否配置成功问词,有以下兩種方法
    • “備忘錄”應(yīng)用中督函,輸入U(xiǎn)niversalLinks,點(diǎn)擊彈窗“跳轉(zhuǎn)到某app”,則說明成功辰狡。
    • 在Safari中打開锋叨,在出現(xiàn)的網(wǎng)頁(yè)上方下滑,可以看到有在”XX”應(yīng)用中打開宛篇。

三娃磺、UniversalLink的原理

  • 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è)過的通用鏈接蚕泽,如果命中則直接打開App觸發(fā)Delegate方法晌梨。

  • 4、如果沒命中须妻,WebView繼續(xù)跳轉(zhuǎn)加載url仔蝌。

    以上都是系統(tǒng)默默替你做的,我們要做的就是確保配置的正確性荒吏。

四敛惊、常見問題

  • 4.1、UniversalLink的跨域要求:使用UniversalLink網(wǎng)頁(yè)的域名必須和UniversalLink的域名不同绰更。
    a瞧挤、如果外部的網(wǎng)頁(yè)的域名A,在當(dāng)前網(wǎng)頁(yè)點(diǎn)擊發(fā)起UniversalLink的跳轉(zhuǎn)动知,這個(gè)UniversalLink的域名B皿伺。
    b员辩、則必須要求 B 和 A 是不同域名盒粮,才會(huì)觸發(fā)Universal Link。
    c奠滑、如果B 和 A 是相同域名丹皱,只會(huì)繼續(xù)在當(dāng)前WebView里面進(jìn)行跳轉(zhuǎn),即使你的Universal Link一切正常宋税,根本不會(huì)打開App摊崭。

  • 4.2、不同App配置相同一個(gè)UniversalLink域名
    假設(shè)有App1杰赛、App2兩個(gè)不同的應(yīng)用呢簸,都需要配置UniversalLink,這個(gè)UniversalLink的域名可以相同,可以通過配置文件里面的path進(jìn)行區(qū)分根时。

  • 4.3瘦赫、UniversalLink的更新時(shí)機(jī)問題
    apple-app-association只有在以下兩種情況下才會(huì)更新:
    a、App安裝后的第一次Launch蛤迎。
    b确虱、App版本更新后的第一次Launch。

    因此替裆,如果確實(shí)需要部署好幾個(gè)版本后修改apple-app-association的配置信息校辩,想要挽回又讓那部分用戶無(wú)感,則App必須重新打包發(fā)版辆童。

  • 4.4宜咒、由于apple-app-association配置文件下載失敗問題
    在開發(fā)過程中,遇到過測(cè)試手機(jī)昨天可以胸遇,今天就不行了荧呐,代碼沒有改過。這有可能測(cè)試手機(jī)連接抓包纸镊,代理等倍阐,導(dǎo)致安裝app后第一次啟動(dòng),apple-app-association配置文件撈取不到逗威,導(dǎo)致無(wú)法跳轉(zhuǎn)峰搪。
    這種情況下,重啟手機(jī)凯旭,并且重新安裝包概耻。


五、URL Schemes 使用概述

下面簡(jiǎn)單說說Schemes的配置方法罐呼;

5.1鞠柄、使用URL Scheme跳轉(zhuǎn)到其他應(yīng)用
  • 第一步、設(shè)置白名單
    app的info.plist文件中增加LSApplicationQueriesSchemes字段類型為Array嫉柴,然后把第三方應(yīng)用的Schemes加入厌杜。例如微信weixin://等等

  • 第二步、使用openUrl直接跳轉(zhuǎn)第三方计螺,調(diào)用之前確認(rèn)下是否可以跳轉(zhuǎn)夯尽。

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString: customURL]]) {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
} else {
    ....
}
5.2、自定義URL Scheme登馒,其他應(yīng)用跳轉(zhuǎn)到我們的app
  • 第一步匙握、聲明自定義的Schemes
    在App內(nèi)的info->URL Ttpes->新增自定義URL Schemes

  • 第二步陈轿、在ApplicationDelegate實(shí)現(xiàn)回調(diào)函數(shù)中
    主要是區(qū)分不同的Schemes圈纺,判斷不同的回調(diào)來源秦忿,做不同的業(yè)務(wù)邏輯處理。

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
  • 第三步:測(cè)試
    在Safari或者H5網(wǎng)頁(yè)中直接使用自定義的schemes打開蛾娶,就可以喚起我們app小渊。

  • 自定義Schemes的命名規(guī)則(沒有強(qiáng)制規(guī)定,業(yè)內(nèi)通用的做法如下)
    一般普通字符串茫叭,可以包括點(diǎn)符號(hào)酬屉。例如com.xxx.pay:// 或者 wxpay:// 等。
    也可以像微信那樣揍愁,使用路徑區(qū)分業(yè)務(wù)呐萨。例如appKey://platform:wechatappKey://platform:oauth


六莽囤、其他谬擦、

  • 市面有些第三方平臺(tái)提供的Link接入方案,其實(shí)也是利用利用UniversalLink和Scheme實(shí)現(xiàn)的朽缎,例如:UMeng的ULink功能惨远,友盟更多做好統(tǒng)計(jì)分析等業(yè)務(wù)場(chǎng)景。

  • 微信對(duì)于Schemes和UniversalLink的使用
    使用微信分享的sdk话肖,返回App的時(shí)候發(fā)現(xiàn)北秽,微信有時(shí)候使用Schemes而有時(shí)候使用UniversalLink。
    微信的判斷策略是什么最筒?檢測(cè)是否支持Schemes或者UniversalLink贺氓?或者是有策略使用某一種?
    這個(gè)不得而知床蜘,有知道的朋友幫忙解答下辙培,萬(wàn)分感謝。

  • 參考
    iOS 喚起APP之Universal Link(通用鏈接)
    iOS Universal link 入門指南

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載邢锯,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者扬蕊。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市丹擎,隨后出現(xiàn)的幾起案子尾抑,更是在濱河造成了極大的恐慌,老刑警劉巖鸥鹉,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛮穿,死亡現(xiàn)場(chǎng)離奇詭異庶骄,居然都是意外死亡毁渗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門单刁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灸异,“玉大人府适,你說我怎么就攤上這事》握粒” “怎么了檐春?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)么伯。 經(jīng)常有香客問我疟暖,道長(zhǎng),這世上最難降的妖魔是什么田柔? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任俐巴,我火速辦了婚禮,結(jié)果婚禮上硬爆,老公的妹妹穿的比我還像新娘欣舵。我一直安慰自己,他們只是感情好缀磕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布缘圈。 她就那樣靜靜地躺著,像睡著了一般袜蚕。 火紅的嫁衣襯著肌膚如雪糟把。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天牲剃,我揣著相機(jī)與錄音糊饱,去河邊找鬼。 笑死颠黎,一個(gè)胖子當(dāng)著我的面吹牛另锋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狭归,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼夭坪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了过椎?” 一聲冷哼從身側(cè)響起室梅,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疚宇,沒想到半個(gè)月后亡鼠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡敷待,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年间涵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榜揖。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勾哩,死狀恐怖抗蠢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情思劳,我是刑警寧澤迅矛,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站潜叛,受9級(jí)特大地震影響秽褒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜威兜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一震嫉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧牡属,春花似錦票堵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至措伐,卻和暖如春特纤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侥加。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工捧存, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人担败。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓昔穴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親提前。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吗货,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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