iOS 9 通用連結(Universal Links)

來源:互聯網
上載者:User

標籤: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)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.