MediaPlayer.EventHandler (MediaPlayerEventHandler)

extension MediaPlayer {
    public typealias EventHandler = MediaPlayerEventHandler
}
enum MediaPlayerEventHandler

이벤트 핸들러의 종류와 사용 방법에 대한 설명입니다. 각각 케이스에 대한 설명은 케이스를, 사용 방법은 addEventHandler(_)를 참고하시면 됩니다. 이벤트 핸들러를 추가한 후, 해당 이벤트 핸들러가 더 이상 필요 없을 때는 반드시 removeEventHandler(_) 메서드를 사용해서 제거하세요.
이벤트 핸들러를 대신하여 사용 방법에 따라서 이벤트 리스너를 사용하여 이벤트 처리를 할 수 있습니다. 이벤트 리스너에서 사용되는 파라미터는 이벤트 핸들러의 파라미터와 동일합니다. 이벤트 리스너의 사용 방법은 addEventListener(_)메서드를 참고하시면 됩니다.


케이스

durationChange

case durationChange((_ duration: Duration) -> Void)
파라미터 이름타입설명
durationDuration미디어 길이

미디어의 길이(duration)가 변경되었을 때를 처리하기 위한 핸들러입니다.

이벤트 리스너: onDurationChange(duration:)
참고: Duration

ended

case ended(() -> Void)

재생 목록의 마지막 미디어의 재생이 완료된 시점에 사용하기 위한 핸들러입니다.

이벤트 리스너: onEnded()

error

case error((_ error: Error) -> Void)
파라미터 이름타입설명
errorError에러

에러가 발생할 때 사용하기 위한 핸들러입니다.

이벤트 리스너: onError(error:)
참고: Error
MediaPlayerError

loadedData

case loadedData(() -> Void)

미디어 아이템이 로드되었을 때 사용하기 위한 핸들러입니다.

이벤트 리스너: onLoadedData()

loadStart

case loadStart(() -> Void)

미디어 리소스를 로딩하기 시작할 때 사용하기 위한 핸들러입니다.

이벤트 리스너: onLoadStart()

mediaItemTransition

case mediaItemTransition((_ item: MediaItem?) -> Void)
파라미터 이름타입설명
itemMediaItem교체된 미디어 아이템

미디어 아이템이 교체 되는 시점에 사용하기 위한 핸들러입니다.

이벤트 리스너: onMediaItemTransition(item:) 참고: MediaItem

pause

case pause(() -> Void)

미디어가 일시 정지 상태로 진입하는 시점에 사용하기 위한 핸들러입니다.

이벤트 리스너: onPause()
비교: play

pictureInPictureActiveChange

case pictureInPictureActiveChange((_ active: Bool) -> Void)
파라미터 이름타입설명
activeBool현재 화면 속 화면 모드인 지 여부

화면 속 화면 모드가 켜지거나 꺼지는 시점에 사용하기 위한 핸들러입니다.

pictureInPicturePossibleChange

case pictureInPicturePossibleChange((_ possible: Bool) -> Void)
파라미터 이름타입설명
possibleBool화면 속 화면 모드 사용 가능 여부

화면 속 화면 모드를 사용할 수 있을 때, (혹은 반대의 경우에) 사용하기 위한 핸들러입니다. 예를 들면, 화면 속 화면 모드 버튼을 활성화 및 비활성화 하기 위해서는 이 핸들러가 필요합니다.

pictureInPictureDidStart

case pictureInPictureDidStart(() -> Void)

화면 속 화면 모드가 시작한 후 사용하기 위한 핸들러입니다.
화면 속 화면 모드로 들어가면, pictureInPictureWillStartpictureInPictureActiveChange(true) → pictureInPictureDidStart의 순서대로 호출됩니다.

이벤트 리스너: onPictureInPictureDidStart()

pictureInPictureDidStop

case pictureInPictureDidStop(() -> Void)

화면 속 화면 모드가 끝나고 난 후 사용하기 위한 핸들러입니다.
화면 속 화면 모드가 종료되면, pictureInPictureWillStoppictureInPictureActiveChange(false) → pictureInPictureDidStop의 순서대로 호출됩니다.

