需求:
用戶從qq/微信分享出去的H5頁(yè)面,當(dāng)點(diǎn)擊H5頁(yè)面的某個(gè)按鈕時(shí),要實(shí)現(xiàn)如下功能:
1.當(dāng)用戶未安裝App時(shí),跳轉(zhuǎn)到AppStore頁(yè)面引導(dǎo)用戶下載
2.當(dāng)用戶已安裝App時(shí),喚醒App并跳轉(zhuǎn)到App里面的某一個(gè)指定頁(yè)面
傳統(tǒng)的url schema實(shí)現(xiàn)方式存在兩個(gè)弊端,一是跳轉(zhuǎn)的時(shí)候會(huì)有一個(gè)提示框:“是否打開(kāi)XXX”,用戶體驗(yàn)不好,二是微信屏蔽了URL Scheme,必須是在微信的白名單里面才可跳轉(zhuǎn),也就意味著用戶在微信里面是無(wú)法一鍵直達(dá)App的。這對(duì)于大多數(shù)公司來(lái)講,是難以承受的。而通用鏈接Universal Link正是可以解決上述問(wèn)題的技術(shù)手段。
一、通用鏈接介紹及優(yōu)點(diǎn) :
iOS 9 Universal Links 通用鏈接可參考這篇博文
二、通用鏈接具體實(shí)施步驟
? ? ?這里可以分兩種實(shí)現(xiàn)方式,第一種是自己去配置通用鏈接,第二種是通過(guò)一些第三方sdk來(lái)實(shí)現(xiàn)此功能,筆者在這里強(qiáng)烈推薦第二種,我自己有嘗試第一種配置,坑多,而且配置半天后發(fā)現(xiàn)得到的鏈接始終通不過(guò)測(cè)試,懷疑是服務(wù)器那邊不支持。而第二種配置的話,坑少,而且還會(huì)節(jié)省大量的開(kāi)發(fā)時(shí)間,保證該功能的迅速上線。
①自己配置通用鏈接?
iOS的UniversalLink開(kāi)發(fā)總結(jié)? 不建議 坑太多。
②用第三方sdk去集成配置(魔窗,LinkedME等)
下面以魔窗為例,講解如何配置。魔窗iOS集成文檔
用魔窗的話iOS端只需要做三部分操作,分別是魔窗后臺(tái)配置部分,Xcode配置部分,代碼實(shí)現(xiàn)部分。下面將詳細(xì)描述步驟。
魔窗后臺(tái)配置部分
①注冊(cè)一個(gè)魔窗賬號(hào) 魔窗注冊(cè)?
②賬號(hào)注冊(cè)完畢后,登錄魔窗點(diǎn)擊右上角新增產(chǎn)品然后選擇App。

③要填寫的信息分為三部分,分別是產(chǎn)品信息,App信息,魔窗位信息。產(chǎn)品信息沒(méi)什么可講的,魔窗位信息可以不填 無(wú)視。App信息頁(yè)面如下圖
應(yīng)用寶下載地址,基本大多數(shù)公司都會(huì)有,直接填上即可。
應(yīng)用名稱和Bundle ID不用解釋 直接填上
URL Scheme:這個(gè)LiveRoom名稱可以自己隨便起,但要保證跟Xcode里面URL Scheme 保持一致(后面會(huì)講解Xcode中的配置)。
下載地址就是應(yīng)用程序在App Store里面的下載地址。
Team ID :如何獲取Team ID?按照教程得到填寫即可。
將這些都填寫完畢后,魔窗會(huì)給你分配一個(gè)域名,這個(gè)域名會(huì)在后面Xcode中配置使用到。

魔窗位信息無(wú)視,下一步,然后注冊(cè)完畢后,會(huì)得到一個(gè)App key,這個(gè)是魔窗App key

④想要使用深度鏈接,還需要配置魔窗的mlink服務(wù),如下圖

點(diǎn)擊添加mLink服務(wù)后,如下圖

