How Do Universal Links Work in iOS 9?
在Universal links出現(xiàn)之前,跳轉(zhuǎn)app是通過(guò)瀏覽器再重定向去一個(gè)app的,這種跳轉(zhuǎn)有點(diǎn)復(fù)雜,繁瑣。開(kāi)發(fā)者沒(méi)辦法知道這個(gè)app有沒(méi)有安裝。這意味著開(kāi)發(fā)者每次都需要使用URL scheme。
iOS9 的Universal link就是為了修復(fù)這個(gè)問(wèn)題而誕生的。當(dāng)link被click后,它先會(huì)檢測(cè),被注冊(cè)的鏈接是否是相關(guān)域名的鏈接。然后檢查對(duì)應(yīng)的app是否安裝,安裝就直接跳轉(zhuǎn),否則就用瀏覽器打開(kāi)這個(gè)鏈接
Universal Link Integration Guide
配置你的app,來(lái)注冊(cè)一個(gè)associated domains
1.在developers.app注冊(cè)你的app
2.用你app的identifier啟用 associated domains
3.在你的Xcode project啟用 associated domains
4.添加正確的權(quán)限
5.在build的時(shí)候確保權(quán)限文件被包含進(jìn)去了
配置你的website來(lái)持用apple-app-site-association
1.買一個(gè)域名(domains name);或者選擇已有的
2.為你的域名創(chuàng)建SSL證書
3.創(chuàng)建名為“apple-app-site-association”的Json格式文件
4.用SSL證書對(duì)Json文件進(jìn)行簽名
5.配置你的文件服務(wù)
下面我們來(lái)仔細(xì)看看:
Section1:
配置你的app授權(quán)
為了注冊(cè)你的universal link到Xcode project里面,你需要?jiǎng)?chuàng)建一個(gè)AppID。并且打開(kāi)正確的權(quán)限。這很簡(jiǎn)單,和配置內(nèi)置購(gòu)買差不多(你的app identifier里面不能有通配符)
在 developer.app上面注冊(cè)你app
就是用你的AppID去你的蘋果開(kāi)發(fā)者中心,點(diǎn)擊進(jìn)Certificates, Identifiers & Profiles頁(yè)面。配置你的identifier,并應(yīng)用到xcode中。
在你的開(kāi)發(fā)者中心激活“Associated Domains”
在你的Xcode Project中打開(kāi)該功能
確保你的team和identifier是正確的,在Capabilities的tab中打開(kāi)"Associated Domains"
如果你在這里看到了一些錯(cuò)誤:
- 確保team填寫正確
-
確保你Xcode Project中的identifier和你app account里填寫的identifier是一致的
s02_ass_domains.png
添加domain權(quán)限
在Xcode的domain區(qū)域,添加正確的domain tag。你必須以applinks:開(kāi)頭,eg."applinks:yourdomain.com"
確保權(quán)限文件在build的時(shí)候已經(jīng)被包含在project中了
處于某些原因,Xcode7在build的時(shí)候不能自動(dòng)包含你的權(quán)限文件,需要你手動(dòng)去添加。確保你的entitlements file被包含在正確的target中。
如果你使用的是Branch links,到這里就可以了。如果不是請(qǐng)繼續(xù)閱讀。建議使用Branch links
Section2:
Universal link把你的website URL轉(zhuǎn)向一個(gè)app link,為了促使web完成轉(zhuǎn)換,你需要使用一個(gè)web server。我們可以使用Universal links Validator來(lái)檢測(cè)是否** apple-app-site-association file**被正確的配置了。
選擇一個(gè)domain
關(guān)聯(lián)一個(gè)domain。你可以注冊(cè)一個(gè)新的或者使用已經(jīng)存在的。如果注冊(cè)新的盡量使用簡(jiǎn)潔的表達(dá)eg:ghandi.net
需要一個(gè)SSL certification
1.訪問(wèn)該網(wǎng)站,填表,生成一個(gè) openSSL command。保持窗口打開(kāi)
2.登錄你的遠(yuǎn)程服務(wù)
3.執(zhí)行openSSL命令,生成一個(gè)證書簽名請(qǐng)求(.csr)和一個(gè)證書文件(.cert)
4.為你的證書付錢
5.待批準(zhǔn)并下發(fā)給你一個(gè)最終文件
6.最后把yourdomain.com.cert, yourdomain.com.key,digicertintermediate.cert放到你遠(yuǎn)程服務(wù)的一個(gè)目錄下
創(chuàng)建apple-app-site-association JSON
這里有一個(gè)標(biāo)準(zhǔn)的JSON文件結(jié)構(gòu),你只要拷貝下來(lái)修改一下
{
"applinks": {
"apps": [ ],
"details": [{
"appID": "T5TQ36Q2SQ.com.branch.sdk.TestBed",
"paths": ["*"]
}
]
}
為一要改變的地方就是T5TQ36Q2SQ.com.branch.sdk.TestBed,其實(shí)它是由兩部分組成,這兩部分你都可以在你的Identifier里面找到
就是把Prefix和ID鏈接在一起像這樣:
T5TQ36Q2SQ.com.branch.sdk.TestBed
,保存這個(gè)文件為apple-app-site-association-unsigned
用SSL證書來(lái)給你的Json file簽名
把證書上傳到你的服務(wù)里面,目錄和之前的一樣。在命令行輸入一下命令
cat apple-app-site-association-unsigned | openssl smime -sign -inkey yourdomain.com.key -signer yourdomain.com.cert -certfile digicertintermediate.cert -noattr -nodetach -outform DER > apple-app-site-association
生成文件apple-app-site-association
配置你的文件服務(wù)
你已經(jīng)問(wèn)為你的 apple-app-site-association 文件簽名。現(xiàn)在你要做的就是配置你的文件服務(wù),來(lái)持有它們。之類有幾個(gè)建議:
1.發(fā)送時(shí)的頭必須是application/pkcs7-mime
2.必須要重endpoint youdomain.com/apple-app-site-association里面?zhèn)鬏?br>
3.必須返回一個(gè)200的httpcode