Share Расширения и расширения действий не предназначены для использования в качестве пусковых установок приложений.
App Extension Programming Guide
Там нет прямой связи между расширением приложения и содержащим его приложением; как правило, приложение, содержащее приложение, даже не работает, пока работает автономное расширение. Приложение, содержащее расширение приложения и хост-приложение, вообще не взаимодействует.
Расширение отображает пользовательский интерфейс, выполняет некоторую работу и, в случае необходимости для цели расширения, возвращает данные на хост.
Существует ограниченное взаимодействие между расширением приложения и его содержащим приложением. Виджет «Сегодня» (и другой тип расширения приложения) может попросить систему открыть свое приложение, вызвав метод openURL:completionHandler:
класса NSExtensionContext
. "
работа вокруг производной от этого SO question.
Рабочего раствора (опробован на прошивке 9.2) для клавиатуры расширения.
Этой категория добавляет специальный метод для доступа к скрытогоsharedApplication
, а затем наберите openURL:
(конечно, вы должны использовать метод openURL:
с вашей схемой приложений.)
// Valentin Shergin
extension UIInputViewController {
func openURL(url: NSURL) -> Bool {
do {
let application = try self.sharedApplication()
return application.performSelector("openURL:", withObject: url) != nil
}
catch {
return false
}
}
func sharedApplication() throws -> UIApplication {
var responder: UIResponder? = self
while responder != nil {
if let application = responder as? UIApplication {
return application
}
responder = responder?.nextResponder()
}
throw NSError(domain: "UIInputViewController+sharedApplication.swift", code: 1, userInfo: nil)
}
}
Проверьте этот ответ [Open My приложение из моего расширения клавиатуры в стремительной 3.0] (https://stackoverflow.com/a/44718613/2150318) –