1、首先在自己App的info.plist中注册可用类型
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>com.myapp.common-data</string>
<key>LSItemContentTypes</key>
<array>
<string>com.microsoft.powerpoint.ppt</string>
<string>public.item</string>
<string>com.microsoft.word.doc</string>
<string>com.adobe.pdf</string>
<string>com.microsoft.excel.xls</string>
<string>public.image</string>
<string>public.content</string>
<string>public.composite-content</string>
<string>public.archive</string>
<string>public.audio</string>
<string>public.movie</string>
<string>public.text</string>
<string>public.data</string>
</array>
</dict>
</array>
.pptx: org.openxmlformats.presentationml.presentation
.docx: org.openxmlformats.wordprocessingml.document
.xlsx: org.openxmlformats.spreadsheetml.sheet
添加完后,保存,运行程序,在QQ中选择一个文件,选择用其他应用打开,就会发现我们的app
点击之后,会调转到自己的应用,并调用以下方法
- (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<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{
return self.filePath;
}