在iOS9中,如果使用 canOpenURL: 方法,該方法所涉及到的 URL scheme 必須在"Info.plist"中將它們列為白名單(在iOS9及以前的版本設(shè)置的上限50個),否則不能使用。key叫做LSApplicationQueriesSchemes ,鍵值內(nèi)容如下:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>urlscheme</string>
<string>urlscheme2</string>
<string>urlscheme3</string>
<string>urlscheme4</string>
</array>
So for apps that are linked before iOS 9 and are running on iOS 9, they will be given 50 distinct URL schemes. When you call the subsequent 51st scheme, you will be returned the value no. These 50 URL schemes are not restarted when the user restarts the device.
蘋果為什么要這么做?
在 iOS9 之前,你可以使用 canOpenURL: 監(jiān)測用戶手機里到底裝沒裝微信,裝沒裝微博。但是也有一些別有用心的 App ,這些 App 有一張常用 App 的 URL scheme,然后他們會多次調(diào)用canOpenURL: 遍歷該表,來監(jiān)測用戶手機都裝了什么 App ,比如這個用戶裝了叫“大姨媽”的App,你就可以知道這個用戶是女性,你就可以只推給這個用戶女性用品的廣告。這是侵犯用戶隱私的行為。
這也許就是原因。
常見 URL Scheme
如果想一次性集成最常用的微信、新浪微博、QQ、支付寶四者的白名單,則配置如下:
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 微信 URL Scheme 白名單-->
<string>wechat</string>
<string>weixin</string>
<!-- 新浪微博 URL Scheme 白名單-->
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<!-- QQ、Qzone URL Scheme 白名單-->
<string>mqqapi</string>
<string>mqq</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqconnect</string>
<string>mqqopensdkdataline</string>
<string>mqqopensdkgrouptribeshare</string>
<string>mqqopensdkfriend</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>mqzoneopensdk</string>
<string>wtloginmqq</string>
<string>wtloginmqq2</string>
<string>mqqwpa</string>
<string>mqzone</string>
<string>mqzonev2</string>
<string>mqzoneshare</string>
<string>wtloginqzone</string>
<string>mqzonewx</string>
<string>mqzoneopensdkapiV2</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapi</string>
<string>mqzoneopensdk</string>
<!-- 支付寶 URL Scheme 白名單-->
<string>alipay</string>
<string>alipayshare</string>
</array>
其他平臺可在下面的列表中查詢: 各平臺OpenURL白名單說明
查詢:https://github.com/ChenYilong/iOS9AdaptationTips (摘自此文)