THIS IS ELLIE

WWDC2020 Master Picture in Picture on tvOS 본문

공부/WWDC

WWDC2020 Master Picture in Picture on tvOS

Ellie Kim 2020. 10. 18. 02:07

차례

- tvOS Picture in Picture

- implementing tvOS Picture in Picture

- Working with the standard playback UI

- Demo

 

Picture in Picture을 살펴보자.

이번에 애플 TV에 새롭게 등장한다.

또한 두 개의 영상이 동시에 재생된다.

프로젝트 구축

구현하려면 백그라운드 모드도 추가해줘야 한다.

오디오 세션을. playback 카테고리로 구성해야 한다.

이미 아이패드에도 구현해봤다면 친숙할 것이다.

 

표준 재생 UI를 사용한다.

PIP는 기본적으로 활성화된다.

PIP 생명주기는 AVPlayerViewControllerDelegate에 있다.

 

아래 메서드들을 통해서 관찰 가능하다.

특히나 마지막 복구되는 메서드를 살펴보자.

이 메서드를 통해 복구할 때 필요한 작업을 할 기회를 준다.

(주의)

빠르게 복구하기

애니메이션 피하기를 지켜서 복구에 오랜 시간을 보내지 않는 게 중요하다. 

 

AVPlayerInPictureController가 tvOS에서도 가능하다.

New API to manage custom UI

 

tvOS에서는 canStopPictureInPicture상태에 따라서 버튼을 제공한다.

상황에 맞는 UI를 선택해서 제공해야 한다.

아이패드와 다른 점은 애플 TV는 PIP모드 스왑핑이 가능하니 별도로 swap이라는 액션이 있다.

canStopPictureInPicture에 따라서 UI를 업데이트 하자.

즉 옵저버를 통해서 상황에 맞는 액션을 제공해주자.

HIG에 잘 안내되어 있으니 확인해보자.

 

tvOS에는 두 가지가 동시에 재생되니까 현재 뭐가 플레이되는지 확인할 수 있다.

MPNowPlayingSession는 AVPlayer를 세션에 연결한다.

PIP에서 사용되는 플레이어는 MPNowPlayingSession에 연결되어 있어야 한다.

현재 재생되고 있는 것의 정보 얻기

- Migrate away from MPNowPlayingInfoCenter.default()

- System decides which Now Playing Information to display 

- Always publish Now Playing Info 

 

애플 TV에서는 화면 전환이 가능하다.

그 상황에서의 생명주기를 살펴보자.

먼저 델리게이트는 willStart메서드를 타고 restoreUserInterface를 탄다. 

다음 willStop 콜백을 받는다.

다음 didStart 다음 didStop을 차례로 거친다.

 

다른 애플리케이션과의 PIP 전환이 있는 경우에 생명주기를 살펴보자.

willStart, didStart를 거치고 내 앱은 백그라운드 상태가 된다. 

이는 아이패드에서 유저가 홈스크린을 눌렀을 때 백그라운드에 가는 것과 동일한 로직이다.

 

여기서 재전환(복귀) 되는 것을 살펴보자.

앱은 background에 있었는데 foreground로 나오고 restoreUserInterface를 탄다. 

다음 차례로 willStop, didStop를 탄다.

 

resource:

developer.apple.com/documentation/avkit/adopting_picture_in_picture_playback_in_tvos

developer.apple.com/videos/play/wwdc2020/10176

반응형

'공부 > WWDC' 카테고리의 다른 글

WWDC2021 ARC in Swift: Basics and beyond  (5) 2022.02.20
WWDC2021 What's new in Swift  (0) 2021.06.11
Apple 이벤트 2020  (0) 2020.09.23
WWDC2020 Become a Simulator Export  (0) 2020.08.12
WWDC2020 What's New in Swift  (0) 2020.06.30