トレーニングを開始するにはSiriKitを使用します。ワークアウトを開始するには、アプリの拡張機能からメインアプリを開く必要があります。 AppleはINStartWorkoutIntentHandling
ハンドラを提供することをSiriKitのINExtensionからアプリを起動
定型は
func handle(startWorkout startWorkoutIntent: INStartWorkoutIntent, completion: (INStartWorkoutIntentResponse) -> Void) {
let userActivity = NSUserActivity(activityType: NSStringFromClass(INStartWorkoutIntent))
let response = INStartWorkoutIntentResponse(code: .success, userActivity: userActivity)
completion(response)
}
がどのように私はここから自分のアプリを開くことができますか? This answerのようなものは、このエクステンションタイプのextensionContext
プロパティを持つUIViewController
を持っていないため、関連性がないようです。
最後の関連するビット:他のアクション(一時停止、終了)の場合は、メインアプリケーションを開くのではなく、メインアプリケーションで実行中のワークアウトを一時停止することをおすすめします。私はそれを一時停止するために同様のカスタムURLを使用することができますが、余分な不要なステップであるアプリを開くだろう。主なアプリにアプリを開かずにINExtensionから特定のアクションを取るように指示する良い方法はありますか?
アップルはAppleの観点から、有効なユースケースではないことをほとんど意味する['failureRequiringAppLaunch'](https://developer.apple.com/reference/intents/instartworkoutintentresponsecode)レスポンスコードを定義しています。アプリの拡張機能でアプリの中核的なケースを再実装する必要があるとは思わしくありません(例:オーディオだけではなく、トレーニングなど)。ユーザーは「シリ、私のカスタムボキャブラリーを使ってMY-APPから10分間上半身のトレーニングを始めてください」と言うことができ、アプリでトレーニングを始めることができます。 –