【问题标题】:iOS kills CallKit VoIP app working in background in one minuteiOS在一分钟内杀死CallKit VoIP应用程序在后台工作
【发布时间】:2016-11-17 07:42:10
【问题描述】:

我有一个 VoIP 应用程序,它使用 CallKit 和 PushKit。 当应用程序关闭并且 iOS 收到推送通知时,应用程序已在后台模式下被唤醒,它通过 CallKit 接听电话,一切正常,大约持续 50 秒。 之后,iOS 使用信号 9 杀死应用程序。 我选择了下一个后台模式:audiovoip,但 iOS 想要更多的东西来继续无限的后台任务。

为了防止我的应用被系统杀死,我忘了做什么?

附:当我在前台调用我的应用程序时,通话会持续数小时。那么就不是内存压力是app被杀的原因了。

【问题讨论】:

    标签: ios iphone background voip callkit


    【解决方案1】:

    在开发者帐户上创建 VoIP 证书后,在后台模式下启用以下字段

    1] Audio and Airplay
    2] Voice over IP
    3] Background fetch
    4] Remote notifications
    

    【讨论】:

      【解决方案2】:

      唤醒后需要调用[UIApplication beginBackgroundTaskWithExpirationHandler]

      【讨论】:

      • 谢谢,但我不需要运行任何有限长度的任务,我已经找到了问题的原因。
      • 能告诉我原因吗?
      【解决方案3】:

      我希望您已授予如下屏幕的权限。

      iOS 使用信号 9 终止应用,这是由于内存泄漏或内存使用率低造成的。

      你可以用仪器检查。

      【讨论】:

        【解决方案4】:

        我在阅读调试控制台时发现,我的应用在后台接听电话时使用了 90% 以上的 CPU。 这就是 iOS 杀死我的应用的原因。

        【讨论】:

        • 那么,您的解决方案是什么?
        • 嗨@adnako,我使用CallKit,当用户在后台接听电话时,总是没有,但有时苹果会用信号9杀死我的应用程序,你找到任何解决方案了吗?我在后台只使用了 5% 的 CPU..
        • 嗨@Steven,很遗憾,我不再从事这个项目了,您是否使用 Instruments 来检查您的应用程序是否也没有使用大量内存?或者它可能在主线程中冻结?
        • @adnako,是的,我检查了,它使用的内存很少,唯一使用非常高的能量,但对于 Voip 应用程序来说这是正常的,因为它使用网络。
        • @Steven,对不起,我不知道。您是否为 TestFlight 构建了应用程序以在 iPhone 设置中获取崩溃日志?
        【解决方案5】:

        您使用的是原始版本的预构建吗?该版本有一个 WebRTC 错误,稍后修复。它会导致纯语音呼叫 (issue5506) 的 CPU 使用率过高。切换到 WebRTC pod 来解决这个问题 (https://cocoapods.org/pods/WebRTC)。

        迁移到 WebRTC pod 比更改依赖项需要更多时间,因为 API 发生了一些变化。不过变化不大,所以一两天内就可以了。在任何情况下,切换到官方 pod 都是可行的方法,因为不再维护从原始的构建。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-05-15
          • 1970-01-01
          • 2015-07-14
          • 1970-01-01
          • 1970-01-01
          • 2021-03-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多