在iOS9中突破微信App跳轉(zhuǎn)的限制

原文轉(zhuǎn)載自:http://www.nero.today/index.php/2016/01/26/appswitchonwechatonios9/

前言

微信的普及程度相信不需要多言了喊括,稍微回憶一下自己上一條短信是什么時(shí)候鹿榜,上一條微信又是什么時(shí)候就知道了筛峭。

因此通過(guò)微信傳播也是絕大部分App的一個(gè)重要手段聪富,但是在iOS7微信出的新版本弯蚜,就開(kāi)始不允許從微信直接跳轉(zhuǎn)到對(duì)應(yīng)的App中了肿轨。

所謂上有政策淮悼,下有對(duì)策挑胸,各大App紛紛想出自己的解決方案猴凹,目前最最流行的就是在點(diǎn)擊跳轉(zhuǎn)到自己的App的時(shí)候出現(xiàn)一個(gè)蒙板夷狰,然后一個(gè)箭頭指向右上角的更多按鈕,然后用戶從Safari打開(kāi)當(dāng)前網(wǎng)頁(yè)郊霎,然后點(diǎn)擊跳轉(zhuǎn)沼头。

這個(gè)版本算是一種無(wú)奈的妥協(xié)吧,畢竟用戶用起來(lái)還是有點(diǎn)蛋疼的书劝。

最近博主的一個(gè)Boss發(fā)現(xiàn)網(wǎng)易新聞竟然能直接從微信里打開(kāi)自己的App进倍,于是乎~這個(gè)“艱巨”的任務(wù)就落到了我的頭上。中間研究的過(guò)程就不再贅述购对,隆重請(qǐng)出使用到的技術(shù):iOS9 Universal Links猾昆!

這里不禁要夸一夸網(wǎng)易的iOS開(kāi)發(fā)同學(xué)們,看文檔看得夠仔細(xì)奥獍垂蜗!

附上Apple的官方文檔,What’s new in iOS

不知大家能否在Search那一欄中找到Universal links:

Universal links let you replace custom URL schemes with standard HTTP or HTTPS links. Universal links work for all users: If users have your app installed, the link takes them directly into your app; if they don’t have your app installed, the link opens your website in Safari. To learn more about universal links, seeSupport Universal Links.

P.S.該技術(shù)目前只能應(yīng)用在iOS9中解幽。

開(kāi)搞

OK贴见,我們開(kāi)搞。

1- 首先躲株,參照上面提到的文檔片部,創(chuàng)建一個(gè)叫apple-app-site-association的json文件(請(qǐng)不要加上.json或者其他任何后綴名),文件的大致內(nèi)容如下:

