iOS9 新功能:Support Universal Links,iOS10 openUrl新函數


先看官方文檔:https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html

簡單解釋一下

我們都知道ios應用能夠注冊自己的URL Schemes,之后通過點擊鏈接訪問應用,比如 TheTest://testUrl. 而如果是普通的http或者https鏈接,那么就會用safari打開。

如果我有一個資源,比如是一個pdf文件,在游覽器中可以訪問,地址是 http://test.com/aaa.pdf 。如果ios設備安裝了我的app,那么在app中也能查看這個pdf。客戶想要這樣一個功能:點擊了一個鏈接,如果安裝了app,那么在app中打開,如果沒裝,那么在safari打開。

在ios9以前,用一個鏈接打開也有方法,但要多次跳轉,十分不友好,基本不會使用。最常用的方法是建立2個url,一個是http://test.com/aaa.pdf這樣的,一個是TheTest://aaa.pdf這樣的,用戶自己選擇打開哪一個,也不太友好。

ios9 的 Support Universal Links 就能解決這個問題。

我們只需要在郵件中寫一個標准的http鏈接,就是http://test.com/aaa.pdf這樣的,點擊之后,系統會判斷是否有程序注冊了這個鏈接,如果注冊了,不會打開safari,而會打開這個程序。沒有注冊的話,還是通過safari打開。

具體實現如下:

1.配置ios工程:

這2個鏈接,就表示程序會到這2個domain取具體的配置文件。為什么要到服務器取?這樣就能增加一層驗證,防止惡意程序代替正常的網站鏈接啟動。

The file needs to be accessible via HTTPS—without any redirects—at https://<domain>/apple-app-site-association or https://<domain>/.well-known/apple-app-site-association.

注意,必須是https的鏈接,而且不能有任何重定向操作。那么是不是必須使用經過CA認證的https呢?也就是說,能不能自己在內網上建立一個https服務器,讓universal links工作呢?

這個問題,我到官方論壇提問了,鏈接如下 https://forums.developer.apple.com/thread/51619 ,必須使用CA認證的證書!如果實在內網測試,應該自己模擬CA頒發證書,並讓系統信任自己創建的ca,那么問題又來了,如何讓ios系統信任這個ca呢????是可以通過企業設備管理,把相關證書加入ios系統嗎?

取的數據沒什么特別,就是一個json數據,但是它的獲取位置是固定的,要么是/apple-app-site-association,要么是

/.well-known/apple-app-site-association

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "Q4BE9Z32J8.com.kings.test",
                "paths": [ "*" ]
            }
        ]
    }
}

具體的說明可以參看官方文檔。

成功后,在郵件中點擊普通的http://test.com/aaa.pdf鏈接,就會出現下圖:直接進入了程序,注意右上角,點擊后可以用游覽器啟動

而如果用游覽器啟動,有下圖,看上方,還能用程序啟動。系統會記錄下你最后一次的選擇,下次點擊http鏈接時,會重復你的上次的選擇。

 

另外,針對這個Universal link 功能,ios10加入了openURL:options:completionHandler:這個新api,其中options的參數有一個UIApplicationOpenURLOptionUniversalLinksOnly選項,默認是false,如果設置為true,當打開一個http這樣的連接時,如果沒有安裝注冊這個url的ios應用,函數就會返回錯誤,不會用safari代替打開。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM