【问题标题】:Debug Notification Extensions调试通知扩展
【发布时间】:2016-11-03 13:20:14
【问题描述】:

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

有什么方法可以查看任何类型的输出吗?

【问题讨论】:

    标签: ios xcode apple-push-notifications ios10 xcode-debugger


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!在花了几个小时试图让它发挥作用后,这对我来说是个问题。
    【解决方案2】:

    在我的情况下(Xcode 11.1)调试在这些步骤之后开始:

    1. 使用主应用运行通知扩展目标
    2. 将应用切换到后台
    3. 锁定手机!
    4. 向设备发送推送

    【讨论】:

      【解决方案3】:

      对我有用的唯一方法是查看日志。我使用 xcode 10.1。日志可从窗口 -> 设备和模拟器 -> 选择您的设备 -> 单击“打开控制台”。 这样我也可以看到来自扩展的日志。

      【讨论】:

        【解决方案4】:

        这对我来说可以在扩展中的断点处停止并查看扩展日志:

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

        【讨论】:

        • 嗨,Manuel,我已按照您的指南进行操作,但我仍然遇到此 Message from debugger: Terminated due to signal 9 错误。而且我确定我已经手动终止了我的主应用程序。你对此有什么想法吗?这会受到后台刷新的影响吗?主应用进程还活着吗?
        • @Neal.Marlin 我看不出它会受到后台刷新影响的任何原因。在这一点上,我建议您按照我的答案中的步骤顺序进行一些操作。它似乎对每个人都有不同的作用,也许还没有人真正想出适合每个人的正确步骤。
        • @Neal.Marlin 请参阅我的第 3 步更新:尽量不要在设备上手动终止应用程序,它对我有用,也许对你有用。
        • 最后发现是我的项目配置有问题。切换到另一个目标后,我的项目有三个不同配置的目标,它可以工作。
        【解决方案5】:

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

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

        2. 从 XCode 停止应用程序。

        3. 一键发送。

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

        5. 发送另一个推送。

        【讨论】:

          【解决方案6】:

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

          现在在调试导航器中你可以看到NES进程并且你可以成功调试了。

          【讨论】:

            【解决方案7】:

            不确定这是否会有所帮助,但我们有同一个应用的多个版本(alpha、beta 等)。尝试调试时不断收到“无权附加”错误。打开进程列表,我注意到有 2 个名为 notification-extension 的进程,所以 xcode 必须默认为另一个构建中的一个。通过手动选择正确的版本,或从我的手机中删除其他版本,事情又开始工作了。

            【讨论】:

            • 嗨,乔希。能否请您告诉我如何打开进程列表,我只是不知道如何监控手机上运行的进程。
            【解决方案8】:

            我已经按照 Brendan 的回答进行了尝试,但根本不适合我!

            我在控制台中遇到以下错误

            Program ended with exit code: 0
            

            然后在谷歌上搜索后我检查了this answer。但是,这对我也不起作用!

            然后,在停止当前正在运行的应用程序之后,我再次尝试了与答案中相同的步骤。然后按照相同的步骤。为了清楚起见,我将这些步骤写如下:

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

            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
            

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

            【讨论】:

            • 在我的情况下,这个程序以退出代码结束:0 2)通过 PID 或名称选择调试/附加到进程:不清楚这一步你能解释一下吗?
            • @Bucket 点击顶部菜单中的调试 -> 然后附加到进程,然后按照步骤 2、3、4
            • 有趣的是,在我的情况下,我首先尝试了这种方法(按名称附加),但我得到一个错误,说我的用户无权附加到我的扩展进程。选择运行扩展程序的目标确实有效......所以如果人们有问题,请尝试两者。
            • 工作了几次,之后我得到'因信号 9 而终止'...
            【解决方案9】:

            更改目标以运行扩展程序

            然后选择运行并从“选择要运行的应用程序:”窗口中选择您的应用程序。

            【讨论】:

            • @brenden :我收到“程序以退出代码结束:0”
            • 这也适用于我使用 FileProvider 扩展选择 Files 应用程序,尽管在调试开始之前我必须在 Files 中实际输入我的文件提供程序。
            猜你喜欢
            • 2022-10-07
            • 1970-01-01
            • 2023-04-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多