Swift: AVAudioSession.interruptionNotification 처리 (사운드 재생 중 전화벨, 알람 등이 울렸을 때 처리)

사운드 재생 중 전화벨, 알람 등이 울렸을 때 해야 될 작업은 어떻게 처리할까요? 뷰 컨트롤러에 아래 코드를 추가합니다.

import UIKit
import AVFAudio

class MainTabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // NotificationCenter 옵저버 등록
        NotificationCenter.default.addObserver(self, selector: #selector(didInterrupted), name: AVAudioSession.interruptionNotification, object: AVAudioSession.sharedInstance())
    }
    
    @objc func didInterrupted(notification: Notification) {
        guard let userInfo = notification.userInfo,
              let typeKeyRaw = userInfo[AVAudioSessionInterruptionTypeKey],
              let typeKey = AVAudioSession.InterruptionType(rawValue: typeKeyRaw as! UInt) else {
            simpleAlert(self, message: "typeKey is nil")
            return
        }
        
        if typeKey == .began {
            // .began: 전화, 알람 등의 외부 사운드가 발생하기 시작했을 때 할 작업 처리
        } else {
            // .ended: 전화, 알람 등의 사운드가 끝났을 때 할 작업 처리
        }
    }
}

문의 | 코멘트 또는 yoonbumtae@gmail.com


카테고리: Swift


0개의 댓글

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다.

계산결과를 입력해주세요 (스팸댓글 방지용) × 3 = 24