iOS9 - GaoZhenWei/SwiftLearning GitHub Wiki

1.iOS9中URL Scheme的whilelist白名单

iOS中可以通过canOpenURL:方法来判断用户手机是否安装了某个app:

  • 如果已安装指定的URL Scheme对应的app,则会返回true
  • 如果未安装指定的URL Scheme对应的app,则会返回false 但是,在iOS9中对这个处理进行了改动,iOS9对URL Scheme的使用上增加了一个whitelist,要求对在canOpenURL:方法中使用的URL Scheme添加到工程的Info.plist中,否则就算已经安装了此app,也会返回false,白名单最多允许添加50个URL Scheme。具体添加白名单的方式如下: 在Info.plist文件中,增加一个key为LSApplicationQueriesSchemes,类型为Array,然后增加多个URL Scheme即可:
<key>LSApplicationQueriesSchemes</key>
<array>
 <string>urlscheme</string>
 <string>urlscheme2</string>
 <string>urlscheme3</string>
 <string>urlscheme4</string>
</array>

另外,iOS9没有对openURL:方法中使用到的URL Scheme要求,也就是你可以直接打开某个URL Scheme对应的app,而不必将其加入到白名单中。iOS9对openURL:方法唯一的改变是多了一个跳转提示,弹出一个提示框,让用户选择是否打开:

2. iOS9的 App Transport Security(ATS)

2.1 info.plist中对ATS的设置

2.2 ATS for all, with some exceptions

2.3 ATS disabled, with some exceptions

2.4 ATS entirely disabled

⚠️ **GitHub.com Fallback** ⚠️