標籤:null 網域名稱 屏蔽 apple lib ice 裝置 bsp you
什麼是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就可以了。
配置App ID支援Associated Domains:
3.開啟工程配置中的Associated Domains,在其中的Domains中填入你想支援的網域名稱,必須以applinks:為首碼。設定項目中的Associated Domains: 4.建立一個內容為json格式的檔案,蘋果將會在合適的時候,從我們在項目中填入的網域名稱請求這個檔案。這個檔案名稱必須為apple-app-site-association,沒有尾碼名,檔案內容大概是這樣子:
{ "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 裡實現方法
- (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;}
注意
前端開發經常面臨跨域問題,必須要求跨域,如果不跨域,就不行。
只有當前webview的url網域名稱,與跳轉目標url網域名稱不一致時,Universal Link 才生效。
好了先說到這裡,如果遇到什麼問題可以詳細看官方的說明文檔。
轉自(https://www.jianshu.com/p/734c3eff8fe)
iOS 9 通用連結(Universal Links)