通过推送通知启动时debugging应用程序

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

但是,当用户“查看”通知和我的应用程序启动时,我显然希望采取与用户刚刚手动启动应用程序的操作不同,并根据推送通知types采取不同的操作。 我有这个工作很好…在结构上。

我的一个推式types应该是打开一个UIView,它与几个不同的服务器进行多个连接并来回地协商数据。 这个UIView工作正常,例如,从主菜单触发 – 但是当我的推送通知触发此UIView出现时,套接字连接不按预期行事。

现在我的问题不是关于套接字,而是更多 – 你怎么debugging这样的问题? 从我可以告诉(我相对较新),当从推送通知启动的应用程序无法将该执行链接到debugging器/控制台/等等…我有一个非常困难的时间试图debugging代码UIAlertViews,因为在各种服务器之间有许多来回的通信线路。

任何build议你对我来说将不胜感激。

在XCode <4.0(对于XCode> = 4,请参阅下面的delirus的回答)中,现在可以configurationXcode在启动后将debugging器附加到应用程序,而不是通过debugging器启动应用程序。 这使您可以根据应用程序的启动状态debugging不同的事件,例如URLscheme,粘贴板和推送通知。

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

现在,当你点击从Xcodedebugging,而不是启动应用程序时,窗口将显示告诉它正在等待应用程序启动。 然后,您通常在手机上启动应用程序,Xcode附加到它

对于Xcode 4,你必须:

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

在“在configuration编辑器中自定义可执行文件”部分的更多信息。

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

对于XCode 9,8,7和6:

  1. 在工具栏上selectScheme (您正在debugging的设备的左侧)
  2. select编辑计划
  3. 在左侧面板中select运行
  4. 对于启动选项,请select等待可执行文件启动
  5. closuresScheme编辑器并运行你的XCode项目

现在,您可以从通知,自定义url或通过触摸应用程序图标进行debugging。

我没有使用推送通知,所以我不知道推送通知的确切工作。 然而,我试着模仿接收推送通知,让你的程序的主要方法假装通知被发布,如果可能的话,或从applicationDidFinishLaunching:方法调用应用程序:didFinishLaunchingWithOptions:UIApplicationDelegate方法。

HTH – 干杯,大安

在Xcode 6中:

  1. 用USB将iPhone连接到Macbook
  2. 通过点击图标在iPhone上启动应用程序
  3. 在Xcode菜单中, Debug > Attach to Process >select您的应用程序