2

我正在开发一种使用UIDocumentInteractionController. 但奇怪的是,我能得到的只是“复制到”应用程序功能,而不是“在”应用程序中打开。如果我点击“复制到”,什么也没有发生,即使我知道屏幕后面发生的事情是文件被复制到另一个应用程序。但我不希望文件只是被复制。我希望其他应用程序能够真正切换并打开文件。

仅有的

这是我用来下载和共享文件的代码:

Alamofire.download(url, to:destination)
   .downloadProgress { (progress) in
       print((String)(progress.fractionCompleted))
   }
   .responseData { (data) in
       print("DOWNLOAD COMPLETED")

       print("DESTINATION URL: \((data.destinationURL)!)")
       print("DESTINATION PATH: \((data.destinationURL?.path)!)")

       let documentController = UIDocumentInteractionController.init(url: (data.destinationURL)!)
       documentController.delegate = self
       documentController.presentOpenInMenu(from: CGRect.zero, in: self.view, animated: true)
}

在上面的屏幕截图中特别下载和共享的文件是一个 .PDF 文件。

4

3 回答 3

2

尝试在其他应用程序中打开文件可以使用 Apple 的通用链接来实现。它们允许您从当前应用程序启动另一个应用程序。如果实施得当,它们使您能够在另一个应用程序中打开文档/文件,因为另一个应用程序具有处理传入通用链接的方法并且已注册以接受文档/文件类型。

开始使用通用链接的一个很好的方法是尝试将文档共享从您的文件集成到 Microsoft Word。可以在此处找到用于此示例的特定 URL 方案。有许多 YouTube 视频解释了链接的概念并演示了如何实现它。

于 2018-06-19T19:10:28.510 回答
1

这可能是由于文件对其他应用程序的可访问性问题。我们遇到了同样的问题,只有将文件写入 tmp/documents 目录后才能解决。尝试启用“文件共享”和“原地打开”选项等权限。请参阅此博客: https ://medium.com/if-let-swift-programming/managing-files-in-ios-dfcdfdc1f426

于 2018-06-18T06:32:36.700 回答
0

您在这里无能为力。文件被复制到应用程序或在应用程序中打开取决于接收应用程序本身实现的内容:如果应用程序支持就地打开(并且您的文档位于可访问的位置,例如您的 Documents 目录),您应该打开;如果应用程序不支持就地打开,它将复制。

因此,您需要做的是游说您希望与之共享文档的应用程序的开发人员采用就地开放。

于 2018-06-20T07:48:47.390 回答