Cocoa学习

我的Cocoa/Cocoa Touch学习笔记

iOS 9下使用openURL:

iOS 9在各方面增强了安全性,最明显的变化,除了ATS之外,那就是openURL的变化了。在iOS 9之前,应用可以使用UIApplicationopenURL:方法,打开任意自定义Scheme的链接时(比如twitter://, fb://等)--只要iOS支持。从iOS 9开始,相信很多人都见过这样的对话框:

所有使用iOS 9以前的SDK作为Base SDK编译的应用,在使用openURL:打开其他应用时默认就会弹出这样的确认对话框,以防止未经用户授权的随意的应用转跳。而用iOS 9 SDK作为Base SDK编译的应用,调用openURL:就会出错。在Xcode的Console会出现类似如下的错误消息:

1
This app is not allowed to query for scheme xxx

要让你的App能打开某个自定义Scheme的链接,你需要在Info.plist中声明你的应用需要让openURL:支持的Scheme类型,如下:

1
2
3
4
5
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>twitter</string>
  <string>fb</string>
</array>

这样,你就可以调用openURL:来打开自定义Scheme的链接了。

参考:

  1. Apple Dev Forum
  2. Use Your Loaf
  3. Awkward Hare

(全文完)

Comments