什麼是Universal Links?
在iOS9之前,對於從各種從瀏覽器、Safari中喚醒APP的需求,我們通常只能使用scheme。但是這種方式需要提前判斷系統中是否安裝了能夠響應此scheme的app,並且這種方式在微信中是被禁用了的。
Universal Links是iOS9推出的一項功能,使你的應用可以通過傳統的HTTP連結來啟動APP(如果iOS裝置上已經安裝了你的app,不管在微信裡還是在哪裡), 或者開啟網頁(iOS裝置上沒有安裝你的app)。
下面簡單說下怎麼使用Universal Links,具體的可以看官方的說明文件
怎麼使用Universal Links
1.先決條件:你必須有一個域名,且這個域名需要支援https。
2.需要在開發者中心做配置:找到對應的App ID,在Application Services列表裡有Associated Domains一條,把它變為Enabled就可以了。
3.開啟工程配置中的Associated Domains,在其中的Domains中填入你想支援的域名,必須以applinks:為字首。
4.建立一個json格式的檔案,蘋果將會在合適的時候,從我們在專案中填入的域名請求這個檔案。這個檔名必須為apple-app-site-association,沒有字尾名:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "applinks": { "apps": [], "details": [ { "appID": "9JA89QQLNQ.com.apple.wwdc", "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"] }, { "appID": "ABCD1234.com.apple.wwdc", "paths": [ "*" ] } ] } } |
說明:
appID:組成方式是 teamId.yourapp’s bundle identifier。如上面的 9JA89QQLNQ就是teamId。登陸開發者中心,在Account – Membership裡面可以找到Team ID。
paths:設定你的app支援的路徑列表,只有這些指定的路徑的連結,才能被app所處理。星號的寫法代表了可識別域名下所有連結。
這篇部落格裡有很多其他公司的例子,可以參考一下。
5.上傳該檔案到你的域名所對應的根目錄或者.well-known
目錄下,這是為了蘋果能獲取到你上傳的檔案。上傳完後,自己先訪問一下,看看是否能夠獲取到,當你在瀏覽器中輸入這個檔案連結後,應該是直接下載apple-app-site-association檔案。
驗證
在iOS裝置中的備忘錄中輸入App能識別的連結,然後直接點選此連結,就會直接跳轉到你的app了。或是長按,在出現的彈出選單中第二項是在’XXX’中開啟
,這也代表著成功:
或是你將要測試的網址在safari中開啟,在出現的網頁上方下滑,可以看到有在”XX”應用中開啟
:
在微信的網頁瀏覽器中也是可以的,雖然微信遮蔽了所有的scheme方式跳轉到其它app,但是Universal Links是由系統直接處理的,微信遮蔽不了,這也就實現了從微信跳轉到我們的app。
蘋果為了方便開發者,提供了一個網頁來驗證我們編寫的這個apple-app-site-association是否合法有效,進入驗證網址進行驗證:
進入app後的處理
現在使用者點選某個連結,直接可以進我們的app了,但是我們的目的是要能夠獲取到使用者進來的連結,根據連結來展示給使用者相應的內容。
我們需要在工程裡的 AppDelegate 裡實現方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler { if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) { NSURL *url = userActivity.webpageURL; if (url是我們希望處理的) { //進行我們的處理 } else { [[UIApplication sharedApplication] openURL:url]; } } return YES; } |
好了先說到這裡,如果遇到什麼問題可以詳細看官方的說明文件。