古詩詞大全網 - 藝術簽名 - iOS 9 通用鏈接(Universal Links)

iOS 9 通用鏈接(Universal Links)

當您支持通用鏈接時,iOS用戶可以點擊鏈接到您的網站,並無縫地重定向到已安裝的應用程序,而無需通過Safari。如果您的應用未安裝,請點擊您的網站的鏈接在Safari中打開您的網站。

通用鏈接為您提供了使用自定義URL方案時無法獲得的幾個主要優點。具體來說,通用鏈接是:

獨特。 與自定義網址方案不同,其他應用不能聲明通用鏈接,因為它們使用標準的HTTP或HTTPS鏈接到您的網站。

安全。 當用戶安裝您的應用程序時,iOS會檢查您已上傳到Web服務器的文件,以確保您的網站允許您的應用程序代表其打開URL。只有您可以創建和上傳此文件,因此您的網站與您的應用程序的關聯是安全的。

靈活。 即使您的應用程序未安裝,Universal links也可以正常工作。當您的應用程序未安裝時,點擊鏈接到您的網站會按照用戶期望在Safari中打開內容。

簡單。 壹個URL適用於您的網站和您的應用程序。

私人的。 其他應用程序可以與您的應用程序通信,而無需知道您的應用程序是否已安裝。

註意

通用鏈接可讓用戶在點擊鏈接到您的網站 WKWebView , UIWebView 瀏覽和Safari頁面之前打開您的應用程序,以及導致呼叫的鏈接 openURL: ,例如郵件,郵件和其他應用程序中發生的鏈接。

當用戶在Safari中瀏覽您的網站,並點擊與當前網頁位於同壹個域中的URL的通用鏈接時,iOS會尊重用戶最有可能的意圖,並在Safari中打開鏈接。如果用戶點擊不同域中的URL的通用鏈接,則iOS會在您的應用中打開鏈接。

對於運行9.0之前的iOS版本的用戶,點擊通用鏈接到您的網站將在Safari中打開鏈接。

添加對通用鏈接的支持很容易。您需要采取以下三個步驟:

創建壹個apple-app-site-association包含您的應用程序可以處理的URL的JSON數據的文件。

將apple-app-site-association文件上傳到您的HTTPS Web服務器。您可以將文件放在服務器的根目錄或.well-known子目錄中。

準備您的應用程序來處理通用鏈接。

您可以測試設備上的通用鏈接。

創建和上傳關聯文件

要在您的網站和您的應用程序之間建立安全的連接,您將建立它們之間的信任關系。妳建立這種關系的兩個部分:

apple-app-site-association您添加到您的網站的文件

壹個com.apple.developer.associated-domains您添加到您的應用程序的權利(這部分中描述的 準備您的應用程序以處理通用鏈接 )

您可以了解有關應用程序和網站如何在“ ***享Web憑據參考” 中 ***享憑據的更多信息 。

註意

如果您的應用程序在iOS 9或更高版本中運行,並且使用HTTPS來投放該apple-app-site-association文件,則可以創建使用application/jsonMIME類型的純文本文件,而不需要對其進行簽名。如果您在iOS 8中支持切換和***享網絡憑據,則仍需要按照“ ***享Web憑據參考”中 所述對文件進行簽名。

您需要為apple-app-site-association您的應用程序支持的獨特內容為每個域提供單獨的文件。例如,apple.com並且developer.apple.com需要單獨的apple-app-site-association文件,因為這些域提供不同的內容。相比之下,apple.com並且www.apple.com不需要單獨的站點關聯文件 - 因為兩個域都提供相同的內容 - 但是這兩個域都必須使該文件可用。對於在iOS 9.3.1及更高版本中運行的應用程序,apple-app-site-association文件的未壓縮大小必須不大於128 KB,無論文件是否已簽名。

在您的apple-app-site-association文件中,您將指定您的網站中應該作為通用鏈接處理的路徑以及不應被視為通用鏈接的路徑。保持路徑列表相當短,並且依靠通配符匹配來匹配更大的路徑集。清單6-1顯示了壹個apple-app-site-association文件的示例,該文件標識了應作為通用鏈接處理的三個路徑。

清單6-1 創建apple-app-site-association文件

{

"applinks": {

"apps": [],

"details": [

{

"appID": "9JA89QQLNQ.com.apple.wwdc",

"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]

},

{

"appID": "ABCD1234.com.apple.wwdc",

"paths": [ "*" ]

}

]

}

}

註意

不附加.json到apple-app-site-association文件名。

文件中的apps鍵apple-app-site-association必須存在,其值必須為空數組,如清單6-1所示。details密鑰的值是壹系列字典,您的網站支持的每個應用程序有壹個字典。數組中字典的順序決定了系統在查找匹配時遵循的順序,因此您可以指定壹個應用程序來處理網站的特定部分。

