禾金晶 發表於 2023-1-15 11:57:46

iOS通过UIDocumentInteractionController实现应用间传文件

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>引言</li><li>一、实现效果</li><li>二、配置工程</li><li>三、用法</li><ul class="second_class_ul"><li>1、弹出文件其他打开方式工具栏</li><li>2、接收文件</li></ul></ul></div><p class="maodian"></p><h2>引言</h2>
<p>话开篇:由于iOS沙盒机制,APP文件存储位置只能当前应用访问,这里简单记录一下用 <strong>UIDocumentInteractionController</strong> 实现APP间传文件。</p>
<p class="maodian"></p><h2>一、实现效果</h2>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202301/20230115084141038.gif" /></p>
<p>两个 <strong>APP</strong> ,<strong>TestProjectA</strong> 将文件通过 <strong>UIDocumentInteractionController</strong> 来传递到 <strong>TestProjectB</strong></p>
<p class="maodian"></p><h2>二、配置工程</h2>
<p>要想通过系统 <strong>UIDocumentInteractionController</strong> 功能展示指定的<strong>APP</strong>,那么,需要在指定的工程 <strong>Info.plist</strong> 加入如下信息:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202301/20230115084141039.png" /></p>
<div class="jb51code"><pre class="brush:xml;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" &gt;
&lt;plist version="1.0" &gt;
    &lt;dict&gt;
      &lt;key&gt; CFBundleDocumentTypes &lt;/key&gt;
      &lt;array&gt;
            &lt;dict&gt;
                &lt;key&gt; LSHandlerRank &lt;/key&gt;
                &lt;string&gt; Default &lt;/string&gt;
                &lt;key&gt; LSItemContentTypes &lt;/key&gt;
                &lt;array&gt;
                &lt;string&gt; com.adobe.pdf &lt;/string&gt;
                  &lt;string&gt; public.data &lt;/string&gt;
                  &lt;string&gt; com.microsoft.powerpoint.ppt &lt;/string&gt;
                  &lt;string&gt; public.item &lt;/string&gt;
                  &lt;string&gt; com.microsoft.word.doc &lt;/string&gt;
                  &lt;string&gt; com.adobe.pdf &lt;/string&gt;
                  &lt;string&gt; com.microsoft.excel.xls &lt;/string&gt;
                  &lt;string&gt; public.image &lt;/string&gt;
                  &lt;string&gt; public.content &lt;/string&gt;
                  &lt;string&gt; public.composite-content &lt;/string&gt;
                  &lt;string&gt; public.archive &lt;/string&gt;
                  &lt;string&gt; public.audio &lt;/string&gt;
                  &lt;string&gt; public.movie &lt;/string&gt;
                &lt;/array&gt;
            &lt;/dict&gt;
      &lt;/array&gt;
    &lt;/dict&gt;
&lt;/plist&gt;
</pre></div>
<p class="maodian"></p><h2>三、用法</h2>
<p class="maodian"></p><h3>1、弹出文件其他打开方式工具栏</h3>
<p><strong>APP-A</strong></p>
<div class="jb51code"><pre class="brush:cpp;">self.documentInteractionController = ;
self.documentInteractionController.delegate = self;
;
</pre></div>
<p class="maodian"></p><h3>2、接收文件</h3>
<p><strong>APP-B</strong></p>
<p>其实这里的所说的 &quot;接收文件&quot; 是有些不妥的,因为,当 <strong>AppDelegate</strong> 的方法里获取到文件的沙盒路径已经是 <strong>APP-B</strong> 的了,这里只是拿来就用。</p>
<div class="jb51code"><pre class="brush:cpp;">- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary&lt;UIApplicationOpenURLOptionsKey,id&gt; *)options
{
    if () {
      NSString * replaceStr;
      #if TARGET_IPHONE_SIMULATOR//模拟器
      replaceStr = @"file://";
      #elif TARGET_OS_IPHONE//真机
      replaceStr = @"file:///private";
      #endif
      NSString * filePathStr = [ stringByReplacingOccurrencesOfString:replaceStr withString:@""];
      /** 业务逻辑 **/
    }
    return YES;
}
</pre></div>
<p>内容仅为简单记录,并不是什么新的技术。只是在开发的时候需要时权当个笔记。</p>
<p>以上就是iOS通过UIDocumentInteractionController实现应用间传文件的详细内容,更多关于iOS应用间传文件的资料请关注琼殿技术社区其它相关文章!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>iOS 断点上传文件的实现方法</li><li>iOS开发中以application/json上传文件实例详解</li><li>IOS开发教程之put上传文件的服务器的配置及实例分享</li><li>iOS内存管理Tagged&nbsp;Pointer使用原理详解</li><li>iOS&nbsp;简单的操作杆旋转实现示例详解</li><li>iOS&nbsp;底层alloc&nbsp;init&nbsp;new&nbsp;源码流程示例分析</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: iOS通过UIDocumentInteractionController实现应用间传文件