[swift] MediaPlayer 이벤트 처리하기

iOS 앱을 개발할 때 음악이나 동영상을 재생하는 기능은 핵심적인 기능 중 하나입니다. MediaPlayer를 사용하여 음악이나 동영상을 재생할 때 발생하는 이벤트를 처리하는 것은 고려해야 할 중요한 부분입니다. 이 글에서는 Swift를 사용하여 MediaPlayer 이벤트를 처리하는 방법에 대해 알아보겠습니다.

1. MediaPlayer Framework 추가

먼저, MediaPlayer를 사용하기 위해 프로젝트에 MediaPlayer Framework를 추가해야 합니다. Xcode에서 프로젝트를 선택한 후, Build Phases로 이동하여 Link Binary with Libraries를 클릭하고 + 버튼을 눌러 MediaPlayer를 추가하십시오.

2. MediaPlayer 이벤트 처리하기

MediaPlayer를 사용하여 음악이나 동영상을 재생할 때, 해당 미디어의 상태 변화에 따라 이벤트를 처리할 수 있습니다. 예를 들어, 음악 트랙이 변경되거나 재생이 시작되거나 멈출 때 실행할 코드를 작성할 수 있습니다.

import MediaPlayer

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        NotificationCenter.default.addObserver(self, selector: #selector(handleNowPlayingItemChanged), name: .MPMusicPlayerControllerNowPlayingItemDidChange, object: MPMusicPlayerController.systemMusicPlayer)
        
        NotificationCenter.default.addObserver(self, selector: #selector(handlePlaybackStateChanged), name: .MPMusicPlayerControllerPlaybackStateDidChange, object: MPMusicPlayerController.systemMusicPlayer)
        
        MPMusicPlayerController.systemMusicPlayer.beginGeneratingPlaybackNotifications()
    }
    
    @objc func handleNowPlayingItemChanged() {
        // 현재 재생 중인 미디어가 변경될 때 실행할 코드
    }
    
    @objc func handlePlaybackStateChanged() {
        // 재생 상태가 변할 때 실행할 코드
    }
}

위의 코드에서는 MPMusicPlayerControllersystemMusicPlayer 인스턴스를 사용하여 현재 재생 중인 미디어의 변경 및 재생 상태의 변화를 감지하는 두 가지 이벤트를 처리하는 방법을 보여줍니다.

3. 이벤트 처리 중지하기

MediaPlayer 이벤트 처리를 더 이상 필요하지 않을 때, 이벤트 처리를 중지해야 합니다. 더 이상 이벤트를 수신하지 않도록 하려면 endGeneratingPlaybackNotifications 메서드를 사용하여 이벤트 처리를 중지할 수 있습니다.

deinit {
    MPMusicPlayerController.systemMusicPlayer.endGeneratingPlaybackNotifications()
}

위의 코드는 뷰 컨트롤러가 메모리에서 해제될 때 MediaPlayer 이벤트 처리를 중지하는 방법을 보여줍니다.

결론

이러한 방법을 사용하여 MediaPlayer를 사용하는 동안 발생하는 이벤트를 효율적으로 처리할 수 있습니다. 이를 통해 앱의 사용자 경험을 향상시키고, 미디어 재생 기능을 보다 유연하게 제어할 수 있습니다.

참고 자료