【发布时间】:2016-11-27 00:33:05
【问题描述】:
我想使用 SiriKit 开始锻炼。开始锻炼需要从应用程序扩展打开主应用程序。
Apple 为 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 This answer 之类的东西似乎不相关,因为我没有 UIViewController 和 extensionContext 属性的这种扩展类型。
最后一点:对于其他操作(暂停、结束),我不想打开主应用程序,而是简单地暂停在主应用程序中运行的锻炼。我可以使用类似的自定义 URL 来暂停它,但这会打开应用程序,这是一个额外的不必要的步骤。有什么好方法可以告诉主应用在不打开应用的情况下从 INExtension 执行特定操作?
【问题讨论】:
-
Apple 已经定义了
failureRequiringAppLaunch响应代码,这几乎意味着从 Apple 的角度来看这不是一个有效的用例。要求应用程序扩展重新实现我的应用程序的核心用例似乎是不合理的(例如,锻炼不仅仅涉及音频)。我希望用户能够使用我的自定义词汇说“Siri,从 MY-APP 开始 10 分钟上身锻炼”,然后它会在应用中开始锻炼。
标签: ios ios-app-extension ios10 siri sirikit