首页 > 解决方案 > 通过 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表现出相同的行为。我还认为这可能是由于没有保留UIActivityViewControllerUIDocumentInteractionController需要 AirDrop 共享才能工作),但让系统执行此操作似乎就足够了。

该问题在 iOS 12.1 和 11.4.1 上都重现。

我错过了什么?

标签: iosuiactivityviewcontrollerairdropuidocumentinteractioncontroller

解决方案


我遇到了这个完全相同的问题,除了 AirDrop 之外一切正常。原来我的 URL 实例是相对的,这在某种程度上导致了 AirDrop 的问题。我通过传递解决了它activityItems: [fileURL.absoluteURL]


推荐阅读