前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >iOS_从其他App获取文件、分享文件给其他App

iOS_从其他App获取文件、分享文件给其他App

作者头像
mikimo
发布于 2022-07-20 06:13:04
发布于 2022-07-20 06:13:04
2K00
代码可运行
举报
文章被收录于专栏:iOS开发~iOS开发~
运行总次数:0
代码可运行

一、从其他App获取文件:官方文档

第一步:

让自己的App显示在系统的分享列表里:需要修改 *.plist 文件

Key为:CFBundleDocumentTypes

Value是:数组,可以包含n个字典,一般一个字典表示支持一种类型的文件

  字典: 

Key

Value

CFBundleTypeName

文件类型名称(自己起个名)

LSHandlerRank

包含Owner,Default,Alternate,None四个可选值

LSItemContentTypes

数组类型,包含支持的文件类型:官方标识符文档(也可以自定义)

这里给一个我需要支持.bin文件的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<key>CFBundleDocumentTypes</key>
<array>
  <dict>
    <key>CFBundleTypeName</key>
    <string>Binary</string>
    <key>LSHandlerRank</key>
    <string>Alternate</string>
    <key>LSItemContentTypes</key>
    <array>
      <string>public.data</string>
      <string>public.executable</string>
      <string>com.apple.mach-o-binary</string>
      <string>com.apple.pef-binary</string>
    </array>
  </dict>
</array>

然后就可以.bin文件的分享列表里看到自己的app了,如图:

第二步:获取文件

当从其他app分享文件过来时,会调用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// MARK: - 其他app分享过来时回调
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
  print("openURLContexts:\(URLContexts)")
}

保存的位置:会在Document下新建一个Inbox文件夹,分享过来的文件都会存在这个文件夹下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 获取 Document/Inbox 里从其他app分享过来的文件
let manager = FileManager.default
let urlForDocument = manager.urls(for: .documentDirectory, in: .userDomainMask)
var documentUrl = urlForDocument[0] as URL
documentUrl.appendPathComponent("Inbox", isDirectory: true)
do {
  let contentsOfPath = try manager.contentsOfDirectory(at: documentUrl,
                                                       includingPropertiesForKeys: nil,
                                                       options: .skipsHiddenFiles)
  self.url = contentsOfPath.first // 保存,为了展示分享
  print("contentsOfPath:\n\(contentsOfPath)")
} catch {
  print("error:\(error)")
}

二、分享文件到其他App

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// MARK: - 点击分享文件
@objc func clickShare() {
  if let url = self.url {
    documentController = UIDocumentInteractionController(url: url)
    documentController?.presentOptionsMenu(from: self.view.bounds, in: self.view, animated: true)
  }
}

以上~

参考1参考2

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、从其他App获取文件:官方文档
    • 第一步:
    • 第二步:获取文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文