查找用户是否在通话中?

Find if user is in a call or not?

我想查看用户是否在使用该应用程序,并查看他们是否在 phone 通话中。我正在关注此 link 以查看是否有用户在 phone 通话中:iOS How to check if currently on phone call。但是,这看起来像是 Objective-C。我想知道是否有 Swift 等价物。这是我的尝试:

    var currCall = CTCallCenter()
    var call = CTCall()

    for call in currCall.currentCalls{
        if call.callState == CTCallStateConnected{
            println("In call.")
        }
    }

但是,call 似乎不像上一个示例那样具有属性 .callState。任何帮助,将不胜感激!谢谢!

Swift 2.2 的更新:您只需安全地解包 currCall.currentCalls

import CoreTelephony
let currCall = CTCallCenter()

if let calls = currCall.currentCalls {
    for call in calls {
        if call.callState == CTCallStateConnected {
            print("In call.")
        }
    }
}

上一个答案:您需要安全地解包 来告诉它是什么类型,编译器不知道。

import CoreTelephony
let currCall = CTCallCenter()

if let calls = currCall.currentCalls as? Set<CTCall> {
    for call in calls {
        if call.callState == CTCallStateConnected {
            println("In call.")
        }
    }
}

iOS10,Swift3

import CallKit

/**
    Returns whether or not the user is on a phone call
*/
private func isOnPhoneCall() -> Bool {
    for call in CXCallObserver().calls {
        if call.hasEnded == false {
            return true
        }
    }
    return false
}

或者更短的 (swift 5.1):

private var isOnPhoneCall: Bool {
    return CXCallObserver().calls.contains { [=10=].hasEnded == false }
}