iOS实现App之间文件分享方法

共享文件 导入导出 导入的文件夹放在Document下面的Inbox文件夹里,Documents/Inbox:可被外部程序访问的文件。APP可读、可删除,但不能创建和修改。会被iTunes备份。

1 UIFileSharingEnabled 设置为YES

并设置如下的格式告诉系统你能处理这个类型的文件

2 设置info.plist里添加可以读取PDF功能 如图所示


分享文件.png

3 当第三方应用选择你的程序后,回自动触发– application:openURL:sourceApplication:annotation:. 你要做的就是在该方法里实现打开这个PDF即可:


- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options{
  //外部copy过来的文件预览
  if (url != nil && [url isFileURL]) {
    _viewController = [[ShowCopyFilesController alloc]init];
    [[self ViewController] presentViewController:_viewController animated:YES completion:^{
      [_viewController handleDocumentOpenURL:url];
    }];
  }
  
  return YES;
}

- (void)handleDocumentOpenURL:(NSURL *)url {
  
  NSString *urlStr = url.absoluteString;
  NSString *lastName =[[urlStr lastPathComponent] lowercaseString];
  if ([lastName containsString:@".txt"])
  {
    NSData *attachmentData =  [NSData dataWithContentsOfURL:url];
    //txt分带编码和不带编码两种,带编码的如UTF-8格式txt,不带编码的如ANSI格式txt
    //不带的,可以依次尝试GBK和GB18030编码
    NSString* aStr = [[NSString alloc] initWithData:attachmentData encoding:NSUTF8StringEncoding];
    if (!aStr) {
      //用GBK进行编码
      aStr=[[NSString alloc] initWithData:attachmentData encoding:0x80000632];
    }
    if (!aStr) {
      //用GBK编码不行,再用GB18030编码
      aStr=[[NSString alloc] initWithData:attachmentData encoding:0x80000631];
    }
    //通过html语言进行排版
    NSString* responseStr =  [NSString stringWithFormat:@" \n"
                              " \n"
                              " \n"
                              " \n"
                              "%@ \n"
                              "",20.0,aStr];
    [_webView loadHTMLString:responseStr baseURL:nil];
  }
  else
  {
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [_webView loadRequest:request];
  }
  [_webView stringByEvaluatingJavaScriptFromString:@"document.body.style.zoom = 5.0;"];
  [_webView setUserInteractionEnabled:YES];
}

4 但如果你要打开自定义的文件格式则需要告诉系统你的自定义格式 UIExportedTypeDeclarations 并新增一个item 可能你会问为什么PDF不用设置这个,因为系统已经默认支持PDF所以不用在设置一个PDF对应的UIExportedTypeDeclaration。 如图所示

创建.png

5 分享文件的属性设置可以在这里查看
https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

6 文件的复制、删除,请看下面的这篇文章
https://www.jianshu.com/p/14bb4bbc6ed2

你可能感兴趣的:(iOS实现App之间文件分享方法)