我有一个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中,只有Today扩展点(用于创建窗口小部件)支持此方法。”我猜仍然是Safari Share Extension不支持它的情况。有谁知道通过共享扩展程序打开我的主应用程序的方法吗?
最佳答案
我找到了解决方案here。我不确定苹果在技术上是否可以,但是它可以按我的需要工作。
@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
}
}
关于ios - 从iOS Safari共享扩展打开主应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41449602/