nyancoder

WWDC 2021 - Meet Group Activities 본문

WWDC/WWDC 2021

WWDC 2021 - Meet Group Activities

nyancoder 2021. 7. 18. 04:02

원본 영상: https://developer.apple.com/videos/play/wwdc2021/10183/

 

  • iOS 15에 페이스 타임에서 컨텐츠를 공유하여 다른 사람들과 같은 방에서 활동을 하는 것처럼 느낄 수 있는 방법을 제공합니다.
  • 이 방법은 "SharePlay"라고 부릅니다.

  • 사람들은 가장 가까운 친구나 가족들과 오랜 시간을 소통하는데 보냅니다.
  • "Share Play"의 목표는 이러한 사람들을 대상으로 소통하는 것을 촉진하는 것입니다.

  • Share Play를 위해서는 세션을 만들고, 사람들이 이 세션에 참여해야 합니다.
  • 세션에 참여한 사람들은 기존처럼 FaceTime에서 텍스트, 오디오, 비디오를 통해서 통신할 수 있습니다.
  • 또한 사람을 초대하거나 세션을 나가는 등 세션을 관리할 수 있습니다.
  • 세션에 참여하면 세션 내의 전체 시스템을 탐색하고 앱들을 사용할 수 있습니다.
  • 개발자는 Group Activity를 통해 모든 것을 자유롭게 사용할 수 있습니다.

  • 다음으로 플랫폼 경험 역시 중요하기 때문에 다양한 장치에서 일관된 경험을 할 수 있도록 합니다.
  • iOS, iPadOS, macOS뿐만 아니라 WebKit을 사용하는 웹사이트와 AppleTV에서도 그룹 활동을 사용할 수 있습니다.
  • AirPod을 포함해서, Bluetooth 장치에서 뛰어난 오디오를 들을 수 있습니다.

  • 재생 버튼이 미디어 경험의 핵심이 되고, SharePlay와 재생 버튼이 함께 동작하는 것이 목적입니다.

  • 재생 버튼을 누르면 공유 미디어 경험을 할지를 결정할 수 있습니다.

  • 일반적인 재생의 경우 각자 자신이 원하는 부분을 보게 됩니다.

  • 하지만 SharePlay의 경우는 재생 시간을 플랫폼이 동기화된 상태로 맞춰주기 때문에 같은 콘텐츠를 보면서 함께 웃고 동시에 반응할 수 있습니다.

  •  AVFoundation과 통합된 재생 동기화 프로토콜을 구축하였기 때문에, 누군가 재생을 누르면 그룹의 모든 구성원이 동시에 재생을 시작합니다.
  • 원하는 장면으로 이동하면 다른 사람들도 함께 해당 장면으로 이동하기 때문에 마치 한 방에 있는 것처럼 느낄 수 있습니다.
  • 앱에서 바로 재생되고 서버에서 스트리밍 되기 때문에, 모든 사람들이 고화질 비디오를 볼 수 있습니다.
  • 또한 시청 중에 누군가 말을 하면 콘텐츠의 오디오의 음량을 자동으로 줄여 자연스럽게 서로 음성, 영상, 문자로 대화할 수 있습니다.
  • PIP(Picture in Picture)와도 잘 작동하므로, 다른 작업 중에도 그룹 재생을 이용할 수 있습니다.

  • 우리는 사용자가 앱에서 제공한 최고의 콘텐츠를 즐길 수 있기를 바랍니다.
  • FaceTime 통화 중일 때도 앱에서 콘텐츠를 공유할 수 있기를 기대합니다.
  • 그러면 사람들 간의 앱을 통한 콘텐츠 공유가 보다 활발하게 일어날 수 있기 때문에 SharePlay가 앱을 사용할 수 있는 새로운 지점이 됨과 동시에 더 많은 시간 동안 앱을 사용하게 될 수 있을 것입니다.

 

What are Group Activities

  • Group Activity는 SharePlay를 사용하여 FaceTime 통화에서 사람들과 공유하고 즐길 수 있는 것을 나타내는 객체입니다.
  • 통화 중에 사용자는 앱으로 이동할 수 있으며 그룹 활동을 지원하는 경우 앱이 SharePlay를 지원한다는 알림을 받게 됩니다.
  • 이를 위해서 먼저 GroupActivity 프로토콜을 만족하는 객체를 제공해야 하며, 객체가 적절히 구성되면 prepareForActivation API를 호출하여 해당 활동을 공유합니다.
  • 이 API는 사용자에게 해당 활동을 FaceTime 통화의 모든 사람과 공유하거나 로컬로 유지할 수 있는 옵션을 제공합니다.

  • 그룹과 콘텐츠를 공유하기로 결정하면 GroupActivity를 통해 이를 알리고 GroupSession에 참여할 수 있습니다.
    사용자가 그룹 세션에 참여하면 비디오가 항상 그룹과 동기화된 상태로 유지됩니다.
  • 재생, 일시 중지, 탐색 등을 수행할 때 GroupActivity를 통해 이를 전달받을 수 있습니다.

  • 사용자가 그룹을 빠져나갈 때는 모두가 공유를 마칠 것인지, 자신만 나갈 것인지를 결정할 수 있습니다.

 

