在iPhone 或者 iPad的Safari如果遇到文档的链接,例如PDF,Doc之类的Safari会自动打开,而且会出现备选的Open in选项,可以选择已经安装的不同Apps来打开这个文档。
如下图显示(PDF文件):
之后选择Open in,会出现各种支持打开PDF文件的Apps:
之后选择任何一个App打开这篇文档,文档就会在存储在那个App下并且打开了。
如果想实现这个功能, 需要在App程序中的Info.plist中配置.
1.配置Document types
-
Document Type Name(CFBundleTypeName): 定义Document type的名字.
-
CFBundleTypeIconFiles: 是一个Array, 用来定义如截图中显示的小图(在iPhone上尺寸22的是普清, 44是高清). 注意: 这个Key必须填写(我因为没加这个调了好久呢!)
-
Document Content Type UTIs (LSItemContentTypes): 定义支持的类型,上面是我的程序支持的类型,可以通过这个链接查询其他的文档类型UTI Types.
-
Handler rank(LSHandlerRank): describes whether this application owns the document type or is merely able to open it. (这个是官方文档的描述,我目前只是设置过Owner, 其他的选项没有用过)
-
Role (CFBundleTypeRole): 对这个文档的使用权限, 我设置的是Editor,当然还可以设置Viewer或者其他的.
2.在程序App Delegate中处理打开的文档.
-
在Safari选择Open in中的App后,系统会进入App,然后调用这个回调函数:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
url为这个文档的路径, 你可以直接打开这个文档, 也可以把它存到你的App中再打开.
3.配置系统不支持的文档类型
-
有一些文档的格式类型iOS是不支持的,需要自己配置Exported Type UTIs,比如ePub格式(上图是ePub的配置过程, 其他的格式类型配置应该也类似).
-
注意: 这个配置之后, 一定要在Documents types添加这个类型, 我上面的截图已经添加.
附: 如果App需要在Safari输入一些Custom的链接来打开自己的App, 可以配置URL types
-
主要就是配置URL identifier和URL Schemes这两个Key
-
URL identifier: 就是App的identifier
-
URL Schemes: 就是打开到你App所需要的链接(例如我配置的是docinbookreader,那么链接就可以是docinbookreader:// 或者docinbookreader://some/path...)
-
还是回调- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 来处理你的URL链接.
-
如果配置了这个,还可以判断手机中是否安装了这个软件,使用这个方法:
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"docinbookreader://"]]