我正在使用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目录后才能解决它。尝试启用“文件共享”和“就地打开”选项等权限。请参阅此博客:https://medium.com/if-let-swift-programming/managing-files-in-ios-dfcdfdc1f426
使用Apple的Universal Links可以尝试在其他应用程序中打开文件。它们允许您从当前应用程序启动另一个应用程序。如果实施得当,它们使您能够在另一个应用程序中打开文档/文件,理由是另一个应用程序具有处理传入的通用链接的方法并且已注册接受文档/文件类型。
开始使用Universal Links的一种很好的方法是尝试将文件中的文档共享集成到Microsoft Word中。可以在here找到用于此示例的特定URL方案。有许多YouTube视频,explain链接的概念以及demonstrate如何实现它。
你在这里无能为力。文件会被复制到应用程序或在应用程序中打开,具体取决于接收应用程序本身实现的内容:如果应用程序支持就地打开(并且您的文档位于可访问的位置,例如Documents目录),则应该打开;如果应用程序不支持打开,它将复制。
因此,您需要做的是游说您想要共享文档的应用程序的开发人员采用开放式就地。