首页 文章

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

提问于
浏览
125

我目前正在开发一个接收推送通知的应用程序 . 我通过PHP页面100%全部工作 . 我的应用可以接收几种不同类型的推送通知 . PHP处理这个并向我的应用程序发送不同的信息包,这些信息都被收到了 .

但是,当用户“查看”通知并启动我的应用时,我显然想要采取与用户手动启动应用时不同的操作 - 最重要的是,根据推送通知类型执行不同的操作 . 我在结构上做得很好......

我的推送类型之一应该打开一个UIView,它与几个不同的服务器 Build 多个连接并来回协商数据 . 例如,当从主菜单触发时,此UIView工作正常 - 但是当我的推送通知触发此UIView出现时,套接字连接未按预期运行 .

现在我的问题不是关于套接字,而是更多 - 如何调试这样的问题?从我所知道的(我相对较新)当应用程序从推送通知启动时,没有办法将该执行链接到调试器/控制台/等...我正在尝试使用调试代码进行调试时非常困难UIAlertViews,因为在各种服务器之间来回通信很多 .

您对我的任何建议将不胜感激 .

5 回答

  • 120

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

    • 在Xcode中查看源栏,在目标下面会有可执行文件 .

    • 在可执行文件中打开应用程序的检查器 .

    • 单击检查器中的“调试”选项卡选项卡 .

    • 取消选中"Start executable after starting debugger"

    • 检查"Wait for next launch/push notification"

    现在,当您从Xcode单击调试而不是启动应用程序时,将显示一个窗口,告知它正在等待应用程序启动 . 然后,您可以在手机上正常启动应用程序,并将Xcode连接到它

  • 3

    对于Xcode 4,你必须:

    • 通过"Schemes"下拉列表编辑您的活动方案 . (⌘<)

    • 比选择您的产品 - 左侧的'Run MyApp.app' .

    • 选择右侧的'Info'标签 .

    • 最后选择"Wait for MyApp.app to launch"选项 .

    更多here在"Customize Executables in the Scheme Editor"部分 .

    EDIT:
    如果您错过了GDB中的日志,请参阅Louis Gerbarg的comment给他的回答 .

  • 95

    For XCode 10, 9, 8, 7 & 6:

    工具栏上的

    • Select the Scheme (在您正在调试的设备的左侧)

    • 选择 Edit Scheme

    • 在左侧面板中选择 Run

    • 对于 Launch 选项,选择 Wait for executable to be launched

    • 关闭Scheme Editor和 Run 您的XCode项目

    现在,您可以在从通知,自定义URL或触摸应用程序图标启动时进行调试 .

  • 3

    我不使用推送通知,所以我不知道推送通知的确切工作 . 但是,我尝试通过让程序的main方法假装在可能的情况下发布通知,或者在applicationDidFinishLaunching:方法中调用应用程序:didFinishLaunchingWithOptions:UIApplicationDelegate方法来模仿接收推送通知 .

    HTH - 干杯,大安

  • 143

    在Xcode 6中:

    • 用iPhone连接iPhone到Macbook

    • 点击图标,在iPhone上启动应用程序

    • 在Xcode菜单中, Debug > Attach to Process >选择您的应用程序

相关问题