openURL из расширения приложения
на iOS 8 beta 2 должно быть возможно использовать openUrl из расширения приложения, как написано в примечаниях к выпуску:
однако, когда я пытаюсь использовать этот API (на Xcode 6 beta 2), я получаю следующую ошибку:
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
в расширениях без проблем.