未调用 SiriKit 意图处理程序

Posted

技术标签:

【中文标题】未调用 SiriKit 意图处理程序【英文标题】:SiriKit Intent Handler not being called 【发布时间】:2018-09-25 17:42:43 【问题描述】:

我有一个包含 Siri Intents 的应用程序,它们运行良好。您可以让 Siri 启动应用程序,它会按预期执行操作。我所有的意图都需要在应用程序中发生,所以我没有它们的扩展。

但是,使用快捷方式应用程序时,当我使用快捷方式时,该应用程序只会在我的应用程序中停止而不继续,因此 Siri 没有收到处理程序响应。

现在我的委托将从 NSUserActivity 调用内部的一个动作中打开,我将使用一个自定义类来确定它是哪个快捷方式并执行所述动作。

对于每个操作,我确实有符合 IntentHandler 协议的自定义类,并且我在完成处理程序中调用 .success 响应。

这里我认为我可能弄错了。我在自定义类中手动调用 Handler 协议。

func handleSiri(_ intent: INItent) 
 if intent is ActionIntent 
     func handle(intent: ActionIntent, completion: @escaping (ActionIntent Response) -> Void) 
       let response = DisconnectIntentResponse.init(code: .success, userActivity: nil)
       print("Intent was a success")
       completion(response)
    
  

但是 Siri 永远不会完成。我应该手动调用它吗?我需要让扩展程序调用这些函数吗?

【问题讨论】:

你能找到解决办法吗? 如果您的应用没有使用扩展,则没有回调。如果您询问快捷方式应用程序,只需将操作设置为不需要屏幕 【参考方案1】:

不调用它的唯一原因是您没有将语音意图扩展添加到您的应用目标Build Phase 部分下的dependencies 列表中。

【讨论】:

以上是关于未调用 SiriKit 意图处理程序的主要内容,如果未能解决你的问题,请参考以下文章

付款意图 Sirikit 仍然无法正常工作

SiriKit 意图不适用于本地化

如何在 iOS 10 中使用 Sirikit 自定义 SendPayment 意图的“MoneySent”意图 UI 屏幕

如何为快捷方式应用自定义 SiriKit 意图扩展以请求允许访问?

SiriKit:在 IntentsDefinition 文件中定义的快捷方式未显示在 macOS 的快捷方式应用程序中?

iOS SiriKit:在意图“解决”和“处理”方法之间传递数据