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

1.自己的APP调用第三方打开文件
主要是使用 UIDocumentInteractionController 类 并实现UIDocumentInteractionControllerDelegate 的代理方法。


@interface HNDownFileViewController ()

@property (nonatomic, strong) UIDocumentInteractionController *documentInteractionController;

@end


-(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];
}

需要在真机上调试,例子中打开的是 doc文件,如果手机上装了WPS或者office套件,就能调用这些应用打开。

2.第三方APP调用自己的APP,打开文件在info.plist中添加如下代码




CFBundleTypeName
com.myapp.common-data
LSItemContentTypes

com.microsoft.powerpoint.ppt
public.item
com.microsoft.word.doc
com.adobe.pdf
com.microsoft.excel.xls
public.image
public.content
public.composite-content
public.archive
public.audio
public.movie
public.text
public.data




这在系统中添加了参数,如果有以上类型的文件,第三方应用可以调用我们的APP进行操作。
在第三方调用我们的APP后,会调用如下方法

-(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;
}

url 就是第三方应用调用时文件的沙盒地址,
@"Documents/localFile" 表示本地文件夹目录
sourceApplication 是调用我们APP的第三方应用是谁
我们把url传到我们需要用的界面
可以使用路径查看保存到本地的文件

你可能感兴趣的:(ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件)