Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 查找用户是否在通话中?_Ios_Swift_Phone Call - Fatal编程技术网

Ios 查找用户是否在通话中?

Ios 查找用户是否在通话中?,ios,swift,phone-call,Ios,Swift,Phone Call,我想看看用户是否在使用该应用程序,以及他们是否在打电话。我通过此链接查看是否有用户在打电话:。然而,这看起来像是针对Objective-C的。我想知道是否有类似的Swift。这是我的尝试: var currCall = CTCallCenter() var call = CTCall() for call in currCall.currentCalls{ if call.callState == CTCallStateConnected{

我想看看用户是否在使用该应用程序,以及他们是否在打电话。我通过此链接查看是否有用户在打电话:。然而,这看起来像是针对Objective-C的。我想知道是否有类似的Swift。这是我的尝试:

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

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

然而,调用似乎不像上一个示例中那样具有属性
.callState
。任何帮助都将不胜感激!谢谢

Swift 2.2更新:您只需安全地打开
currccall.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.")
        }
    }
}
导入核心电话
让currCall=CTCallCenter()
如果let calls=currCall.currentCalls as?设置{
打电话进来{
如果call.callState==CTCallStateConnected{
println(“通话中”)
}
}
}

iOS 10,Swift 3

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):


在设备上运行时,您面临的问题是什么?您是否面临警告或错误之类的构建问题?@Sam我无法编译代码。上面for循环中的对象
call
无法识别
.callState
属性。我想您可以在第一行将
.currentCalls
强制转换为
Set
,而不是单独强制转换每个调用。似乎很有希望!谢谢。这是不推荐的。CTCallCenter类/api是不推荐的,因为iOS 10即使本应侦听的应用程序被禁用,也可以侦听此事件吗?您好,如果我想检查是否显示incomming call,如何执行此操作?谢谢,如果我想检查是否有来电显示,怎么做?Thanksalways get call.hasend==false如果关闭应用程序,打开应用程序,则hasend=true
private var isOnPhoneCall: Bool {
    return CXCallObserver().calls.contains { $0.hasEnded == false }
}