```{"applinks": {"apps": [],"details": [? ? ? ? ? ? {"appID":"9JA89QQLNQ.com.apple.wwdc","paths": ["/wwdc/news/","/videos/wwdc/2015/*"]? ? ? ? ? ? }? ? ? ? ]? ? }}


下面來(lái)解釋一下這個(gè)json文件里的字段:

apps: 目前只需要提供一個(gè)空數(shù)組就可以了霜定,但是這個(gè)字段必須提供档悠,不可不填廊鸥。

appID:appID的格式大致是這樣的:TeamID.App Bundle

ID,以文檔中提供的例子來(lái)說(shuō),Apple出的WWDC的應(yīng)用的開(kāi)發(fā)者Team的Team

ID為:9JA89QQLNQ辖所,這個(gè)應(yīng)用的BundleID為:com.apple.wwdc惰说。

paths:希望Safari在訪問(wèn)哪個(gè)路徑時(shí),跳轉(zhuǎn)到對(duì)應(yīng)的App奴烙,可以使用*作為通配符助被。

2- 將準(zhǔn)備好的apple-app-site-association上傳到web網(wǎng)站的根目錄下剖张。

3- 配置App的Entitlements file:選中App的Target切诀,在Capabilities中打開(kāi)Associated

Domains

切記關(guān)聯(lián)的域名需要使用applinks:作為開(kāi)頭。

4- 在AppDelegate中實(shí)現(xiàn)對(duì)應(yīng)的delegate搔弄,大致代碼如下:

-(BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void (^)(NSArray*_Nullable))restorationHandler{? ? if(userActivity.webpageURL!= nil){? ? }}

userActivity中的webpageURL就是對(duì)應(yīng)的從Web端跳轉(zhuǎn)而來(lái)的網(wǎng)址幅虑,其中可以帶上各種參數(shù)來(lái)供App進(jìn)行不通的判斷和操作。

5- Web頁(yè)面上的JS代碼大致如下:

varopen_app = document.getElementById('open_app');btn_open.addEventListener('click',function(){open_app.src ='https://www.domain.com/site/download?force=1';? ? setTimeout(function(){location.;? ? },1000);},false);


和Web端的同學(xué)一開(kāi)始怎么也搞不定點(diǎn)擊按鈕跳轉(zhuǎn)顾犹,找了好久終于發(fā)現(xiàn)為了提高手機(jī)端Web頁(yè)面的點(diǎn)擊響應(yīng)速度倒庵,我們的Web端默認(rèn)是使用touch事件來(lái)代替click的,但是在Universal Links的跳轉(zhuǎn)中必須使用click炫刷。

另外擎宝,頁(yè)面初始頁(yè)和要跳轉(zhuǎn)的頁(yè)的域名必須是不同的,否則這個(gè)跳轉(zhuǎn)事件也不會(huì)調(diào)起對(duì)應(yīng)的App浑玛!另外绍申,在進(jìn)行Universal Links的調(diào)試時(shí),建議先刪除App顾彰,然后重新編譯极阅,運(yùn)行。

總結(jié)

稍稍總結(jié)一下涨享,Universal Links的工作原理大體上就是筋搏,App第一次啟動(dòng)后,發(fā)現(xiàn)自己是支持Associated Domains的厕隧,就去Associated Domains中描述的域名的根目錄去下載一個(gè)名叫apple-app-site-association的文件奔脐,之后系統(tǒng)運(yùn)行的Safari,其他應(yīng)用的SFSafariViewController, WKWebView, 或者UIWebView都會(huì)受到這個(gè)apple-app-site-association文件的影響吁讨,在用戶點(diǎn)擊那個(gè)跳轉(zhuǎn)的鏈接時(shí)髓迎,系統(tǒng)就會(huì)啟動(dòng)對(duì)應(yīng)的App。

不得不說(shuō)挡爵,以后每個(gè)版本的What’s New還是必須得看得更加仔細(xì)一些竖般,同時(shí)需要大大提高對(duì)于新技術(shù)的敏感度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茶鹃,一起剝皮案震驚了整個(gè)濱河市涣雕,隨后出現(xiàn)的幾起案子艰亮,更是在濱河造成了極大的恐慌,老刑警劉巖挣郭,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迄埃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡兑障,警方通過(guò)查閱死者的電腦和手機(jī)侄非,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)流译,“玉大人逞怨,你說(shuō)我怎么就攤上這事「T瑁” “怎么了叠赦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)革砸。 經(jīng)常有香客問(wèn)我除秀,道長(zhǎng),這世上最難降的妖魔是什么算利? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任册踩,我火速辦了婚禮,結(jié)果婚禮上效拭,老公的妹妹穿的比我還像新娘暂吉。我一直安慰自己,他們只是感情好允耿,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布借笙。 她就那樣靜靜地躺著粘昨,像睡著了一般炼列。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上横漏,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天蚂蕴,我揣著相機(jī)與錄音低散,去河邊找鬼。 笑死骡楼,一個(gè)胖子當(dāng)著我的面吹牛熔号,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸟整,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼引镊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起弟头,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吩抓,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后赴恨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體疹娶,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年伦连,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雨饺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惑淳,死狀恐怖额港,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汛聚,我是刑警寧澤锹安,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站倚舀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏忍宋。R本人自食惡果不足惜痕貌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望糠排。 院中可真熱鬧舵稠,春花似錦、人聲如沸入宦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乾闰。三九已至落追,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涯肩,已是汗流浹背轿钠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留病苗,地道東北人疗垛。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像硫朦,于是被迫代替她去往敵國(guó)和親贷腕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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