OpenURL из расширения приложения
В iOS 8 beta 2 должно быть возможно использовать openUrl из расширения приложения, как записано в примечаниях к выпуску:
![enter image description here]()
однако, когда я пытаюсь использовать этот API (на Xcode 6 beta 2), я получаю следующую ошибку:
![enter image description here]()
Бета 2 действительно исправила эту проблему или нет?
Ответы
Ответ 1
вы можете использовать этот код:
[self.extensionContext openURL:url completionHandler:^(BOOL success) {
NSLog(@"fun=%s after completion. success=%d", __func__, success);
}];
документ API:
openURL:completionHandler:
вы также можете обратиться к этому вопросу:
openURL не работает в расширении Action
Ответ 2
Принятое решение работает только в 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 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
}
Ответ 3
В iOS 11 кажется, что вы можете использовать UIApplication.sharedApplication.openURL
в расширениях без проблем.