通过推送通知启动调试应用程序

我目前正在开发一个应用程序,接收推送通知。我有这一切工作100% 通过一个 PHP 页面。我的应用程序可以接收几种不同类型的推送通知。PHP 处理这个问题,并向我的应用程序发送不同的信息包,这些信息包都收到得很好。

然而,当用户“查看”通知和我的应用程序启动时,我显然想采取不同的行动,如果用户只是手动启动应用程序,我会采取不同的行动-除此之外,不同的行动取决于推送通知类型。我已经把它修好了... 从结构上来说。

我的推送类型之一应该是打开一个 UIView,该 UIView 与几个不同的服务器建立多个连接,并来回协商数据。例如,当从主菜单触发时,这个 UIView 可以正常工作——但是当我的推送通知触发这个 UIView 出现时,套接字连接并没有按照预期的那样工作。

现在我的问题不是关于套接字,而是更重要的是——如何调试这样一个问题? ?据我所知(我是相对较新的) ,当应用程序从推送通知启动时,没有办法将执行链接到调试器/控制台等。.我在尝试使用 UIAlertView 调试代码时遇到了很大的困难,因为在不同的服务器之间有许多来回的通信线路。

如果你能给我任何建议,我将不胜感激。

33497 次浏览

我不使用推送通知,所以我不知道推送通知的确切工作原理。然而,如果可能的话,我会让程序的主方法假装通知已经发布,或者从 applicationDidFinishLaunchingWithOptions: UIApplicationGenerate 方法中调用应用程序来模仿推送通知的接收。

干杯,达恩

在 Xcode < 4.0(对于 Xcode > = 4,请参阅下面的 delirus 回答)中,您现在可以配置 Xcode 在启动应用程序后将调试器附加到应用程序,而不是通过调试器启动应用程序。这使您可以根据应用程序的启动状态进行调试,比如 URL 方案、粘贴板和推送通知。

  1. 在 Xcode 中,在“源”栏中,在“目标”下面是“可执行文件”。
  2. 在可执行文件中调出应用程序的检查器。
  3. 单击检查器中的“调试”选项卡。
  4. 取消选中“启动调试器后启动可执行文件”
  5. 检查“等待下一次启动/推送通知”

现在,当你从 Xcode 中单击 debug 而不是启动应用程序时,会显示一个窗口,告诉你它正在等待应用程序启动。然后,您正常地在手机上启动应用程序,并将 Xcode 附加到它上面

对于 Xcode 4,你必须:

  1. 编辑您的活动方案通过 “计划”下拉列表( + <)
  2. 比选择你的产品-’运行 MyApp.app’在左边。
  3. 在右边选择“信息”标签。
  4. 最后选择“等待” 启动 MyApp.app”选项。

“在方案编辑器中自定义可执行文件”部分提供更多 给你

编辑:
如果您错过了 GDB 中的日志,请参阅 Louis Gerbarg 的 评论对他的回答。

在 Xcode 6中:

  1. 用 USB 连接 iPhone 和 Macbook
  2. 通过点击图标在 iPhone 上启动应用程序
  3. 在 Xcode 菜单中,选择你的应用程序

Xcode 10,9,8,7 & 6:

  1. 在工具栏上选择 Scheme (就在正在进行调试的设备的左侧)
  2. 选择 编辑计划
  3. 在左侧面板中选择 快跑
  4. 对于 发射选项,选择 等待启动可执行文件
  5. 关闭 Scheme Editor 和 快跑您的 Xcode 项目

现在你可以通过通知、自定义网址或触摸应用程序图标进行调试。

对于 Xcode 11和10,可以执行以下操作:

  1. 选择 Scheme 选项。

  2. 选择编辑方案。

  3. 从左侧面板中选择 Run 选项

  4. 在启动部分,选择 等待可执行文件被启动,然后关闭对话框。

  5. 生成并运行项目。您现在可以通过点击应用程序图标或点击通知消息来启动应用程序。