URL Scheme的配置和使用都十分簡單。本篇不再贅述。
一、獲取其他應用URL Scheme
獲取其他App的URL Scheme 往往用于檢測安裝和吊起,獲取也很容易,有安裝包的話顯示包內容(沒有通過這個獲取,也可以拿到系統(tǒng)應用的Scheme),搜索Info.plist 文件,很可能會找到很多個文件。逐個打開,找有URL type 的那個,展開后URL Schemes中的任何一個都可以用于判斷是否安裝了該app。如圖:

這里有個幾個小技巧:
1.大廠的app一般都比較復雜,在配置這些功能的時候都會加到這個文件中,所以只用找比較大/長的該同名文件即可。
2.實在找不到,可以直接試試這些app的名稱的全小寫字母,比如Facebook就試試facebook,中文的就試試拼音的小寫全拼,比如微信就試試wexin。大廠的app往往都會有一個這樣的scheme。
3.有很多URL Scheme的時候要選那些看起來不會變的(結合第二點)。如圖:

第二個紅框中的更符合不會變的特點。
二、canOpenURL使用誤區(qū):白名單最多50個(LSApplicationQueriesSchemes中添加50個)
筆者在搜索資料的時候發(fā)現(xiàn)很多帖子都有LSApplicationQueriesSchemes最多只能添加50個的說法。查詢文檔后確認是錯誤的,并沒有這樣的限制。
看文檔上的精確描述(文檔地址):

紅框中文字的意思是,如果App是用iOS9.0之前構建的版本(原文是連接),但是運行在9.0及之后的版本中,調用方法canOpenURL只能在前50次獲取到正確的值。超出次數(shù)則都會返回NO,直到重新安裝或者更新本應用才會重置次數(shù)。
說以說只要是9.0之后構建的應用調用canOpenURL并沒有任何次數(shù)限制,白名單也沒有個數(shù)限制。
三、URL Scheme 的其他作用:數(shù)據(jù)分析
由于白名單沒有個數(shù)限制,一些定向檢測和統(tǒng)計用戶安裝的App便可以進行用戶畫像和數(shù)據(jù)分析。
比如,檢測到如果只有女性才會用的App就可以精準分析性別。再比如一組App都裝了的話就可以精準分析用戶年齡、消費習慣等。結合這些可以在自己的App中給用戶精準投放廣告、限制用戶行為等。
很明顯,這也算侵犯了用戶隱私。而且對于用戶來說這樣的檢測也不會有任何權限提示,應該算是“合法”漏洞了。(也看到有資料說如果添加的過多 app store 審核時候可能會覺得你濫用了這個機制,從而不讓你的 APP 審核通過,有待核實)
四、調用報錯
調用canOpenURL時控制臺打印"OSStatus error -10814", 這往往是因為打開的scheme寫的不對。
有時也有系統(tǒng)誤報的情況,即如果確認寫的沒有問題那么就忽視這個錯誤。