iOS實現(xiàn)App之間文件分享方法

共享文件 導入導出 導入的文件夾放在Document下面的Inbox文件夾里,Documents/Inbox:可被外部程序訪問的文件。APP可讀、可刪除,但不能創(chuàng)建和修改。會被iTunes備份。

1 UIFileSharingEnabled 設(shè)置為YES

并設(shè)置如下的格式告訴系統(tǒng)你能處理這個類型的文件

2 設(shè)置info.plist里添加可以讀取PDF功能 如圖所示


分享文件.png

3 當?shù)谌綉眠x擇你的程序后,回自動觸發(fā)– application:openURL:sourceApplication:annotation:. 你要做的就是在該方法里實現(xiàn)打開這個PDF即可:


- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)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:@"<html> \n"
                              "<head> \n"
                              "<style type=\"text/css\"> \n"
                              "body {padding:0 20px;font-size: %f;}\n"
                              "</style> \n"
                              "</head> \n"
                              "<body>%@</body> \n"
                              "</html>",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 但如果你要打開自定義的文件格式則需要告訴系統(tǒng)你的自定義格式 UIExportedTypeDeclarations 并新增一個item 可能你會問為什么PDF不用設(shè)置這個,因為系統(tǒng)已經(jīng)默認支持PDF所以不用在設(shè)置一個PDF對應的UIExportedTypeDeclaration。 如圖所示

創(chuàng)建.png

5 分享文件的屬性設(shè)置可以在這里查看
https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

6 文件的復制、刪除,請看下面的這篇文章
http://www.itdecent.cn/p/14bb4bbc6ed2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 用到的組件 1、通過CocoaPods安裝 2、第三方類庫安裝 3、第三方服務 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 15,205評論 1 180
  • 今天在臺下做記錄時,思緒萬千,也許是聽了大家的分享,也許是想到過去的一些事,"當你竭盡全力時,神靈就會現(xiàn)身",我想...
    劉小瓊282閱讀 244評論 0 1
  • 2017年2月23日 星期四 天氣陰小雨 學習為了什么?這個問題初始是為了孩子,只想通過學習教育好孩子,隨著學習...
    希多媽閱讀 1,345評論 0 1

友情鏈接更多精彩內(nèi)容