繁体   English   中英

如何在后台状态下获取传入/传出呼叫事件

[英]How to get incoming/outgoing call event in background state

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

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

它是iOS的限制还是我们能实现这一目标?

注意:我不是在寻找越狱设备或企业应用程序的任何解决方案

您是否尝试在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

    }

}

不要忘记为此启用背景模式 并在后台执行某些操作,就像接收位置一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM