问题
I wanted to see if a user was using the application and to see if they were in a phone call or not. I was following this link to see check if a user was in a phone call or not: iOS How to check if currently on phone call. However, this looks like it's for Objective-C. I was wondering if there was a Swift equivalent for this. This is my attempt:
var currCall = CTCallCenter()
var call = CTCall()
for call in currCall.currentCalls{
if call.callState == CTCallStateConnected{
println("In call.")
}
}
However, it doesn't seem as if call has an attribute .callState
like how it does in the previous example. Any help would be appreciated! Thanks!
回答1:
Update for Swift 2.2: you just have to safely unwrap currCall.currentCalls
.
import CoreTelephony
let currCall = CTCallCenter()
if let calls = currCall.currentCalls {
for call in calls {
if call.callState == CTCallStateConnected {
print("In call.")
}
}
}
Previous answer: you need to safely unwrap and to tell what type it is, the compiler doesn't know.
import CoreTelephony
let currCall = CTCallCenter()
if let calls = currCall.currentCalls as? Set<CTCall> {
for call in calls {
if call.callState == CTCallStateConnected {
println("In call.")
}
}
}
回答2:
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
}
回答3:
Or, shorter (swift 5.1):
private var isOnPhoneCall: Bool {
return CXCallObserver().calls.contains { $0.hasEnded == false }
}
来源:https://stackoverflow.com/questions/29915724/find-if-user-is-in-a-call-or-not