openURL из расширения приложения

на iOS 8 beta 2 должно быть возможно использовать openUrl из расширения приложения, как написано в примечаниях к выпуску:

enter image description here

однако, когда я пытаюсь использовать этот API (на Xcode 6 beta 2), я получаю следующую ошибку:

enter image description here

Beta 2 действительно исправил эту проблему или нет?

3 ответов


вы можете использовать этот код:

[self.extensionContext openURL:url completionHandler:^(BOOL success) {
        NSLog(@"fun=%s after completion. success=%d", __func__, success);
    }];

документ API: openURL:completionHandler:

вы также можете обратиться на этот вопрос: openURL не работает в действии расширения


принял решение работает только в Today extensions, рабочее решение в Swift 3.1 (протестировано в iOS10) для других типов расширений:

вам нужно создать свою собственную схему URL, затем добавьте эту функцию в свой ViewController и вызовите ее с помощью openURL("myScheme://myIdentifier")

//  Function must be named exactly like this so a selector can be found by the compiler!
//  Anyway - it's another selector in another instance that would be "performed" instead.
func openURL(_ url: URL) -> Bool {
    var responder: UIResponder? = self
    while responder != nil {
        if let application = responder as? UIApplication {
            return application.perform(#selector(openURL(_:)), with: url) != nil
        }
        responder = responder?.next
    }
    return false
}

в iOS 11 кажется, что вы можете использовать UIApplication.sharedApplication.openURL в расширениях без проблем.