如何调试我的Siri(Intents)扩展?

14

我正在构建一个Siri意图扩展(Intents extension)

我知道可以在启动后将调试器附加到正在运行的进程,但是我从未看到我的进程。我的应用程序授权已设置为激活状态,并且该扩展至少需要运行一段时间,Siri正在显示清晰的响应。

根据苹果文档,你应该使用Siri作为宿主应用程序来运行扩展计划。然而,如果我尝试这样做,在设备上什么也没有发生,等待附加永远不会结束。苹果提到第一次连接可能需要"几分钟",但不是几个小时...

有什么想法或者如何实现与调试器的连接?或者输出一些控制台信息?

4个回答

19

2
这可能是正确的开始方式 - 至少现在有一些部分可以工作。但我仍然无法调试 - 我正在使用此设置调试主机应用程序,而不是扩展! - dogsgod
在开始调试之前,您需要按PID或名称附加到进程。至少在Xcode 8 beta 4的日子里,这似乎有效。请在调试前输入您的扩展名。 - dogsgod
您还可以使用Siri意图查询编辑您的Intent扩展方案,以避免每次需要调试时都要与手机交谈。 - Sarp Başaraner

9
  1. 首先在设备上运行您的应用程序。

  2. 选择“SIRIKIT”扩展方案,在设备上运行,从提示列表中选择您的应用程序。

  3. 等待SIRI处于活动状态,将正在运行的SIRIKIT扩展发送到后台。(有时您不需要执行此步骤)。

  4. 再次按 home 按钮激活 SIRI,给出指令,您将看到 Intent Handler 中的断点正在工作。


1
在第二步中,当我从列表中选择我的应用而不是Siri时,它只会启动我的应用程序,而不会启动Siri。 - User
我也遇到了同样的问题,只是启动了应用程序 - 我的处理程序从未运行。它在扩展的 plist 中列出为处理程序。我的断点永远不会触发,并且打印语句永远不会打印。 - powerj1984

0

在我的情况下,使用的是Xcode 13.X和iOS15

  1. 将目标更改为您的意图扩展

  2. 运行扩展并选择您的应用程序

    enter image description here

  3. 应用程序启动后,触发您的快捷方式(您可以使用Siri或只需点击快捷方式)

  4. 您将看到您的断点在意图处理程序内起作用

enter image description here


-1

我尝试了所有的方法,但都没有成功,我认为这是因为我的Mac太旧了(2010年),无法处理。

这是一种非常hack的解决方案来进行调试,但它确实有效。

使用此网站https://webhook.site创建一个Webhook。

然后,如果您想检查代码是否在某个时刻运行,请添加以下代码: (不要忘记更改URL为您收到的Webhook相同的URL)

let url1 = URL(string: "https://webhook.site/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/your_code_was_here")!
let task1 = URLSession.shared.dataTask(with: url1)
task1.resume()

然后你只需要再次查看Webhook网站,以查看GET请求是否到达。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接