如何在UIDocumentInteractionController中使用AirDrop发送大文件

时间:2019-01-15 10:52:36

标签: ios swift airdrop

在我正在使用的iPad应用程序中,我正在生成应该使用UIDocumentInteractionController保存或共享的png图像。

每个选项都可以正常工作,但只有一个。如果png文件大于20MB左右,则AirDrop功能会失败,并且UIDocumentInteractionController弹出窗口会因以下错误而被iOS终止:

viewServiceDidTerminateWithError:: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted}

该应用程序继续运行,我仍然可以使用它。

在这种情况下,png文件很大,所有其他“共享/打开...”选项都可以正常工作。仅AirDrop共享功能会失败。

点击共享的人/设备后,它几乎立即发生。因此,它不认为这可能是内存问题。当我正在开发具有6GB RAM的2018 iPad Pro时,我也对此不敢相信。

在我的测试中,大多数生成的文件大约为100MB,与我们可以使用AirDrop从Apple应用程序传输的文件相比,这并不算太大。例如,我已经使用AirDrop从Files应用程序传输了大于300MB的文件。

请注意,我不知道正确的极限值,但我感觉到(!)在20MB区域内。我已经尝试过将文件大小最大为10MB的文件毫无问题。

我也尝试使用UIActivityViewController并获得了相同的行为。我尝试了三种设置项目共享的方法:

  • 将png文件的网址设置为项目
  • 将png数据加载到Data对象中,并将此数据对象设置为项目
  • 将png数据加载到UIImage中,并将此图像设置为项目

这是我用来显示documentController的代码:

func presentDocumentInteractionController(for fileUrl: URL) {
    documentController = UIDocumentInteractionController(url: fileUrl)
    documentController!.delegate = self
    documentController!.uti = String(kUTTypePNG)
    documentController!.name = fileUrl.lastPathComponent
    documentController!.presentOptionsMenu(from: shareBarButtonItem, animated: true)
}

documentController var是我的类的成员,以避免在函数结束时将其删除,然后避免应用在nil值时崩溃。

除了向苹果公司提交雷达申请外,我什么都没有。 有人经历过这种行为吗?

0 个答案:

没有答案