iOS 使用第三方APP打开文件

作者: User106 | 来源:发表于2018-04-18 15:13 被阅读970次

    目标预览

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


    IMG_F1F35F792053-1.jpeg

    方案

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

    @interface ViewController ()<UIDocumentInteractionControllerDelegate>
    @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打开文件

        本文链接:https://www.haomeiwen.com/subject/lkbvkftx.html