Ios 如何使UIDocumentInteractionController可以在其他应用程序中打开文件,而不是将其复制到其他应用程序?

Ios 如何使UIDocumentInteractionController可以在其他应用程序中打开文件,而不是将其复制到其他应用程序?,ios,swift,ios-sharesheet,uidocumentinteractioncontroller,Ios,Swift,Ios Sharesheet,Uidocumentinteractioncontroller,我正在使用UIDocumentInteractionController开发一种下载并共享文件到其他应用程序的方法。但奇怪的是,我能得到的只是“复制到”应用程序功能,而不是“打开”应用程序。如果我点击“复制到”,什么也没发生,即使我知道屏幕后面发生的是文件被复制到了另一个应用程序。但我不希望文件只是复制的。我想让另一个应用程序实际切换并打开文件 这是我用来下载和共享文件的代码: Alamofire.download(url, to:destination) .downloadProgre

我正在使用
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文件。

这可能是由于该文件对其他应用程序的可访问性问题。我们面临同样的问题,只有在将文件写入tmp/documents目录后才能解决它。尝试启用权限,如“文件共享”和“就地打开”选项。请参阅本博客:

尝试在其他应用程序中打开文件可以通过苹果的通用链接实现。它们允许您从当前应用程序启动另一个应用程序。如果正确实现,它们允许您在另一个应用程序中打开文档/文件,理由是另一个应用程序具有处理传入通用链接的方法,并且已注册以接受文档/文件类型


开始使用通用链接的一个很好的方法是尝试将文档共享从文件集成到(比如)Microsoft Word。可以找到用于此示例的特定URL方案。有许多YouTube视频介绍了链接的概念以及如何实现链接。

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

因此,你需要做的是游说你想要与之共享文档的应用程序的开发人员,让他们采用open-in-place