我希望使用SiriKit开始一项锻炼。开启锻炼需要从应用扩展中打开主应用程序。
苹果提供的INStartWorkoutIntentHandling
处理程序的样板代码为:
func handle(startWorkout startWorkoutIntent: INStartWorkoutIntent, completion: (INStartWorkoutIntentResponse) -> Void) {
let userActivity = NSUserActivity(activityType: NSStringFromClass(INStartWorkoutIntent))
let response = INStartWorkoutIntentResponse(code: .success, userActivity: userActivity)
completion(response)
}
我该如何从这里打开我的应用程序?类似于
myapp://workout?action=start&name=pushups
。这个答案似乎不相关,因为我没有一个具有extensionContext
属性的UIViewController
来处理这种扩展类型。最后一个相关问题:对于其他操作(暂停、结束),我更喜欢不要打开主应用程序,而是仅暂停在主应用程序中运行的锻炼。我可以使用类似的自定义URL来暂停它,但那会打开应用程序,这是一个额外的不必要的步骤。有没有好方法告诉主应用程序从INExtension执行特定操作而不打开应用程序?
failureRequiringAppLaunch
响应代码,这几乎意味着从苹果的角度来看,这不是一个有效的用例。要求应用程序扩展重新实现我的应用程序的核心用例(例如,锻炼不仅涉及音频)似乎是不合理的。我希望用户能够使用我的自定义词汇表说“Siri,从MY-APP开始进行10分钟的上半身锻炼”,然后它就会在应用程序中开始锻炼。 - Tyler Sheaffer