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=pushups
This 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?
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. –