URL Scheme的配置和使用都十分簡單。本篇不再贅述趣些。
一、獲取其他應(yīng)用URL Scheme
獲取其他App的URL Scheme 往往用于檢測安裝和吊起圆到,獲取也很容易,有安裝包的話顯示包內(nèi)容(沒有通過這個獲取卑吭,也可以拿到系統(tǒng)應(yīng)用的Scheme)芽淡,搜索Info.plist 文件,很可能會找到很多個文件豆赏。逐個打開挣菲,找有URL type 的那個,展開后URL Schemes中的任何一個都可以用于判斷是否安裝了該app河绽。如圖:
這里有個幾個小技巧:
1.大廠的app一般都比較復(fù)雜己单,在配置這些功能的時候都會加到這個文件中唉窃,所以只用找比較大/長的該同名文件即可耙饰。
2.實在找不到,可以直接試試這些app的名稱的全小寫字母纹份,比如Facebook就試試facebook苟跪,中文的就試試拼音的小寫全拼,比如微信就試試wexin蔓涧。大廠的app往往都會有一個這樣的scheme件已。
3.有很多URL Scheme的時候要選那些看起來不會變的(結(jié)合第二點)。如圖:
第二個紅框中的更符合不會變的特點元暴。
二篷扩、canOpenURL使用誤區(qū):白名單最多50個(LSApplicationQueriesSchemes中添加50個)
筆者在搜索資料的時候發(fā)現(xiàn)很多帖子都有LSApplicationQueriesSchemes最多只能添加50個的說法。查詢文檔后確認(rèn)是錯誤的茉盏,并沒有這樣的限制鉴未。
看文檔上的精確描述(文檔地址):
紅框中文字的意思是,如果App是用iOS9.0之前構(gòu)建的版本(原文是連接)鸠姨,但是運行在9.0及之后的版本中铜秆,調(diào)用方法canOpenURL只能在前50次
獲取到正確的值。超出次數(shù)則都會返回NO讶迁,直到重新安裝或者更新本應(yīng)用才會重置次數(shù)连茧。
說以說只要是9.0之后構(gòu)建的應(yīng)用調(diào)用canOpenURL
并沒有任何次數(shù)限制,白名單也沒有個數(shù)限制巍糯。
三啸驯、URL Scheme 的其他作用:數(shù)據(jù)分析
由于白名單沒有個數(shù)限制,一些定向檢測和統(tǒng)計用戶安裝的App便可以進(jìn)行用戶畫像和數(shù)據(jù)分析祟峦。
比如罚斗,檢測到如果只有女性才會用的App就可以精準(zhǔn)分析性別。再比如一組App都裝了的話就可以精準(zhǔn)分析用戶年齡搀愧、消費習(xí)慣等惰聂。結(jié)合這些可以在自己的App中給用戶精準(zhǔn)投放廣告疆偿、限制用戶行為等。
很明顯搓幌,這也算侵犯了用戶隱私杆故。而且對于用戶來說這樣的檢測也不會有任何權(quán)限提示,應(yīng)該算是“合法”漏洞了溉愁。(也看到有資料說如果添加的過多 app store 審核時候可能會覺得你濫用了這個機制处铛,從而不讓你的 APP 審核通過,有待核實)
四拐揭、調(diào)用報錯
調(diào)用canOpenURL
時控制臺打印"OSStatus error -10814"撤蟆, 這往往是因為打開的scheme寫的不對。
有時也有系統(tǒng)誤報的情況堂污,即如果確認(rèn)寫的沒有問題那么就忽視這個錯誤家肯。