美文网首页
ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件

ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件

作者: 华楠 | 来源:发表于2016-12-01 15:50 被阅读0次

    1.自己的APP调用第三方打开文件
    主要是使用 UIDocumentInteractionController 类 并实现UIDocumentInteractionControllerDelegate 的代理方法。
    <pre>
    @interface HNDownFileViewController ()<UIDocumentInteractionControllerDelegate>

    @property (nonatomic, strong) UIDocumentInteractionController *documentInteractionController;

    @end
    </pre>

    <pre>
    -(void)viewDidLoad {
    [super viewDidLoad];
    //url 为需要调用第三方打开的文件地址
    NSURL *url = [NSURL fileURLWithPath:_dict[@"path"]];
    _documentInteractionController = [UIDocumentInteractionController
    interactionControllerWithURL:url];
    [_documentInteractionController setDelegate:self];
    [_documentInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
    }
    </pre>
    需要在真机上调试,例子中打开的是 doc文件,如果手机上装了WPS或者office套件,就能调用这些应用打开。

    2.第三方APP调用自己的APP,打开文件在info.plist中添加如下代码
    <pre>
    <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>
    </pre>
    这在系统中添加了参数,如果有以上类型的文件,第三方应用可以调用我们的APP进行操作。
    在第三方调用我们的APP后,会调用如下方法
    <pre>
    -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation
    {
    if (self.window) {
    if (url) {
    NSString *fileNameStr = [url lastPathComponent];
    NSString *Doc = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/localFile"] stringByAppendingPathComponent:fileNameStr];
    NSData *data = [NSData dataWithContentsOfURL:url];
    [data writeToFile:Doc atomically:YES];
    [XCHUDTool showOKHud:@"文件已存到本地文件夹内" delay:2.0f];
    }
    }
    return YES;
    }
    </pre>
    url 就是第三方应用调用时文件的沙盒地址,
    @"Documents/localFile" 表示本地文件夹目录
    sourceApplication 是调用我们APP的第三方应用是谁
    我们把url传到我们需要用的界面
    可以使用路径查看保存到本地的文件

    相关文章

      网友评论

          本文标题:ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件

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