本文主要是介绍实现让你的应用在其他应用中文件的打开方式列表中显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
要实现在其他应用中文件的打开方式列表中显示需要以下两个步骤(测试的时候需要真机条件):
->首先要向iOS系统注册App能够打开的文件类型,这样其他应用程序在使用 Document Interaction 向系统询问有哪些程序可以打开文档
时,系统才会将你的应用显示在“打开方式”的列表中。
->完成注册步骤后我们需求的功能就已经完成一大半了,现在进行真机测试比如在邮件里的附件(必须是刚刚注册过的文件类型)使
用“打开方式”就可以看到我们的应用程序出现在了列表中。但这样仅仅是通过打开方式启动了我们的App,而我们的App并不能直接接
收到传过来的文档,我们都知道在 iOS 中每个应用都是装在一个独立的沙盒中的,应用中的文件并不能直接跨越沙盒传输,这时候使
用的便是 Document Interaction ,原理就是对文档生成一个URL路径,通过 UIDocumentInteractionController 返回一个URL路径,然
后在我们的App中截取URL,通过URL来获取我们需要的文档。
1、向iOS系统申明App能够打开某种类型的文档。
-> 情景一:直接使用系统提供的UTI (UTI与文件后缀对照
表:https://developer.apple.com/library/mac/#documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html)
在info.plist中添加以下字段
Icon File Name ( “打开方式”列表中应用显示的图标,可不设 )
Document Type Name ( 指定文档名称 )
Document Content Type UTIs ( 数组,包含多个 UTI 类型的字符串。UTI 类型是本文档类型(组)所包含的文件类型。 )
Handler rank ( 表示应用程序是“拥有”还是仅仅是“打开”这种类型而已 )
-> 情景二:使用程序提供的UTI
先在info.plist中添加以下字段
首先还是Document types:
CFBundleTypeIconFiles ( 数组,“打开方式”列表中应用显示的图标 )
Document Content Type UTIs ( 程序定义UTI也需在此声明,命名规则:App ID + .后缀名 )
Role ( 程序的职责,“观看”、“编辑”等 )
其它字段参考情景一
完成Document types 字段后需给自定义的UTI一个说明——即在plist中添加如下字段
Exported Type UTIs:
Conforms to UTIs ( 参考情景一中给出的参照表 )
Description ( 描述,可不填 )
Identifier ( 唯一标识,跟Document Content Type UTIs 中自定义的UTIs 保持一致 )
Equivalent Types ( 包含两个字段,public.filename-extension:和什么后缀的文件相关联,public-mime-type: mime 类型 )
2、截取其他App发过来的资源文件
在Xcode中我们的App,并在 AppDelegate 中加入如下代码
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
if (url != nil) {
NSString *path = [url absoluteString];
NSMutableString *string = [[NSMutableString alloc] initWithString:path];
if ([path hasPrefix:@"file://"]) {
[string replaceOccurrencesOfString:@"file://" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, path.length)];
}
}
return YES;
}
OK,这样就大功告成了,接下来我们就成功获取到了文档的URL了,接下来就根据自己的需求来操作文档吧~
(注:我们获取到的URL路径中如果包含中文的话有可能不能成功获取到文件,这时候需要一次对URL的转码方法是利用NSString 的 [string stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding])
这篇关于实现让你的应用在其他应用中文件的打开方式列表中显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!