Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- actor
- User Enrollment
- Hand Action Detect
- SF Symbols 3.0
- App Clip
- swiftUI
- AR Quick Look
- DriverKit
- SF Symbols
- Physical Audio
- MDM
- WWDC 2021
- AVFoundation
- Object Capture
- Xcode Cloud
- AppleEvent
- Xcode Organizer
- ProRAW
- Hand Pose Detect
- METAL
- SWiFT
- NSUserActivity
- async
- detent
- Reality Composer
- Mac
- DooC
- profile
- CoreML
- concurrency
Archives
- Today
- Total
nyancoder
WWDC 2021 - Meet Group Activities 본문
원본 영상: 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를 사용하면 자동으로 이를 제공받을 수 있습니다.
- 하지만 원하는 경우 프레임워크를 통해 커스텀 이벤트를 전달할 수 있습니다.
'WWDC > WWDC 2021' 카테고리의 다른 글
WWDC 2021 - Meet MusicKit for Swift (0) | 2021.07.20 |
---|---|
WWDC 2021 - Discover breakpoint improvements (0) | 2021.07.19 |
WWDC 2021 - Explore bindless rendering in Metal (0) | 2021.07.16 |
WWDC 2021 - Explore Xcode Cloud workflows (0) | 2021.07.15 |
WWDC 2021 - Create 3D models with Object Capture (0) | 2021.07.14 |
Comments