통화 상태에 따라 단추 상태를 변경하려고합니다. 여기에서 코드를 사용하여 통화 상태를 감지했습니다. How to get a call event using CTCallCenter:setCallEventHandler: that occurred while the app was suspended?iOS 백그라운드에서 통화 상태를 감지하는 방법은 무엇입니까?
앱이 포 그라운드에있을 때 제대로 작동합니다. 그러나 그것은 백그라운드에서 전혀 작동하지 않습니다. 응용 프로그램이 활성 상태를 다시 시작하면, 그것은 국가에 상관없이 많은 상태 응용 프로그램이 일시 중단 된 상태에서 전화가 경험 변경 방법 변경되지 각각의 호출에 대해 하나의 전화 이벤트를 수신
:
CTCallCenter.callEventHandler
에 대한 문서에서. 처리기로 전송 된 단일 통화 이벤트는 응용 프로그램이 활성 상태로 돌아 오면 해당 시간의 통화 상태를 나타냅니다.
하지만 앱을 다시 시작할 때 통화 이벤트가 표시되지 않습니다. 앱이 포 그라운드에있을 때 마지막으로 저장된 통화 상태입니다. 백그라운드에서 통화 상태를 검색하려면 어떻게합니까?
여기 내 코드입니다 :
AppDelegate.swift
let callСenter = CTCallCenter()
func block (call:CTCall!)
{
callState = String(call.callState)
print(call.callState)
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
{
//check for call state
callСenter.callEventHandler = block
...
return true
}
ViewController.swift
마지막으로override func viewDidLoad()
{
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(cameBackFromSleep),
name: NSNotification.Name.UIApplicationDidBecomeActive,
object: nil
)
...
}
func cameBackFromSleep()
{
self.viewWillAppear(true)
}
override func viewWillAppear(_ animated: Bool)
{
switch callState
{
case "CTCallStateConnected":
print("callState: ", callState)
self.textLabel.isHidden = true
startBtnAnimation()
case "CTCallStateDisconnected":
print("callState: ", callState)
self.textLabel.center.y += self.view.bounds.height
self.textLabel.isHidden = false
stopBtnAnimation()
default: break
}
}