이벤트 리스너: onPictureInPictureDidStop()

pictureInPictureWillStart

case pictureInPictureWillStart(() -> Void)

화면 속 화면 모드가 시작하기 직전에 사용하기 위한 핸들러입니다.
화면 속 화면 모드로 들어가면, pictureInPictureWillStartpictureInPictureActiveChange(true) → pictureInPictureDidStart의 순서대로 호출됩니다.

이벤트 리스너: onPictureInPictureWillStart()

pictureInPictureWillStop

case pictureInPictureWillStop(() -> Void)

화면 속 화면 모드가 끝나기 직전애 사용하기 위한 핸들러입니다.
화면 속 화면 모드가 종료되면, pictureInPictureWillStoppictureInPictureActiveChange(false) → pictureInPictureDidStop의 순서대로 호출됩니다.

이벤트 리스너: onPictureInPictureWillStop()

play

case play(() -> Void)

미디어가 일시 정지 상태에서 재생 상태로 변경되는 시점에 사용하기 위한 핸들러입니다. 사용자가 재생 버튼을 클릭하거나 mediaPlayer.play()를 호출하는 등 플레이어에 재생 명령을 내렸을 때 등과 같이 명령을 했을 때 상황에서 이벤트 처리를 여기서 할 수 있습니다. play와 관련된 이벤트 핸들러가 호출된 이후에 playing 이벤트 핸들러는 언제나 호출됩니다. 재생 중에 미디어를 이동하든지 재생 위치를 이동하면, 언제나 pause -> play -> playing 순서로 호출됩니다.

이벤트 리스너: onPlay()
비교: pause
참고: playing

playbackFinish

case playbackFinish(
    (_ mediaItem: MediaItem, _ position: Duration, _ duration: Duration?, _ reason: PlaybackFinishReason) -> Void
)
파라미터 이름타입설명
mediaItemMediaItem종료된 미디어 아이템
positionDuration마지막 재생 위치
durationDuration미디어 길이
reasonPlaybackFinishReason미디어 종료 원인

미디어가 종료될 때 사용하기 위한 핸들러입니다. 이 때 마지막 재생 위치(position)와 미디어의 길이(duration) 값을 사용할 수 있습니다. 주의할 점은, 미디어가 로드된 후에 종료될 때만 사용할 수 있다는 것입니다. 만약 미디어가 로드되기 전에 종료되는 상황에도 사용하려면, Unload를 참고하세요.

playbackStateChange

case playbackStateChange((_ state: MediaPlayer.PlaybackState) -> Void)
파라미터 이름타입설명
stateMediaPlayer.PlaybackState재생 상태

미디어 로딩 상태에 따른 처리, 즉, 버퍼링인지 준비가 된 상태인지, 끝이 났는지, 플레이어를 종료하였는지 등의 상황에 따라 처리하기 위한 핸들러입니다. 상황에 따른 설명은 playbackState를 참고하세요.

playing

case playing(() -> Void)

미디어가 재생 상태로 변한 직후에 사용하기 위한 핸들러입니다. playing과 관련된 이벤트 핸들러는 play 이벤트 이후에 항상 호출됩니다.

이벤트 리스너: onPlaying()
참고: play

positionDiscontinuity

case positionDiscontinuity(
    (_ oldPosition: Duration, _ newPosition: Duration) -> Void
)
파라미터 이름타입설명
oldPositionDuration이전 재생 위치
newPositionDuration바뀐 재생 위치

재생 위치가 변경되는 시점에 사용하기 위한 핸들러입니다. 이전 위치와 이동한 위치 모두 접근이 가능합니다.

progress

case progress(() -> Void)

플레이어가 리소스를 읽을 때 사용하기 위한 핸들러입니다.

이벤트 리스너: onProgress()

rateChange

case rateChange((_ rate: Float) -> Void)
파라미터 이름타입설명
rateFloat재생 속도

재생 속도가 변경되는 시점에 사용하기 위한 핸들러입니다.

