iOS 为app添加自己支持的文件类型

在微信或者QQ中收到ppt,doc等文件时,可以选择使用其他应用打开,如何让自己的app出现在列表中呢?

一、存在的UTL类型

UTL可以到苹果的文档来查询 - 传送门

二、 添加一个已存在的类型

以打开图片为例:
按照下面的配置来配置在Document types中添加一个item


iOS 为app添加自己支持的文件类型_第1张图片

属性说明:
DocumentTypeName:文档的类型名称

HandlerRank:指定文件能被app持有或者只能打开文件,默认为Default,其中包含 Owner,Default,Alternate,None四个可选值,指定对于某种类型的优先权级别,而Launcher Service会根据这个优先级别来排列显示的App的顺序。优先级别从高到低依次是Owner,Alternate,Default。None表示不接受这种类型。

Document Content Type UTIs:文件类型的UTI.

CFBundleTypeIconFiles 在别的app上显示图片

三、自定义UTL

iOS 为app添加自己支持的文件类型_第2张图片

属性说明:

DocumentTypeName:文档的类型名称,这里我将分享的文件压缩打包成*.stl格式

HandlerRank:这里指是否拥有子文档,这里我设置为default

Document Content Type UTIs:这里填写你App的bundle identifier + 分享的文件的后缀
CFBuandleTypeIconFiles: 填写显示在列表 中的图片


iOS 为app添加自己支持的文件类型_第3张图片

public.filename-extension:这里填写你压缩包的扩展名。

四、在自己App中获取文件

如下代码:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"url = %@",url);
    if (url != nil) {
        NSString *path = [url absoluteString];
        path = [self URLDecodedString:path];
        NSMutableString *string = [[NSMutableString alloc] initWithString:path];
        if ([path hasPrefix:@"file://"]) {
            [string replaceOccurrencesOfString:@"file://" withString:@"" options:NSCaseInsensitiveSearch  range:NSMakeRange(0, path.length)];
        }

        //获取在存储在本地的文件路径就可以在自己需要显示的页面加载文件显示了
    }

    return YES;
}
//当文件名为中文是,解决url编码问题
-(NSString *)URLDecodedString:(NSString *)str
{
    NSString *decodedString=(__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)str, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
    NSLog(@"decodedString = %@",decodedString);
    return decodedString;
}

你可能感兴趣的:(iOS 为app添加自己支持的文件类型)