추천 노래 카드가 반복 재생될 것을 기대했으나

1회 재생 후 플리의 다음 노래가 재생된다.

시도 1 → 실패

private func setupAudioPlayer() {
    audioPlayer.musicItemDidPlayToEndTimeObserver = NotificationCenter.default.addObserver(
        forName: .AVPlayerItemDidPlayToEndTime,
        object: nil,
        queue: .main
    ) { _ in
        DispatchQueue.main.async { [weak self] in
            self?.handlePlaybackCompletion()
        }
    }
}

weak self로 바뀌어서

push된 PlaylistDetailView가 pop이 되었을 때

self가 해제되고, handlePlaybackCompletion이 실행되지 못하도록 했으나

왠지모르게 해당 뷰모델이 해제되지 않는 문제가 발생. (이후 원인을 찾아야 한다.)

시도 2 → 성공

SwipeMusicViewController의 viewDidAppear에서 NotificationCenter에 아까 등록된 Observer를 삭제해주도록 했다.

observer를 삭제할 때에는 observer를 등록할 때 반환한 객체가 필요하다.

따라서 그걸 audioPlayer에 등록해두고 이후에 삭제할 때 사용했다.


PR 메시지

배경

메인 화면 <-> 플레이리스트 상세화면 전환 시 문제가 발생했습니다. 문제는 크게 2가지였습니다.

  1. 플레이리스트 상세 화면에서 메인 화면으로 이동한 경우 이전 노래가 계속 들렸습니다.
  2. 플레이리스트 상세 화면에서 메인 화면으로 이동한 경우 반복 재생이 되지 않고 플리의 다음 노래가 재생되었습니다.