Freigabeerweiterungen und Aktionserweiterungen sind nicht als App-Startprogramme gedacht.
App Extension Programming Guide
Es gibt keine direkte Kommunikation zwischen einer Anwendung und ihre Verlängerung enthält, app; In der Regel wird die enthaltene App nicht ausgeführt, während eine enthaltene Erweiterung ausgeführt wird. Eine App-Erweiterung, die die App enthält, und die Host-App kommunizieren überhaupt nicht.
Die Erweiterung zeigt eine Benutzeroberfläche an, führt einige Arbeit aus und gibt, falls für den Zweck der Erweiterung geeignet, Daten an den Host zurück.
Die Interaktion zwischen einer App-Erweiterung und der zugehörigen App ist begrenzt. Ein Today-Widget (und kein anderer App-Erweiterungstyp) kann das System bitten, die zugehörige App zu öffnen, indem die Methode openURL:completionHandler:
der Klasse NSExtensionContext
aufgerufen wird. "
Eine Arbeit um von dieser abgeleiteten SO question.
Arbeitslösung (getestet auf iOS 9.2) für Keyboard Extension.
Diese Kategorie fügt spezielle Methode für den Zugriff auf verstecktsharedApplication
Objekt und dann rufen Sie openURL:
darauf. (Natürlich müssen Sie dann openURL:
Methode mit Ihrem App-Schema verwenden.)
// 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)
}
}
prüfen diese Antwort (https://stackoverflow.com/a/44718613/2150318) –