mLink服務(wù)名稱可自己配置 ?mLink服務(wù)key也可自己配置 這個(gè)key后面代碼里面需要使用。
然后就是URL如何拼接了。比如你app中有用戶的個(gè)人中心,且可以用參數(shù)決定是否顯示用戶的詳細(xì)信息,那么您需要輸入的頁(yè)面URI如下:mw://www.mycompany.com/user/:userId?containsDetail=:containsDetail。這里mw://為URI Scheme,可從外部喚醒App,在“App管理”中設(shè)置。www.mycompany.com是hostname,user是path。url不懂得如何配置的可參考魔窗上面的點(diǎn)擊查看如何配置URL,簡(jiǎn)言之,就是服務(wù)器地址后面拼參數(shù)。
這些填完以后,會(huì)得到一個(gè)短連接。

至此,魔窗的所有配置均已做完。
小結(jié):魔窗的配置是為了獲得五個(gè)關(guān)鍵參數(shù),以供后面配置使用。分別是URL Scheme,魔窗App key,魔窗mLink key ?魔窗域名 魔窗短連接。
Xcode配置部分
Xcode這邊配置非常容易,就兩步即可。
①配置URL Scheme 這里的identifier可填可不填沒(méi)影響,URL Schemes這里填在魔窗后臺(tái)配置時(shí),你寫的URL Scheme,魔窗跟Xcode這里二者必須保持一致

②applinks配置 這里的Domains一定要填你之前在魔窗配置后獲得的那個(gè)魔窗域名,這里要保證不能出差錯(cuò),否則無(wú)法完成跳轉(zhuǎn)

Xcode的配置到這里就完成了。
代碼實(shí)現(xiàn)部分
①集成魔窗sdk,手動(dòng)和cocopods兩種方式,手動(dòng)請(qǐng)參考魔窗文檔,下面只講cocopods集成
pod 'MagicWindowSDK'
pod install
記住不要pod update,因?yàn)槟Т皊dk自己集成了微信分享,非常容易跟shareSDK 友盟分享SDK沖突。
②Appdelegate中實(shí)現(xiàn)注冊(cè)魔窗
在didFinishLaunchingWithOptions這個(gè)app初始化方法里面, 其中MWKey就是魔窗key, liveRoomKey需要你替換成之前配置的魔窗mLink key?;卣{(diào)代碼里面,不同的項(xiàng)目有不同需求,靈活應(yīng)變即可。

下圖是官網(wǎng)推薦的回調(diào)代碼內(nèi)容:

③Appdelegate中實(shí)現(xiàn)必要的方法,在.m中 實(shí)現(xiàn)以下這三個(gè)方法即可。這里我的openUrl有做判斷,因?yàn)轫?xiàng)目里面集成了友盟分享,如果不做判斷的話,會(huì)很容易沖突。大家根據(jù)自己的項(xiàng)目,靈活處理即可。

至此,iOS端就完成了所有的配置,看著文章內(nèi)容很多,其實(shí)配置起來(lái)還是很快很簡(jiǎn)單的。將你之前獲得的魔窗短鏈,交給你們的web開(kāi)發(fā)小伙伴,讓他參考這篇文章,進(jìn)行web端的配置即可魔窗JS API。(超簡(jiǎn)單)
小提示:如果你按教程配置完事了,發(fā)現(xiàn)qq分享出去的鏈接,可以正常跳到自家的App某個(gè)頁(yè)面,而微信的不行,那么可以先排除是不是h5鏈接的原因。測(cè)試方法,直接用短連接+參數(shù) https://ab9e1n.mlinks.cc/AcJF?roomId=0849170 如果類似這樣的鏈接在微信里面正常,那么可推斷是web端原因,如果這樣的鏈接也不正常,那么則是App端沒(méi)配置好,可檢測(cè)下AppDelegate.m需要實(shí)現(xiàn)的那三個(gè)方法有沒(méi)有實(shí)現(xiàn),是不是寫錯(cuò)了。