我有一个Safari共享扩展程序,我希望能够在扩展程序中打开主应用程序。系统会向用户显示一个警报,其中提供了打开应用程序的选项。
func openAppHandler() {
self.extensionContext?.completeRequest(returningItems: []) { (success) in
if let url = URL(string: "myapp://...") {
self.extensionContext?.open(url, completionHandler: nil)
}
}
}
调用方法didSelectPost()
后会出现警报,您可以看到它出现在扩展的后台优先级完成块中。 open
方法在其文档中说“在iOS 8中,只有今天的扩展点(用于创建小部件)支持这种方法。”我猜测它仍然是在Safari Share Extension中仍然不支持的情况。
有没有人知道从共享扩展程序中打开主应用程序的方法?
答案 0 :(得分:7)
我找到了解决方案here。我不确定这在技术上是否适用于Apple,但它可以正常工作。
@objc func openURL(_ url: URL) {
return
}
func openContainerApp() {
var responder: UIResponder? = self as UIResponder
let selector = #selector(MyViewController.openURL(_:))
while responder != nil {
if responder!.responds(to: selector) && responder != self {
responder!.perform(selector, with: URL(string: "myapp://url")!)
return
}
responder = responder?.next
}
}