2017-08-15 4 views
1

Ich habe für eine Weile auf SiriKit gearbeitet, und das Ergebnis meiner Demo wurde nicht von meinem Chef erfüllt. Durch das Lesen aller Apple-Dokumente & habe ich mein Bestes getan, um online zu suchen, kann ich immer noch keinen Weg finden, den Bestätigungsschritt in SendMessageIntent zu überspringen!SiriKit INSendMessageIntent überspringen bestätigen Delegieren


Das ist mein Ziel:

Nach Benutzer Kommentare zu Siri Lösung,

func resolveContent(forSendMessage intent: INSendMessageIntent, with completion: @escaping (INStringResolutionResult) -> Void) { 
    if let text = intent.content, !text.isEmpty { 
     if text == "Login with Touch ID" { 
      completion(INStringResolutionResult.success(with: text)) 
     } else if text == "Change password"{ 
      completion(INStringResolutionResult.success(with: text)) 
     } 
     completion(INStringResolutionResult.disambiguation(with: ["Login with Touch ID", "Change password"])) 
    } else { 
     completion(INStringResolutionResult.disambiguation(with: ["Login with Touch ID", "Change password"])) 
    } 
} 

diesen Schritt "bestätigen" überspringen,

func confirm(sendMessage intent: INSendMessageIntent, completion: @escaping (INSendMessageIntentResponse) -> Void) { 
    // Verify user is authenticated and your app is ready to send a message. 

    let userActivity = NSUserActivity(activityType: NSStringFromClass(INSendMessageIntent.self)) 
    let response = INSendMessageIntentResponse(code: .success, userActivity: userActivity) 

    completion(response) 
} 

Und tun Sie den Griff Delegierten direkt ,

func handle(sendMessage intent: INSendMessageIntent, completion: @escaping (INSendMessageIntentResponse) -> Void) { 
    // Implement your application logic to send a message here. 

    let userActivity = NSUserActivity(activityType: NSStringFromClass(INSendMessageIntent.self)) 
    let response = INSendMessageIntentResponse(code: .success, userActivity: userActivity) 

    completion(response) 
} 

Hoffe, es gibt jemand kann diese Frage für mich beantworten. Danke vielmals!

Antwort

0

Die confirm-Funktion ist optional, Sie müssen sie nicht implementieren, um dem INSendMessageIntentHandling-Protokoll zu entsprechen, nur der handle(intent:completion:) ist erforderlich. Dies zeigt, dass Sie den Bestätigungsteil überspringen können.

Sie sollten nur die confirm Funktion löschen und SiriKit rufen Sie Ihre handle Funktion direkt, ohne die Bestätigung.

+0

Hallo David, danke für die Nachfrage. Ich habe Ihren Weg versucht, um mein Ziel zu erreichen, aber nach dem Löschen bestätigen Funktion bestätigen meine Siri immer noch die Nachricht, die ich sendete. Neben dem Löschen der Bestätigungsfunktion, gibt es einen Teil, den ich verpasst habe? –