ios - 通过 AirDrop 共享的文件不完整
问题描述
我正在开发一个应用程序,其功能之一是下载和显示 PDF 文件。我实现这些功能没有问题。然后我想启用文件共享,但遇到了一个奇怪的问题。
这是我的共享代码的样子:
log.debug("Will share file: '\(fileURL.absoluteString)'")
// an example of fileURL: file:///var/mobile/Containers/Data/Application/3A6D5948-8F14-42FB-905A-D776BD975ED1/Library/Caches/d7e635bb-5baa-4fde-b60b-b3fb869cdf46/6.3%20Rambeskrivning%20Mark.pdf
let shareView = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
dependencies.router.show(shareView, asPopoverFrom: barButtonItem)
没什么特别的,但是当我通过 AirDrop 共享文件时,它在接收端只有 200-250 个字节并且有不同的名称,例如“PDF document-373E47D68169-1.pdf”(而不是原始名称)。
我的第一个想法是下载的文档已损坏,但事实并非如此(我在设备和模拟器上都检查过)。如果我选择另一个共享选项(例如,“保存到文件”),文件将正确共享。UIDocumentInteractionController
表现出相同的行为。我还认为这可能是由于没有保留UIActivityViewController
(UIDocumentInteractionController
需要 AirDrop 共享才能工作),但让系统执行此操作似乎就足够了。
该问题在 iOS 12.1 和 11.4.1 上都重现。
我错过了什么?
解决方案
我遇到了这个完全相同的问题,除了 AirDrop 之外一切正常。原来我的 URL 实例是相对的,这在某种程度上导致了 AirDrop 的问题。我通过传递解决了它activityItems: [fileURL.absoluteURL]
。
推荐阅读
- mysql - 加入未在 mysql 中返回预期结果
- ruby-on-rails - Rails 对表“产品”的更新或删除违反了外键约束
- .htaccess - 使域适用于网站和管理面板
- java - 如何在 Java 中打印 Vector<> 中嵌套类型的数量?
- c# - C# Json - 各种数据类型的 JSON 属性。.net 3.5
- react-apollo - Apollo 客户端:如何使用查询字符串查询休息端点?
- javascript - 如何在循环中添加“或”操作?
- node.js - 出现错误:无法读取节点 js 中未定义的属性“findOne”
- swift - Xcode 无法返回导航堆栈中的 TableViewController
- css - 以scss中元素的所有直接子元素为目标?