我一直在 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)
}
希望有人能为我回答这个问题。非常感谢!
答案 0 :(得分:0)
confirm
函数是可选的,您不需要实现它以符合INSendMessageIntentHandling
协议,只需要handle(intent:completion:)
。这表明您可以跳过确认部分。
您应该删除confirm
功能,SiriKit
会直接致电您的handle
功能,而无需确认。
答案 1 :(得分:0)
@DávidPásztor回答。
不实现confirm
功能。
不要在YourXX.intentdefination中检查User confirmation required
并且您必须先删除之前的快捷方式然后再阅读。