UIDocumentInteractionController 不会在 iOS 11 中打开其他应用程序
UIDocumentInteractionController does not open other app in iOS 11
我的应用程序将 PDF 共享到另一个第三方应用程序的功能在 iOS11 中出现故障。它显示共享 sheet 但是当我选择在不同的(第三方)中打开它时) 应用程序,它只是关闭共享 sheet 并且什么都不做。
我已经确认的事情:
- willBeginSending 和 didEndSending 的委托方法都被调用了
- 打开邮件或备忘录等第一方应用程序工作正常
- 文档选取器仍在内存中
- 显示预览效果很好,但预览中的共享按钮仍然无法打开第三方应用程序
- 我也试过使用
UIActivityViewController
。共享 URL 会产生相同的行为。共享原始数据允许您 "Create a PDF" 然后共享 PDF 确实有效(但用户体验很糟糕)。
有没有其他人遇到过这种情况或对如何解决它有任何想法?
这是显示问题的示例应用程序的完整代码。我在一个新的 "single view" 应用程序中创建了它。故事板只有两个按钮连接到两个动作。
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)
问题是我试图将 URL 共享到应用程序包内的文件。似乎 Apple 的应用程序有权访问 URL 但第三方应用程序没有。我通过首先将资源复制到缓存目录然后使用该缓存目录 URL 进行共享来解决这个问题。
我的应用程序将 PDF 共享到另一个第三方应用程序的功能在 iOS11 中出现故障。它显示共享 sheet 但是当我选择在不同的(第三方)中打开它时) 应用程序,它只是关闭共享 sheet 并且什么都不做。
我已经确认的事情:
- willBeginSending 和 didEndSending 的委托方法都被调用了
- 打开邮件或备忘录等第一方应用程序工作正常
- 文档选取器仍在内存中
- 显示预览效果很好,但预览中的共享按钮仍然无法打开第三方应用程序
- 我也试过使用
UIActivityViewController
。共享 URL 会产生相同的行为。共享原始数据允许您 "Create a PDF" 然后共享 PDF 确实有效(但用户体验很糟糕)。
有没有其他人遇到过这种情况或对如何解决它有任何想法?
这是显示问题的示例应用程序的完整代码。我在一个新的 "single view" 应用程序中创建了它。故事板只有两个按钮连接到两个动作。
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)
问题是我试图将 URL 共享到应用程序包内的文件。似乎 Apple 的应用程序有权访问 URL 但第三方应用程序没有。我通过首先将资源复制到缓存目录然后使用该缓存目录 URL 进行共享来解决这个问题。