2017-08-15 2 views
1

J'ai travaillé sur SiriKit pendant un moment, et le résultat de ma démo n'a pas été satisfait par mon patron. En lisant tous les documents Apple & fait de mon mieux pour rechercher en ligne, je ne trouve toujours pas un moyen d'ignorer l'étape de confirmation dans SendMessageIntent!SiriKit INSendMessageIntent skip confirmation délégué


Ceci est mon but:

Après avoir résolu les commentaires des utilisateurs à Siri,

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"])) 
    } 
} 

Passer cette étape "confirmer",

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) 
} 

Et faire le délégué de la poignée directement ,

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) 
} 

J'espère que quelqu'un peut répondre à cette question pour moi. Merci beaucoup!

Répondre

0

La fonction confirm est facultative, vous n'avez pas besoin de l'implémenter pour pouvoir se conformer au protocole INSendMessageIntentHandling, seul le handle(intent:completion:) est requis. Cela montre que vous pouvez ignorer la partie de confirmation.

Vous devez simplement supprimer la fonction confirm et SiriKit va appeler directement votre fonction handle, sans la confirmation.

+0

Bonjour David, merci de demander. J'ai essayé votre chemin pour atteindre mon objectif, mais après avoir effacé la fonction de confirmation, mon Siri confirme encore le message que j'ai envoyé. Outre la suppression de la fonction de confirmation, y a-t-il une partie que j'ai ratée? –