私はSiri WorkOutインテントを自分のアプリに統合しようとしています。 は `handleInApp`を使用していますWorkoutIntentResponseCode Siriは常に廃止された` continueInApp`とは違って、「申し訳ありません、あなたはアプリケーションで続行する必要があります」と言います
class StartWorkOutRequestHandling : NSObject, INStartWorkoutIntentHandling {
func handle(startWorkout intent: INStartWorkoutIntent, completion: @escaping (INStartWorkoutIntentResponse) -> Void) {
if let _ = intent.workoutName {
if #available(iOSApplicationExtension 11.0, *) {
let userActivity = NSUserActivity(activityType: "test")
let response = INStartWorkoutIntentResponse(code: .handleInApp, userActivity: userActivity)
completion(response);
}
else {
// Fallback on earlier versions
let userActivity = NSUserActivity(activityType: "test")
let response = INStartWorkoutIntentResponse(code: .continueInApp, userActivity: userActivity)
completion(response)
}
}
else {
let response = INStartWorkoutIntentResponse(code: .failureNoMatchingWorkout, userActivity: .none)
completion(response);
}
}
}
あなたがhandle(startWorkout
で見ることができるように
continueInApp
を使用する場合ははい、私は
handleInApp
応答コードを使用する場合のiOSのバージョンが11以上であるかどうかをチェックしています。 (:10.0、非推奨:11.0、メッセージ: "INStartWorkoutIntentResponseCodeContinueInAppはiOSでは推奨されません 代わりINStartWorkoutIntentResponseCodeHandleInAppを使用してください" のiOSは、導入された) ケースcontinueInApp
public enum INStartWorkoutIntentResponseCode : Int {
の
定義が
が@available言うためです
.handleInApp
は、continueInApp
としてアプリを開くバックグラウンドでアプリを開きます。
しかし、私はhandleInApp
を使用してシリに「私のAppNameでワークアウトを開始します」と言うとき、シリは
が
を「申し訳ありませんが、あなたはアプリで継続する必要があります」言うといa MyAppを開くボタン。一方、私は予想通りシリアプリを開き、警告を無視して、単に
func handle(startWorkout intent: INStartWorkoutIntent, completion: @escaping (INStartWorkoutIntentResponse) -> Void) {
if let _ = intent.workoutName {
let userActivity = NSUserActivity(activityType: "test")
let response = INStartWorkoutIntentResponse(code: .continueInApp, userActivity: userActivity)
completion(response);
}
else {
let response = INStartWorkoutIntentResponse(code: .failureNoMatchingWorkout, userActivity: .none)
completion(response);
}
}
を使用している場合。両方の場合に注意する価値は何ですか?
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
//this is a legacy app hence part of code is still in Objective-C
}
アプリケーションの代理人メソッドが正しく呼び出されます。
私は
Siri always responds 'Continue in the app' when starting workout with SiriKit
ここに同様の質問を見つけましたが、それは推奨されないcontinueInAppを使用していますけど。だから、iOS 11でそれを使うことはできません。
私はここで間違いを犯しますか?なぜhandleInApp
を使用するとアプリが開かれないのでしょうか?また、SiriがAppで続行する必要があると不平を言うのはなぜですか? handleInApp
を使用してアプリを開く方法
私はWorkoutインテントを使っている間にSiriからAppを開くことになっていないと思いますが、Workoutインテントに対してもIntentUI
をトリガーする方法はないと思います。 参照:
助けてください。
は答えを投稿いただきありがとうございます。病気は一見して元に戻る。今のところ私はあなたの答えをupvotedしている:+1 –