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
- Mac
- Xcode Organizer
- CoreML
- App Clip
- AVFoundation
- Reality Composer
- swiftUI
- SWiFT
- MDM
- Hand Action Detect
- Xcode Cloud
- async
- DooC
- detent
- METAL
- NSUserActivity
- SF Symbols
- Hand Pose Detect
- AR Quick Look
- profile
- AppleEvent
- concurrency
- DriverKit
- SF Symbols 3.0
- User Enrollment
- ProRAW
- Physical Audio
- WWDC 2021
- actor
- Object Capture
Archives
- Today
- Total
nyancoder
WWDC 2021 - Meet MusicKit for Swift 본문
원본 영상: https://developer.apple.com/videos/play/wwdc2021/10294/
- MusicKit은 Swift를 사용해 앱에서 음악을 접근할 수 있는 새 프레임워크입니다.
- 새로운 Swift 동시성 구문을 활용하며, SwiftUI와 함께 사용하도록 설계되었습니다.
- MusicKit 은 Apple Music의 다양한 콘텐츠에 접근할 수 있는 Apple Music API를 제공합니다.
- Apple Music과 연동되는 앱을 쉽게 만들 수 있습니다.
Requesting music content
- MusicKit은 콘텐츠를 가져오고 음악에 접근하기 위한 새로운 요청 모델을 제공합니다.
- Apple Music API를 통해서 Apple Music 콘텐츠를 검색하거나, 특정 필터를 기반으로 항목들을 가져올 수 있습니다.
- 이러한 요청은 가져온 페이지의 다음 페이지를 가져올 수 있도록 구성되어 있습니다.
- Album의 구성 요소는 세 가지이며 첫 번째는 속성 정보를 담고 있습니다.
- 속성 정보에는 "title"과 같은 문자열 속성, "isCompilation"과 같은 boolean 속성, 크기 정보 및 관련 색상과 함께 아트웍의 URL에 접근할 수 있는 "artwork"과 같이 Structure 속성입니다.
- 두 번째 구성 요소는 관계 정보로, 관련 아티스트나 장르 또는 지정된 앨범의 트랙 목록 같은 정보를 제공합니다.
- 마지막 구성 요소는 연관성 정보로 관련 콘텐츠의 몇 가지 약한 연관성 정보를 제공합니다.
- 연관성 정보는 관계 정보와 유사하지만 더 일시적 이거나 편집 중심입니다.
- 예를 들어 MusicKit에서 관계 불러오려면 원하는 항목들을 나열한 다음 with함수를 불러 호출할 수 있습니다.
- 이 함수는 비동기 함수이므로 "await" 키워드와 함께 호출되어야 합니다.
- "관련 앨범"같은 연관성 정보를 가져오는 것 또한 거의 동일하며, 직접 접근할 수 있는 항목인 title 같은 항목을 포함한다는 차이점만이 있습니다.
- 예를 들어 보면, 원하는 검색 결과를 가져올 수 있는 화면을 만들 수 있습니다.
- 또한 최근에 본 앨범 목록을 표시할 수 있습니다.
- 앨범을 선택했을 때, 이 앨범에 대한 세부 정보를 표시할 수 있습니다.
- 이 정보는 SwiftUI의 상태 변수를 업데이트하여 수행됩니다.
- 재생 버튼을 사용하거나 특정 트랙을 선택하여 이 앨범의 음악을 재생할 수 있습니다.
- 실제 앨범의 바코드를 이용하여 해당 앨범을 찾을 수 있습니다.
- 범용 제품 코드(Universal Product Code)인 바코드 정보를 RequestMusicCatalogResourceRequest에 넣어서 정보를 받아올 수 있습니다.
- Apple Music API가 제공하는 범용 데이터 요청 기능을 통해서 구조화되지 않은 JSON응답을 얻을 수 있습니다.
- Codable 프로토콜을 준수하기 때문에, JSONDecoder를 사용하여 디코딩할 수 있습니다.
- 이 응답을 로드하려면 Decodable형식의 구조체를 만들고 동일하게 Decodable형식을 만족하는 Genre타입의 data 멤버 변수를 선언하면 됩니다.
- 예를 들어 Apple Music 최상위 장르 목록을 얻어오려면 위와 같이 해당 URL에서 응답을 호출한 다음 위에서 만든 구조체를 이용하여 읽어올 수 있습니다.
Privacy and user consent
- 사용자의 청취 기록 또는 음악 라이브러리를 포함하는 데이터를 요청할 때는 사용자의 동의를 받아야 합니다.
- 이러한 권한 요청은 기기 및 앱별로 이루어집니다.
- 위의 예에서 사용자에게 권한을 요청하는 팝업을 볼 수 있습니다.
- 해당 팝업에는 Info.plist에 정의되어있는 설명이 표시됩니다.
- 위와 같은 코드를 통해 MusicKit에 대한 사용자 동의를 비동기적으로 요청할 수 있습니다.
Token management
- Apple Music API는 기본적으로 앱을 인증하는 개발자 토큰 이 필요합니다.
- 예전의 개발자 토큰과는 달리 Swift용 MusicKit을 사용하면 개발자 토큰이 자동으로 생성됩니다.
- 개발자 포털에서 이 MusicKit을 선택하기만 하면 됩니다.
- App ID를 등록하는 페이지에서 하단의 App Services 탭을 선택하고 MusicKit 체크박스를 활성화합니다.
- Apple Music API에는 개인화된 엔드포인트에 대한 사용자 토큰이 필요 하지만, 이 또한 개발자 토큰처럼 자동으로 생성됩니다.
Subscription information
- 사용자가 Apple Music을 구독하고 있는지 확인할 수 있습니다.
- 확인할 수 있는 정보는 사용자가 콘텐츠를 재생할 수 있는지, iCloud 라이브러리가 활성화되어 있는지, 구독자가 될 수 있는지의 3가지입니다.
- 위의 정보를 사용하여 앱의 Apple Music 관련 기능이 사용할 수 있는 상태인지를 확인해서 UI를 표시해야 합니다.
- 예를 들어 위의 커드에서는 MusicSubscription 상태를 활용하여 구독 상태를 파악하고 버튼을 적절히 활성화/비활성화 상태로 표시할 수 있습니다.
- 비동기 task 블록 내에서 새 구독 업데이트 스트림을 사용할 수 있습니다.
Playback
- MusicKit은 SystemMusicPlayer와 ApplicationMusicPlayer 두 개의 플레이어를 제공합니다.
- 예를 들어 소셜 미디어 앱은 SystemMusicPlayer를 사용하여 시스템 음악 앱에서 재생 되는 내용을 변경하는 반면 피트니스 앱은 ApplicationMusicPlayer를 사용하여 재생 상태를 시스템 음악 앱과 완전히 독립적으로 유지하고자 할 수 있습니다.
- SystemMusicPlayer를 사용하는 경우 음악 앱이 현재 재생 중인 앱으로 처리되지만 ApplicationMusicPlayer를 사용하는 경우 해당 앱이 현재 재생 중인 앱으로 표시됩니다.
- SystemMusicPlayer를 사용하면 앱이 시스템 음악 앱을 원격 제어하는 반면, ApplicationMusicPlayer를 사용하면 앱이 완전히 별도의 재생 순서를 가집니다.
- 이 두 플레이어 모두 하나 이상의 항목으로 대기열을 설정할 수 있습니다.
- 그러나 ApplicationMusicPlayer만이 중간에 항목을 삽입하거나, 이전에 추가된 항목을 제거할 수 있습니다.
Subscription offers
- 사용자가 아직 Apple Music 구독자가 아닌 경우 앱 내에서 무료 평가판을 시작하도록 할 수 있습니다.
- 구독 제안은 사용자에게 표시되는 기본 메시지를 조정하여 구성할 수 있습니다.
- 또한 상황에 따라 특정 노래, 앨범 또는 재생 목록을 강조 표시할 수도 있습니다.
- 앱에서 구독 제안 시트를 사용하면 Apple Services Performance Partners Program이라고 하는 제휴 프로그램을 통해 새로운 Apple Music 구독자를 유치하는 데 대한 보상을 받을 수 있습니다.
- 구독 제안 옵션의 itemID 속성으로는 앨범의 ID를 전달합니다.
- 이후 canBecomeSubscriber가 true로 설정되면 해당 버튼을 활성화하고 musicSubscriptionOffer를 통해서 해당 옵션을 제안합니다.
목차: https://nyancoder.tistory.com/2
'WWDC > WWDC 2021' 카테고리의 다른 글
WWDC 2021 - Meet TestFlight on Mac (0) | 2021.07.23 |
---|---|
WWDC 2021 - Meet Shortcuts for macOS (0) | 2021.07.21 |
WWDC 2021 - Discover breakpoint improvements (0) | 2021.07.19 |
WWDC 2021 - Meet Group Activities (0) | 2021.07.18 |
WWDC 2021 - Explore bindless rendering in Metal (0) | 2021.07.16 |
Comments