wap 喚起App 的兩種方式Schema & Universal Link

1闰非、schema

現(xiàn)在線上大多數(shù) App 使用的就是 schema 跳轉(zhuǎn)剩盒,都對(duì)應(yīng)一套路由法則呆瞻,基本都能做到跳轉(zhuǎn)到 App 內(nèi)任一界面台夺。

location.href?=?'schema://xxxx'

但 schema 有個(gè)弊端:
iOS中,如果用戶(hù)沒(méi)有安裝App痴脾,那么他一定會(huì)經(jīng)歷2個(gè)事情:
1颤介、schema打開(kāi)app,但是失敗,延遲后滚朵,跳轉(zhuǎn)下載App
2冤灾、跳轉(zhuǎn)下載App之前schema會(huì)彈個(gè)可惡的跳轉(zhuǎn)失敗的框,然后再延遲后彈跳轉(zhuǎn)AppStore的框

再就是 schema 被微信等應(yīng)用禁止跳轉(zhuǎn)了辕近。

2韵吨、Universal Link

Universal Link和 schema 一樣,目前還未被微信等禁止移宅,也不會(huì)彈出跳轉(zhuǎn)失敗的彈出框归粉。

Universal Link實(shí)現(xiàn)過(guò)程

1、一個(gè)支持 SSL 訪問(wèn)的域名漏峰,且不能是自建證書(shū)的 https 域名
2糠悼、新建一個(gè)apple-app-site-association文件,上傳到域名根目錄下浅乔,或 .well-known 文件夾下倔喂,

apple-app-site-association文件內(nèi)容是一個(gè) json

{
    "applinks":
    {
        "apps":[],
        "details":[
                {
                    "appID":"ABCDEFG.com.aaa.bbb.ccc",
                    "paths":["NOT /aaaa/*","/iosuniversallink/*"]
                },
                {
                    "appID":"GFEDCBA.com.aaa.bbb.ccc",
                    "paths":["NOT /aaaa/*","/iosuniversallink/*"]
                }
                 ]
    }
}

appId 為 teamId + boundleId
paths 為域名下可識(shí)別或不可識(shí)別的 path 路徑, 如 https://www.xxx.com/iosuniversallink/*, 就可以喚起 app靖苇, 而 https://www.xxx.com/aaaa/xxxxx則直接跳轉(zhuǎn)到 web 頁(yè)了席噩。

注意:該文件沒(méi)有后綴名
附:鏈家 json 文件:https://linkm.lianjia.com/apple-app-site-association
知乎 json 文件:https://oia.zhihu.com/apple-app-site-association

3、配置iOS App工程

開(kāi)發(fā)者中心證書(shū)打開(kāi)Associated Domains
工程配置Associated Domains
將你apple-app-site-association所在域名配置進(jìn)去
給你的工程像Schema的OpenUrl一樣贤壁,編寫(xiě)App被喚醒后的處理邏輯

4班挖、Universal Link的基本運(yùn)作流程

APP第一次啟動(dòng) or APP更新版本后第一次啟動(dòng)
APP向工程里配置的域名發(fā)起Get請(qǐng)求拉取apple-app-association Json File
APP將apple-app-association注冊(cè)給系統(tǒng)
由任意webview發(fā)起跳轉(zhuǎn)的url,如果命中了apple-app-association注冊(cè)過(guò)的通用鏈接
打開(kāi)App芯砸,觸發(fā)Universal Link delegate
沒(méi)命中,webview繼續(xù)跳轉(zhuǎn)url
在你進(jìn)行apple-app-association 以及 App工程的配置之后给梅,整個(gè)Universal Link的運(yùn)作流程完全由系統(tǒng)控制了

Universal Link 跨域

Universal Link有跨域問(wèn)題假丧,Universal Link必須要求跨域,如果不跨域动羽,就不行包帚,就失效,就不工作运吓。(iOS 9.2之后的改動(dòng))

假如當(dāng)前網(wǎng)頁(yè)的域名是 A
當(dāng)前網(wǎng)頁(yè)發(fā)起跳轉(zhuǎn)的域名是 B
必須要求 B 和 A 是不同域名渴邦,才會(huì)觸發(fā)Universal Link
如果B 和 A 是相同域名,只會(huì)繼續(xù)在當(dāng)前WebView里面進(jìn)行跳轉(zhuǎn)拘哨,哪怕你的Universal Link一切正常谋梭,根本不會(huì)打開(kāi)App

產(chǎn)品需求

如果已安裝App,跳轉(zhuǎn)對(duì)應(yīng)界面
如果沒(méi)安裝App倦青,跳轉(zhuǎn)App下載界面

已安裝App
打開(kāi)App 觸發(fā)handleUniversalLink
走到/_iosuniversallink/分支瓮床,拼接出任意App內(nèi)的界面路由
跳轉(zhuǎn)界面

未安裝App
WebView原地跳轉(zhuǎn)https://xxx.xxx.xxx/_iosuniversallink/*
命中服務(wù)器的重定向邏輯
重定向到AppStore跳轉(zhuǎn)頁(yè)面
打開(kāi)AppStore下載

如果已安裝App,跳轉(zhuǎn)對(duì)應(yīng)界面
如果沒(méi)安裝App,跳轉(zhuǎn)App下載界面
解決了舊Schema模式下的弊端問(wèn)題:

Schema無(wú)法判斷是否安裝App隘庄,只能采用setTimeout的Trick方式
Schema的Trick方式會(huì)有一個(gè)丑陋的錯(cuò)誤跳轉(zhuǎn)彈框
Schema無(wú)法在微信/手百等App內(nèi)踢步,打開(kāi)我們自己的App
簡(jiǎn)單的說(shuō),這樣設(shè)計(jì)的初衷就是丑掺,我不為了通用鏈接這一目的來(lái)使用Universal Link获印,來(lái)統(tǒng)一WAP&APP的URL跳轉(zhuǎn),我就為了把Universal Link當(dāng)做加強(qiáng)版Schema來(lái)使用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末街州,一起剝皮案震驚了整個(gè)濱河市兼丰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌菇肃,老刑警劉巖地粪,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異琐谤,居然都是意外死亡蟆技,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)斗忌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)质礼,“玉大人,你說(shuō)我怎么就攤上這事织阳】艚叮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵唧躲,是天一觀的道長(zhǎng)造挽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)弄痹,這世上最難降的妖魔是什么饭入? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮肛真,結(jié)果婚禮上谐丢,老公的妹妹穿的比我還像新娘。我一直安慰自己蚓让,他們只是感情好乾忱,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著历极,像睡著了一般窄瘟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趟卸,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天寞肖,我揣著相機(jī)與錄音纲酗,去河邊找鬼。 笑死新蟆,一個(gè)胖子當(dāng)著我的面吹牛觅赊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琼稻,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吮螺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了帕翻?” 一聲冷哼從身側(cè)響起鸠补,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘀掸,沒(méi)想到半個(gè)月后紫岩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡睬塌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年泉蝌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揩晴。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勋陪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硫兰,到底是詐尸還是另有隱情诅愚,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布劫映,位于F島的核電站违孝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泳赋。R本人自食惡果不足惜雌桑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摹蘑。 院中可真熱鬧,春花似錦轧飞、人聲如沸衅鹿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)大渤。三九已至,卻和暖如春掸绞,著一層夾襖步出監(jiān)牢的瞬間泵三,已是汗流浹背耕捞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烫幕,地道東北人俺抽。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像较曼,于是被迫代替她去往敵國(guó)和親磷斧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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