如何获得后台状态下的呼入/呼出事件

在我的一个应用程序中,它具有播放声音的function,我成功​​地取得了成功。 即使应用程序正在运行(前台状态),并且我们收到来电,应用程序音乐也会停止并在呼叫断开时再次恢复。

现在真正的问题在这里。 当应用程序进入后台状态,我们没有收到任何来电/去电事件。 在后台模式如果音乐在我的应用程序内播放,我们得到任何来电,则应用程序音乐自动停止,但不会再次恢复呼叫断开不像iPhone音乐应用程序。

这是iOS的限制还是我们可以实现?

注意:我不想为越狱设备或企业应用程序寻找任何解决scheme

您是否尝试过创build呼叫中心并在AppDelegate类中分配处理程序块? 以下必须工作。

import UIKit import CoreLocation @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? let callCenter: CTCallCenter = CTCallCenter() func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { window = UIWindow(frame: UIScreen.mainScreen().bounds) window?.rootViewController = ViewController() window?.makeKeyAndVisible() callCenter.callEventHandler = { (call: CTCall!) in switch call.callState { case CTCallStateConnected: print("CTCallStateConnected") case CTCallStateDisconnected: print("CTCallStateDisconnected") case CTCallStateIncoming: print("CTCallStateIncoming") default: print("default") } } return true } } 

不要忘记打开背景模式 。 并在背景中执行某些操作,就像接收位置一样。