iOS将文件在自己App中打开

1、首先在自己App的info.plist中注册可用类型

    <key>CFBundleDocumentTypeskey>
    
        
            <key>CFBundleTypeNamekey>
            <string>com.myapp.common-datastring>
            <key>LSItemContentTypeskey>
            
                <string>com.microsoft.powerpoint.pptstring>
                <string>public.itemstring>
                <string>com.microsoft.word.docstring>
                <string>com.adobe.pdfstring>
                <string>com.microsoft.excel.xlsstring>
                <string>public.imagestring>
                <string>public.contentstring>
                <string>public.composite-contentstring>
                <string>public.archivestring>
                <string>public.audiostring>
                <string>public.moviestring>
                <string>public.textstring>
                <string>public.datastring>
            
        
    
.pptx:          org.openxmlformats.presentationml.presentation
.docx:          org.openxmlformats.wordprocessingml.document
.xlsx:          org.openxmlformats.spreadsheetml.sheet

添加完后,保存,运行程序,在QQ中选择一个文件,选择用其他应用打开,就会发现我们的appiOS将文件在自己App中打开_第1张图片

点击之后,会调转到自己的应用,并调用以下方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation;

通过返回的URL可知,分享过来的文件保存在了Document/Inbox文件夹下

之后就可以预览我们分享过来的文件了。

获取所有文件

    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Inbox"];

    NSFileManager *fileManager=[NSFileManager defaultManager];

    self.sourceArr = [fileManager subpathsAtPath:path];

点击进行预览

    NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Inbox"] stringByAppendingPathComponent:self.sourceArr[indexPath.row]];

    NSURL *url = [NSURL fileURLWithPath:path];

    QLPreviewController *vc = [QLPreviewController new];
    self.filePath = url;
    vc.delegate = self;
    vc.dataSource = self;
    [self presentViewController:vc animated:YES completion:nil];
-(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{

    return 1;

}

-(id)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{

    return self.filePath;

}

你可能感兴趣的:(iOS)