每個特定於應用程序的字典包含壹個appID鍵和壹個paths鍵。appID密鑰的值是團隊ID或應用ID前綴,後跟bundle ID。(該appID值與構建應用程序的權利中的“應用程序標識符”鍵相關聯的值。)paths鍵的值是指定應用程序支持的網站部分的字符串數組以及您不想與應用程序關聯的網站部分。要指定不應作為通用鏈接處理的區域,請在路徑字符串的開頭添加“NOT”(包括壹個空格T)。例如,清單6-1apple-app-site-association所示的文件可能會阻止/videos/wwdc/2010/*通過更新paths數組來將網站的區域作為通用鏈接處理,如下所示:

"paths": [ "/wwdc/news/", "NOT /videos/wwdc/2010/*", "/videos/wwdc/201?/*"]

因為系統paths按照指定的順序對陣列中的每個路徑進行評估,並且在發現正或負匹配時停止評估 - 應在低優先級路徑之前指定高優先級路徑。請註意,只有URL的路徑組件用於比較。其他組件(如查詢字符串或片段標識符)將被忽略。

有多種方式可以在apple-app-site-association文件中指定網站路徑。例如,您可以:

使用*指定整個網站

包括壹個特定的URL,如/wwdc/news/指定壹個特定的鏈接

附加*到特定的URL,例如/videos/wwdc/2015/*,指定您的網站的壹部分

除了使用*匹配任何子字符串,您還可以使用?匹配任何單個字符。您可以在單個路徑中組合兩個通配符,例如/foo/*/bar/201?/mypage。

註意

用於指定paths陣列中的網站路徑的字符串區分大小寫。

創建apple-app-site-association文件後,將其上傳到HTTPS Web服務器的根目錄或.well-known子目錄。該文件需要訪問通過HTTPS,沒有任何重定向,在.apple.developer.associated-domains權利中,將應用程序要處理的域列表列為通用鏈接。要在Xcode中執行此操作,請打開“功能”選項卡中的“關聯域”部分,並為您的應用程序支持的每個域添加壹個條目,前綴applinks:如applinks:www.mywebsite.com。將此列表限制為不超過約20到30個域。

要匹配關聯域的所有子域,您可以*.在特定域的開頭之前通過前綴指定通配符(需要該時間段)。域匹配基於applinks條目中最長的子字符串。例如,如果您指定條目,applinks:*.mywebsite.com並且針對較長條目執行applinks:*.users.mywebsite.com域匹配。請註意,由於星號後的期間,條目不匹配。為了使兩個匹配和,您需要提供壹個單獨的每個條目。emily.users.mywebsite.com*.users.mywebsite.com*.mywebsite.commywebsite.com*.mywebsite.commywebsite.comapplinks

指定關聯的域後,請采用 UIApplicationDelegate Handoff(特別是 application:continueUserActivity:restorationHandler: )方法,以便您的應用程序可以接收鏈接並妥善處理。

當用戶點擊通用鏈接後,iOS啟動您的應用程序時,您會收到 NSUserActivity 壹個 activityType 值為的對象 NSUserActivityTypeBrowsingWeb 。activity對象的 webpageURL 屬性包含用戶正在訪問的URL。網頁網址屬性始終包含HTTP或HTTPS網址,您可以使用 NSURLComponents API來操縱網址的組件。

當用戶點擊您處理的通用鏈接時,iOS還會檢查用戶最近的選擇,以確定是否打開您的應用或您的網站。例如,壹個利用通用鏈接打開應用程序的用戶可以稍後在狀態欄中點擊導航痕跡按鈕,選擇在Safari中打開您的網站。用戶進行此選擇後,iOS會繼續在Safari中打開您的網站,直到用戶選擇通過在網頁上的智能應用橫幅中點擊OPEN打開您的應用程序。

註意

如果您實例化 SFSafariViewController , WKWebView 或 UIWebView 對象來處理通用鏈接,則iOS會在Safari中打開您的網站,而不是打開您的應用程序。但是,如果用戶點擊由嵌入在壹個通用的鏈接SFSafariViewController,WKWebView或UIWebView對象,iOS版開啟應用程式。

重要的是要明白,如果您的應用程序用於 openURL: 打開通用鏈接到您的網站,該鏈接不會在您的應用程序中打開。在這種情況下,iOS會識別該呼叫源自您的應用程序,因此您的應用程序不應被視為通用鏈接。

如果您在活動對象中收到無效的網址,那麽重要的是正常失敗。要處理不受支持的URL,您可以調用 openURL: ***享應用程序對象以在Safari中打開鏈接。如果您無法撥打此電話,則會向用戶顯示壹條錯誤消息,以說明發生了什麽。

重要

為了保護用戶的隱私和安全,您不必在需要傳輸數據時使用HTTP;而是使用HTTPS等安全傳輸協議。