我的应用程序将PDF分享给另一个第三方应用程序的功能在iOS 11中已经崩溃。它显示了共享表,但当我选择在另一个(第三方)应用程序中打开它时,它只是取消了共享表和什么都不做。
我已确认的事情:
UIActivityViewController
。共享URL会产生相同的行为。共享原始数据允许您“创建PDF”,然后共享该PDF确实有效(但用户体验很糟糕)。是否有其他人遇到此问题或对如何解决问题有任何想法?
以下是显示问题的示例应用的完整代码。我在一个新的“单一视图”应用程序中创建了它。故事板只有两个按钮连接到两个动作。
class ViewController: UIViewController {
var docController: UIDocumentInteractionController!
@IBAction func open(sender: UIButton) {
// self.docController.presentPreview(animated: true)
self.docController.presentOptionsMenu(from: sender.frame, in:self.view, animated:true)
}
@IBAction func check() {
print(self.docController)
}
override func viewDidLoad() {
super.viewDidLoad()
let url = Bundle.main.url(forResource: "OrderForm", withExtension: "pdf")!
self.docController = UIDocumentInteractionController(url: url)
self.docController.delegate = self
}
}
extension ViewController: UIDocumentInteractionControllerDelegate {
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
return self
}
func documentInteractionController(_ controller: UIDocumentInteractionController, willBeginSendingToApplication application: String?) {
print("will begin")
}
func documentInteractionController(_ controller: UIDocumentInteractionController, didEndSendingToApplication application: String?) {
print("did end")
}
}
我还向Apple提交了一个错误(问题ID:34772214)
答案 0 :(得分:9)
问题在于我尝试与应用包内的文件共享URL。 Apple的应用程序似乎有权访问该URL,但第三方应用程序并不适用。我通过首先将资源复制到缓存目录然后使用该缓存目录URL进行共享来解决这个问题。