В расширении App (например: пользовательские клавиатуры), что было бы обработано через UIViewController.extensionContext
, но с iOS 8.1.2, поле в следующем Swift вызова nil
:
self.extensionContext?.openURL(appURL, completionHandler: nil)
// Does nothing because extensionContext is nil (iOS 8.1)
На самом деле, это не возможно либо использовать Application.sharedApplication.openURL(...)
в App Extension, как указано в Apple documentation.
Так, по состоянию на 8.1.2, обходной путь заключается в использовании немого UIWebView
для перенаправления содержащего приложения, как это:
let webView = UIWebView(frame: CGRectMake(0, 0, 0, 0));
let url = "MyKeyboard://";
let content = "<head><meta http-equiv='refresh' content='0; URL=\(url)'></head>";
webView.loadHTMLString(content, baseURL: nil);
self.view.addSubview(webView);
let delayInSeconds = 2.0
let startTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delayInSeconds * Double(NSEC_PER_SEC)))
dispatch_after(startTime, dispatch_get_main_queue()) {() -> Void in
webView.removeFromSuperview()
}
Где MyKeyboard://
должны быть определены соответствующим образом в схеме URL в содержащем приложении.
Обратите внимание, что я еще не знаю, одобрено ли это Apple. Перенаправление приложений с пользовательских клавиатур может быть достаточно плохим для пользователей.
У вас есть решение вашей проблемы? –
Отметьте этот ответ [Открыть мое приложение с моего расширения клавиатуры в swift 3.0] (https://stackoverflow.com/a/44718613/2150318) –
https://forums.raywenderlich.com/t/open-my-application- from-my-keyboard-extension-in-swift-3-0/21121/2? u = leangchhean –