【问题标题】:How to get incoming/outgoing call event in background state如何在后台状态下获取来电/去电事件
【发布时间】:2016-12-06 08:59:38
【问题描述】:

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

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

这是 iOS 的限制还是我们可以做到这一点?

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

【问题讨论】:

  • 您找到了任何解决方案吗?如果有,我可以请您发布吗?
  • 不,我还没有找到任何解决方案。
  • 那你是怎么做的?

标签: ios swift core-telephony


【解决方案1】:

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

    }

}

不要忘记为此打开后台模式。并在后台执行一些操作,比如接收位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多