Concepts and architecture

  • GroupActivities는 FaceTime 통화 중일 때 앱 간 사용자 공유 경험을 생성할 수 있는 Swift 프레임워크입니다.
  • 이 프레임워크는 AVFoundation과 통합되어 공유 비디오 및 오디오 재생 경험을 쉽게 만들 수 있습니다.

  • GroupActivities를 구성하는 핵심은 GroupActivity와 GroupSession으로 이루어져 있습니다.

  • GroupActivity는 공유 경험을 정의하는 데 사용합니다.
  • 앱이 이러한 공유 경험에 필요한 정보를 보유하고 있습니다.
  • 예를 들어 공유 비디오 재생을 수행할 때는 재생 중인 콘텐츠의 URL이 포함될 수 있습니다.
  • 또는 사용자가 그림을 그리는 경우에는 사용자가 그린 그림에 대한 정보가 저장됩니다.

  • GroupSession은 기본적으로 공유 경험에 참여하는 그룹을 나타냅니다.
  • 참여한 사람들에 대한 접근을 가능하게 지원합니다.
  • 프레임워크에는 GroupSession을 사용하여 장치 간 데이터를 전달할 수 있는 API가 제공됩니다.
  • GroupSession은 많은 양의 데이터를 전송하기 위한 목정은 아니므로 비디오나 오디오 같은 콘텐츠를 전달하는 데 사용하는 것은 아닙니다.
  • 대신 재생, 일시 중지, 탐색 시에 해당 명령을 교환하여 콘텐츠를 동기화 상태로 유지하기 위해 AVFoundation에서 사용됩니다.
  • GroupSession에서 제공하는 통신은 종단 간 암호화가 보장됩니다.

  • 두 개의 기기에서 새로운 Group Activity를 시작한다고 할 때 FaceTime 통화 중이어야 하며, "Awesome App"이라는 샘플 앱과 같이 콘텐츠를 공유할 앱이 있어야 합니다.
  • 첫 번째 작업은 앱에서 GroupActivity 프로토콜을 만족하는 객체를 생성하는 것입니다.
  • 예를 들어 AwesomeActivity라는 객체에 공유할 콘텐츠 정보를 넣어 생성하였다면 prepareForActivation을 호출해야 합니다.
  • prepareForActivation가 호출되면 사용자에게 공유 활동을 시작할지 동의를 구하는 메시지가 표시됩니다.
  • 마지막으로 사용자가 공유 활동을 시작할 권한 받은 앱은 해당 Activity의 activate를 호출하여 공유 활동을 시작할 수 있습니다.

  • 앱이 activate를 호출한 이후에는 GroupSession 클래스의 AsyncSequence를 통해 세션이 있을 때마다 GroupSession 개체를 받을 수 있습니다.
  • 이 과정은 공유 경험을 시작하는 앱이나, 참여하는 앱 양쪽에서 동일한 단계를 거칩니다.

  • 세션을 전달받으면 AVPlayer의 AVPlaybackCoordinator를 GroupSession에 연결하여 연결된 AVPlayer가 콘텐츠를 동기화할 수 있도록 합니다.
  • 이 동기화는 AVPlayer만이 아닌 다른 비디오 플레이어에서도 사용할 수 있으며, AVDelegatingPlaybackCoordinator를 통해 동기화 이벤트를 받을 수 있습니다.
  • 앱에서 설정을 완료하기 위해서는 GroupSession의 join을 호출하면 됩니다.
  • join이 호출되면 통신하는 앱 간 종단 암호화 채널이 설정되어 서로 동기화 데이터를 공유하고 활동에 참여할 수 있습니다.

  • 서로 세션에 참여하고 있는 상태에서는 트랙 재생, 일시 정지, 탐색 등의 이벤트를 전달할 수 있습니다.
  • AVPlayer를 사용하거나, AVDelegatingPlaybackCoordinator를 사용하면 자동으로 이를 제공받을 수 있습니다.
  • 하지만 원하는 경우 프레임워크를 통해 커스텀 이벤트를 전달할 수 있습니다.

 

목차: https://nyancoder.tistory.com/2

Comments