iOS 使用第三方APP打开文件

目标预览

例如自家App里的PDF文件,拷贝到"微信"做进一步处理。


iOS 使用第三方APP打开文件_第1张图片
IMG_F1F35F792053-1.jpeg

方案

Apple在iOS 3.2以后在UIKit framework里提供了一个类名为UIDocumentInteractionController的类。详见官方文档Document Interaction Programming Topics for iOS

@interface ViewController ()
@property (nonatomic, strong) UIDocumentInteractionController *documentVC;
@end
@implementation ViewController
- (void)showDocumentVC {
    self.documentVC = [UIDocumentInteractionController interactionControllerWithURL:fileUrl];
    self.documentVC.delegate = self;
    [self.documentVC presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
}
#pragma mark - UIDocumentInteractionControllerDelegate
//按需实现协议方法
@end

踩到的坑

背景:在bundle里有个PDF文件,使用上面的代码,在别的App中打开这个PDF文件,iOS 11之前都没有什么问题,很完美。升级到iOS 11之后,所有的三方App(比如拷贝到"微信"),包括Apple自己出品的App(比如拷贝到"iBooks")都是点击之后没能调起对应的目标App(代理方法- (void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application被调用)。
解决方案:把bundle里的文件复制到沙盒temp文件夹下,从temp文件夹下取文件就可以了。也可以把文件复制到Document/Library/Cache文件夹下。

你可能感兴趣的:(iOS 使用第三方APP打开文件)