【问题标题】:how to handle ios call interruptions in background如何在后台处理ios调用中断
【发布时间】:2011-10-20 21:07:53
【问题描述】:

我可以在前台应用程序中使用 beginInterruption 和 endInterruption 处理通话中断,但是当我的应用程序在后台时,我应该如何处理通话中断?

【问题讨论】:

  • 我有一个录音应用程序。因此,当我在后台录制音频时,当有来电时,我可以保存文件并停止录制。但是,在后台,应用程序崩溃了。我无法承受来电时丢失记录的数据。

标签: ios background call interruptions


【解决方案1】:

据我了解 iOS 中的后台处理,当您的应用程序进行后台处理时,呼叫中断不适用。如果您的应用未注册任何后台处理,那么它肯定不会收到任何通知/中断。

【讨论】:

  • 后台处理是指plist文件中“应用程序在后台运行”的条目。我已经为我的应用注册了背景音频。应该有一些通知/中断应用程序的方法,否则应用程序将崩溃(而且我不能丢失记录的数据)。
  • 有关录音的信息对于回答您的问题至关重要。所以只是仔细检查一下:你正在使用AVAudioRecorder 类,所以你应该设置一个AVAudioRecorderDelegate 来接收通知,例如对于中断的呼叫。我相应地更新了我的答案。
  • 从您的原始帖子中可以看出,您似乎正在使用委托方法,但在后台没有调用它们,对吗?还是它们被调用并且您的应用在委托方法中崩溃?
  • 我正在使用音频队列进行录制(不是 AVAudioRecorder 类)。当应用程序进入后台时调用的唯一委托是应用程序的委托方法,即 ApplicationDidEnterBackground 和返回到前台时的 ApplicationDidBecomeActive。我正在这些功能中进行某些处理,但是当我的应用程序在后台运行时,我想要的是任何警报/短信/呼叫的中断或通知。由于我还没有任何这些通知,因此我的应用程序在被中断时不知道该怎么做,所以它在录制过程中崩溃了。
  • 您说呼叫中断不适用于后台处理。苹果的文档中是这样说的吗?那么应用程序应该做什么呢?如果来电/短信/警报来电时,用户的数据(录音)丢失,这是不可接受的,是吗?
【解决方案2】:

具有寻找中断状态的中断处理程序是 kAudioSessionBeginInterruption 和 kAudioSessionEndInterruption。这应该可以解决问题。

在此处理程序内进行任何处理(用于中断处理)。

【讨论】:

  • 委托方法工作正常,但如何重新激活音频会话,面临问题,有什么想法@Namratha?
猜你喜欢
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
相关资源
最近更新 更多