调试通知扩展

dog*_*god 32 xcode apple-push-notifications ios ios10 xcode-debugger

我正在构建一组通知扩展(服务/内容).我无法连接到Xcode调试器,甚至无法注销设备日志或控制台.

有没有办法看到任何类型的输出?

bre*_*dan 48

更改目标以运行扩展

改变目标

然后选择运行并从"选择要运行的应用程序:"窗口中选择您的应用程序.

在此输入图像描述

  • @brenden:我收到"程序以退出代码结束:0" (4认同)

Sau*_*ati 30

我按照brendan的答案尝试过,但根本不适合我!

我在控制台中遇到错误

Program ended with exit code: 0
Run Code Online (Sandbox Code Playgroud)

然后在谷歌搜索后,我已经检查了 这个答案.然而这对我来说也没有用!

然后我再次尝试了相同的步骤,在回答中,停止我当前正在运行的应用程序.然后按照相同的步骤.为了清楚起见,我正在编写以下步骤:

运行包含扩展程序的应用程序后,

1) Set your breakpoint in the extension
2) Select Debug / Attach to Process by PID or name
3) Enter the name of the extension target
4) Trigger the push notification
Run Code Online (Sandbox Code Playgroud)

在第2步之前,请确保停止当前正在运行的应用.

  • 有趣的是在我的情况下,我首先尝试了这种方法(通过名称附加),我只是得到一个错误,说我的用户没有权限附加到我的扩展程序.选择运行扩展的目标确实有效......所以如果人们遇到问题,请尝试两者. (3认同)

Man*_*uel 8

这有助于我在扩展中的断点处停止并查看扩展日志:

  1. 选择通知扩展方案,而不是主应用方案
  2. 运行应用程序并从列表中选择主应用程序 Choose an app to run
  3. 在Xcode中停止应用程序在设备上手动终止它; Message from debugger: Terminated due to signal 9在步骤6之后,不会手动终止它.[ 更新:在设备上手动终止应用程序似乎没有必要,如果它不起作用,请尝试任何一种方式.]
  4. 选择菜单 Debug > Attach to Process by PID or Name
  5. 输入正确的扩展名,而不是主应用名
  6. 发送推送通知

  • 最终,我发现我的项目配置有些问题。切换到另一个目标后,我的项目将具有三个配置不同的目标,它可以正常工作。 (2认同)

Vla*_*hev 7

就我而言,上述所有方法都有一些错误。重点是,您需要发送一次推送,然后通过调试器连接,然后发送推送以进行调试。所以,完整列表:

  1. 启动应用程序(不是扩展程序)。

  2. 从 XCode 停止应用程序。

  3. 发送一键。

  4. 通过“按 PID 或名称附加到进程...”连接到您的扩展进程。

  5. 发送另一个推送。


小智 5

通知服务扩展(NSE)实际上不是您的应用程序的一部分,而是说它具有与您的应用程序不同的进程ID(PID)的扩展。您可以转到“调试”选项卡,让XCode监听电话上的每个进程,向下滚动到“附加到进程”,然后查看您的NSE是否列在“喜欢的目标”下。如果不存在,则尝试向设备推送另一个推送通知,并在设备出现时附加到它。

在此处输入图片说明

现在,在调试导航器中,您可以看到NES进程,并且可以成功对其进行调试。

在此处输入图片说明


Hit*_*esh 5

如果您已经尝试了上述所有解决方案,但仍然摸不着头脑,想知道为什么断点 point 没有被调用。然后尝试检查deployment target您的操作系统extension应该小于或等于您的设备操作系统。

对我来说,部署目标高于设备操作系统。