Things take time

[iOS 14] Detect Phone Call => non-intrusive 전화 감지 방법 본문

iOS (기능)

[iOS 14] Detect Phone Call => non-intrusive 전화 감지 방법

겸손할 겸 2020. 10. 13. 16:07

[개요]

iOS 14 이전의 경우 앱의 화면을 전체를 차지하기 때문에, 백그라운드 이벤트 및 포어그라운드 이벤트를 옵저버로 등록하여 감지할 수 있었으나, 14가 업데이트 되면서 non-intrusive phone call이 되어, 화면을 덮지 않는 것으로 변경되었다.

 

이에 따라 대응이 필요한 경우 아래와 같이 사용하자.

 

기본적으로 14 phone call은 backGround는 그대로 돌아가지만, 사운드가 사라지게 되므로 이를 사용하는 것이다.

 

참고로 해당 옵저버는 사용자가 집접 사운드를 컨트롤할 때는 호출되지 않으므로 그에 대한 걱정은 필요 없다.

 

[코드]

NotificationCenter.default.addObserver(self, selector: #selector(receiveSoundInterruption), name: NSNotification.Name.AVAudioSessionInterruption, object: nil)
@objc func receiveSoundInterruption(notification: NSNotification){
        print("--------- receiveSoundInterruption")
        guard let value = (notification.userInfo?[AVAudioSessionInterruptionTypeKey] as? NSNumber)?.uintValue,
            let interruptionType =  AVAudioSessionInterruptionType(rawValue: value) else {
                return
            }
        switch interruptionType {
        case .began:
        break
        case .ended:
        break
        }
    }