SiriKit INSendMessageIntent跳过确认代表

时间:2017-08-15 07:02:48

标签: ios swift message sendmessage sirikit

我一直在 SiriKit 工作一段时间,我的老板不满意我的演示结果。 通过阅读所有Apple文档&尽我所能在网上搜索,我仍然找不到跳过SendMessageIntent确认步骤的方法!

这是我的目的:

将用户评论解析为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"]))
    }
}

跳过此步骤“确认”,

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

直接执行句柄委托,

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

希望有人能为我回答这个问题。非常感谢!

2 个答案:

答案 0 :(得分:0)

confirm函数是可选的,您不需要实现它以符合INSendMessageIntentHandling协议,只需要handle(intent:completion:)。这表明您可以跳过确认部分。

您应该删除confirm功能,SiriKit会直接致电您的handle功能,而无需确认。

答案 1 :(得分:0)

@DávidPásztor回答。

不实现confirm功能。 不要在YourXX.intentdefination中检查User confirmation required

并且您必须先删除之前的快捷方式然后再阅读。