2016-07-23 8 views
4

トレーニングを開始するには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から特定のアクションを取るように指示する良い方法はありますか?

+0

アップルはAppleの観点から、有効なユースケースではないことをほとんど意味する['failureRequiringAppLaunch'](https://developer.apple.com/reference/intents/instartworkoutintentresponsecode)レスポンスコードを定義しています。アプリの拡張機能でアプリの中核的なケースを再実装する必要があるとは思わしくありません(例:オーディオだけではなく、トレーニングなど)。ユーザーは「シリ、私のカスタムボキャブラリーを使ってMY-APPから10分間上半身のトレーニングを始めてください」と言うことができ、アプリでトレーニングを始めることができます。 –

答えて

0

これはXcode 8 Beta 3で解決されました。これはコードをこのバージョンのINStartWorkoutIntentResponseCodeに追加しましたが、そこにはありませんでしたXcode 8 beta 2.このステータスコードにより、NSUserActivityを直接渡すことができます(URLスキームを使用する必要はありません)。

+0

ちなみに、ユーザーにアプリを選択させる場合は、アプリを起動する必要はありません。あなたはSiriを通じてそれを行うことができます –

+0

私は広告でトレーニングを見せたいので、.continueInAppをやり終えました –

関連する問題