2016-07-23 38 views
4

Ich möchte SiriKit verwenden, um mit dem Training zu beginnen. Zum Starten des Trainings muss die Haupt-App von der App-Erweiterung aus geöffnet werden.App von INExtension in SiriKit starten

Die vorformulierten, dass Apple für die INStartWorkoutIntentHandling Handler bietet, ist

func handle(startWorkout startWorkoutIntent: INStartWorkoutIntent, completion: (INStartWorkoutIntentResponse) -> Void) { 
    let userActivity = NSUserActivity(activityType: NSStringFromClass(INStartWorkoutIntent)) 
    let response = INStartWorkoutIntentResponse(code: .success, userActivity: userActivity) 
    completion(response) 
} 

Wie kann ich von hier aus meiner eigenen App öffnen? Etwas wie myapp://workout?action=start&name=pushupsThis answer scheint nicht relevant, da ich keine UIViewController mit einer extensionContext Eigenschaft für diesen Erweiterungstyp habe.

Last verwandter Bit: Für die anderen Aktionen (Pause, Ende) Ich würde es vorziehen, nicht den Haupt-App zu öffnen, sondern einfach das Training unterbrechen, die in dem Haupt-App laufen. Ich könnte eine ähnliche benutzerdefinierte URL verwenden, um sie anzuhalten, aber das würde die App öffnen, was ein zusätzlicher unnötiger Schritt ist. Gibt es eine gute Möglichkeit, der Hauptanwendung zu sagen, dass sie eine bestimmte Aktion von der INExtension ausführen soll, ohne die App zu öffnen?

+0

Apple hat den Antwortcode ['failureRequiringAppLaunch'] (https://developer.apple.com/reference/intents/instartworkoutintertterresponsecode) definiert, was fast bedeutet, dass dies aus Sicht von Apple kein gültiger Anwendungsfall ist. Scheint unangemessen, dass die App-Erweiterung den Core-Use-Case meiner App neu implementiert (z. B. beinhalten Workouts mehr als nur Audio). Ich möchte Benutzer müssen in der Lage zu sagen: „Siri, 10 Minuten Oberkörpertraining von MY-APP starten“ meine benutzerdefinierten Vokabular, und es wäre nur das Training in der App starten. –

Antwort

0

Für die Nachwelt: stellt sich heraus, das ein phasen in dieser Funktionalität zwischen Xcode 8 Betas war, ist es in Xcode 8 Beta 3. Sie fügten den .continueInApp Code INStartWorkoutIntentResponseCode in dieser Version, aber es war nicht da gelöst in Xcode 8 beta 2. Dieser Statuscode ermöglicht die direkte Weitergabe von NSUserActivity (kein URL-Schema erforderlich).

+0

Übrigens, wenn Sie möchten, dass der Benutzer die App auswählt, müssen Sie nicht zum Starten der App gehen. Sie können es durch Siri –

+0

getan getan tun .continueInApp, weil ich das Training mit meinen Anzeigen zeigen möchte –