iOS给应用添加支持的文件类型/根据文件类型打开应用
之前写过类似的文章 IOS UTI(统一类型标识符) 根据文件后缀打开APP 和 自定义UTI 注册你的APP所支持的文件类型 这里 再次总结说明。
已经存在的UTL类型
苹果官方文档提供了常见情况下,所支持的UTL类型 【链接】
如何添加已经存在的类型
在Xcode中选择TARGES----> Info 添加 Document types 中配置 一个item
说明:
DocumentTypeName:
文档的类型名称
HandlerRank:
指定文件能被app持有或者只能打开文件,默认为Default,
其中包含 Owner,Default,Alternate,None四个可选值,指定对于某种类型的优先权级别,而Launcher Service会根据这个优先级别来排列显示的App的顺序。优先级别从高到低依次是Owner,Alternate,Default。None表示不接受这种类型。
Document Content Type UTIs:
文件类型的UTI。这里填写你App的bundle identifier + 分享的文件的后缀.
CFBundleTypeIconFiles
在别的app上显示图片。
需要注意的是 Xcode 10 中关于此配置的如下
添加自定义的 UTL
Document Content Type UTIs:这里填写你App的bundle identifier + 分享的文件的后缀
public.filename-extension:这里填写你压缩包的扩展名。
在App中获取文件
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_9_0
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
NSLog(@"openURL : %@",url);
[self openFileWithopenURL:url];
return YES;
}
#else
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
NSLog(@"Get doc file url: %@",url);
[self openFileWithopenURL:url];
return YES;
}
#endif
-(void)openFileWithopenURL:(NSURL *)url
{
// 模型文件的地址
NSString *str = [[url absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *modeName = [[str componentsSeparatedByString:@"/"]lastObject];
NSString *docDir = [str stringByReplacingOccurrencesOfString:@"file://" withString:@""];
if (modeName.length >0)
{
NSLog(@"docDir 就是文件的路径");
}
}