이벤트 리스너: onRateChange(rate:)

repeatModeChange

case repeatModeChange((_ mode: MediaPlayer.RepeatMode) -> Void)
파라미터 이름타입설명
modeMediaPlayer.RepeatMode반복 모드 종류

반복 모드가 설정되었을 때 처리하기 위한 핸들러입니다.

이벤트 리스너: onRepeatModeChange(mode:)
참고: MediaPlayer.RepeatMode

repeatRangeChange

case repeatRangeChange((_ range: MediaPlayer.RepeatRange?) -> Void)
파라미터 이름타입설명
rangeMediaPlayer.RepeatRange?구간 반복에서의 구간

구간 반복 모드가 시작되거나 종료되었을 때, 그리고 구간 반복의 시작 위치 또는 종료 위치가 바뀌었을 때를 처리하기 위한 핸들러입니다.

scalingModeChange

case scalingModeChange((_ mode: MediaPlayer.ScalingMode) -> Void)
파라미터 이름타입설명
modeMediaPlayer.ScalingMode화면 스케일링 상태

미디어 화면의 스케일링 상태가 변하는 시점에 사용하기 위한 핸들러입니다.

seeked

case seeked(() -> Void)

seek 작업이 완료된 시점, 또는 재생 위치가 변경되는 시점, 또는 seeking 값이 false로 변경되는 시점에 사용하기 위한 핸들러입니다.

이벤트 리스너: onSeeked()
비교: seeking

seeking

case seeking(() -> Void)

seek 작업이 시작되는 시점, 또는 seeking 값이 false에서 true로 변경되는 시점에 사용하기 위한 핸들러입니다.

이벤트 리스너: onSeeking()
비교: seeked

textCueChange

case textCueChange((_ textCues: [TextTrack.Cue]) -> Void)
파라미터 이름타입설명
textCues[TextTrack.Cue]자막 큐들

자막 큐가 변경되는 시점에 사용하기 위한 핸들러입니다.

이벤트 리스너: onCueChange(textCues:)
참고: TextTrack.Cue

timeUpdate

case timeUpdate((_ position: Duration) -> Void)
파라미터 이름타입설명
positionDuration현재 재생 위치

currentTime이 변경되는 시점에 사용하기 위한 핸들러입니다. 즉, 미디어가 재생이 되는 동안 수행하려는 작업을 이곳에 구현하시면 됩니다.

이벤트 리스너: onTimeUpdate(position:)
참고: Duration

unload

case unload((_ mediaItem: MediaItem) -> Void)
)
파라미터 이름타입설명
mediaItemMediaItem종료된 미디어 아이템

미디어가 제거된 시점, 즉, 미디어 주소가 변경되기 직전, 기존에 존재하던 미디어를 비울 때를 처리하기 위한 핸들러입니다.

이벤트 리스너: onUnload(mediaItem:)
참고: MediaItem

videoSizeChange

case videoSizeChange((_ size: CGSize) -> Void)
파라미터 이름타입설명
sizeCGSize영상 사이즈

미디어 아이템의 비디오 크기가 달라지는 시점에 사용하기 위한 핸들러입니다. 아이템을 교체하는 순간에는 (0.0, 0.0)의 값으로 바뀌는 것도 체크를 하니 참고하시기 바랍니다.

이벤트 리스너: onVideoSizeChange(size:)
참고: CGSize

volumeChange

case volumeChange((_ volume: Float, _ muted: Bool) -> Void)
파라미터 이름타입설명
volumeFloat디바이스 음량
mutedBool음소거 여부

볼륨이 변경되는 시점에 사용하기 위한 핸들러입니다. 무음(muted) 상태가 변경될 때도 호출됩니다.

이벤트 리스너: onVolumeChange(volume:muted:)

waiting

case waiting(() -> Void)

일시적인 버퍼 부족, 즉 데이터가 충분히 로딩되지 못하거나 데이터가 없어서 재생이 정지된 시점에 사용하기 위한 핸들러입니다. playbackState가 .buffering이 될 때 호출됩니다.

이벤트 리스너: onWaiting()