1

我有一个 ios 应用程序,它从手机麦克风获取音频,实时对麦克风数据进行一些处理并将结果发送到耳机

在项目 -> 功能 -> 背景模式中,我选择了音频、AirPlay 和画中画

我希望应用程序在后台(用户按下主页按钮)和使用​​锁定按钮锁定手机屏幕时继续读取麦克风数据并将音频发送到耳机

所有这一切都在发生,所以我认为应用程序权限没有任何问题,但我注意到应用程序在后台运行后,它突然被杀死,通常不到一分钟

我设法在 xcode 控制台的后台捕获了一个应用程序实例被杀死,消息是

Message from Debugger: terminated due to signal 9  

在谷歌中环顾四周表明这仅仅意味着该应用程序被操作系统使用 SIGKILL 销毁

有什么方法可以找出应用程序被杀死的原因吗?让应用程序在后台长时间运行是不可能的吗?在我启用Audio, AirPlay and Picture in Picture背景模式之前,一旦我按下主页按钮或屏幕锁定按钮,音频就会停止。我假设由于当我按下主页按钮时音频继续运行,这意味着我确实能够在需要时在后台运行麦克风/扬声器,并且有音乐播放器和录音机应用程序在后台工作直到用户专门关闭它们。

我怎样才能找出我的应用程序自动关闭的确切原因,以及我可以做些什么来让它无限期地在后台运行,直到用户关闭它?

4

1 回答 1

2

通过 xcode 安装应用程序后,正常运行它(而不是在 xcode 中运行),让它崩溃。然后连接手机,进入xcode -> Window -> Devices and Simulators -> View Device Logs。然后找到最近的崩溃。

你的特殊问题对我来说听起来像是过度使用 CPU。后台应用程序不能长时间(大约一分钟)使用超过 80% (IIRC) 的设备 CPU,否则将被系统杀死。如果这是您的情况,您只需要优化代码以不占用 CPU。

于 2019-01-08T09:04:55.833 回答