iOS 11에 대한 뮤직키트 발표
개인적으로 가장 기쁜 업데이트는 바로 이 뮤직키트입니다.😎🎸Apple Music API는 iTunes API에서 스트리밍이 가능한 제품을 추출합니다.뿐만 아니라 사용자가 추천하는 상품 목록 등 개성화된 데이터도 접근할 수 있다👏
이번 절차와 참고 총결은 아래 링크에서 한 번 보십시오👀
https://developer.apple.com/musickit/
What's MusicKit
MusicKit는 다음 API와 프레임으로 구성됩니다.단일 프레임이 아니므로 API는 웹에서도 사용할 수 있습니다.👏
Apple Music API: Apple Music의 노래 및 재생 목록 가져오기
StoreKit(Framework): Apple Music의 사용 허가와 영패 취득
MediaPlayer(Framework): Apple Music의 곡 및 재생 목록 재생
Apple Music API
Keys and Tokens
Apple Music API를 사용하려면 Private Key를 획득하고 Developer Token(JWT)을 생성해야 합니다.
비록 매우 번거롭지만, 나는 개성화된 데이터에 접근할 수 없다😭
Music Identifier
다음 페이지의 Music Identifier 로그인
https://developer.apple.com/account/ios/identifier/musicId
MusicKit Private Key
다음 페이지에 방문하여 MusicKit의 개인 키를 만듭니다
https://developer.apple.com/account/ios/authkey
Developer Token
Developer Token(Json Web Token) 작성
Issuer에 파티 ID 추가
Issued At에서 JWT의 발행 시간을 Unix Time으로 입력
Expiration Time에서 6개월 이내의 유효 기간을 Unix Time으로 입력
{
"alg": "ES256",
"kid": "<MusicKit Key ID>"
}
{
"iss": "<Team Identifier>",
"iat": 1437179036,
"exp": 1493298100
}
프로그램 라이브러리를 사용하여 인코딩하려는 경우 Swift4에 해당하는 인코딩이 없습니다.😭Storefronts and Localizations
storefronts: 나라마다 발송 내용이 다르므로 변경할 수 있음
langage_code
: 지정된 언어로 번역합니다.지정되지 않은 경우 storefronts
의 기본 언어가 됩니다GET https://api.music.apple.com/v1/catalog/{storefronts}/albums/310730204?l={langage_code}
Storefronts
Storefronts 데이터는 다음 요청을 통해 얻을 수 있습니다
id
: ISO-Alpha2 Country Code GET https://api.music.apple.com/v1/storefronts/{id}
Request
모든 요청의 머리글에
Authorization
를 키로 하는 위의 Developer Token(헤드에 더하기Bearer
을 전송합니다.curl -v -H 'Authorization: Bearer [developer token]' "https://api.music.apple.com/v1/catalog/us/songs/203709340"
Reference
통합 Apple Music API Reference🙆(iTunes Search API보다 더 쉽게 볼 수 있음)
StoreKit
Accessing the Music Library
authorizationStatus()
: 사용자가 선택한 Music Library(애플 Music 포함)의 사용 허가 상태 확인requestAuthorization(_:)
: 사용자에게 Music Library(애플 Music 포함)의 사용 허가를 요청// SKCloudServiceController
class func authorizationStatus() -> SKCloudServiceAuthorizationStatus
// SKCloudServiceController
class func requestAuthorization(_ handler: @escaping (SKCloudServiceAuthorizationStatus) -> Void)
※ Music Library 방문 시Info.plist
작성 필요NSAppleMusicUsageDescription
⚠️SKCloudServiceAuthorizationStatus
notDetermined
: 아직 사용 허가에 응답한 적이 없음denied
: 사용 거부restricted
: 교육모드 등에서는 사용허가조차 할 수 없음authorized
: 사용 가능Capabilities
Music Library에서 사용할 수 있는 기능을 확인합니다(Apple Music의 멤버쉽 여부 확인).
func requestCapabilities(completionHandler: @escaping (SKCloudServiceCapability, Error?) -> Void)
SKCloudServiceCapability
musicCatalogPlayback
: 애플뮤직 노래 재생musicCatalogSubscriptionEligible
: 애플 뮤직 노래 획득addToCloudMusicLibrary
: Music Library에 곡을 추가할 수 있음Storefronts for Device
디바이스에 설정된 영역에서 Storefronts 를 가져올 수 있습니다.
func requestStorefrontCountryCode(completionHandler: @escaping (String?, Error?) -> Void)
지금까진 혼자만 할 수 있어 requestStorefrontIdentifier(completionHandler:)
귀찮아😭Music User Token
사용자 Apple Music 콘텐츠에 대한 토큰을 획득할 수 있습니다.
func requestUserToken(forDeveloperToken developerToken: String, completionHandler: @escaping (String?, Error?) -> Void)
아래의 /me
경로를 사용하여 얻을 수 있는 최근 재생된 곡과 평론 등GET https://api.music.apple.com/v1/me/recent/played
GET https://api.music.apple.com/v1/me/recommendations
GET https://api.music.apple.com/v1/me/ratings/albums/{id}
GET https://api.music.apple.com/v1/me/recommendations
...
MediaPlayer
Play Apple Music Catalog
Apple Music의 노래와 앨범을 재생하고 플레이리스트를 작성합니다.🎧
MPMusicPlayerController
setQueue(with:storeIDs)
: 애플 뮤직 API를 통해 얻을 수 있는 Store Identifier(노래와 앨범의 ID) 재생setQueue(with:descriptor)
: 대기열을 지정하면서 노래를 재생할 수 있습니다바꾸다.👏) func setQueue(with storeIDs: [String])
func setQueue(with descriptor: MPMusicPlayerQueueDescriptor)
ex.) 다음 요구 사항이라면 앨범id
만 추가하면 재생 가능https://api.music.apple.com/v1/catalog/us/albums/310730204
{
"data": [
{
"href": "/v1/catalog/us/albums/310730204",
"id": "310730204",
"artists": {...},
"tracks": {...},
...
MPMusicPlayerPlayParametersQueueDescriptor
이번에 iOS 11에 추가된
MPMusicPlayerQueueDescriptor
상속류.PlayParameter Quee란🤔Apple Music API 쿼리를 직접 큐로 사용할 수 있을까요?
init(playParametersQueue: [[String : Any]])
MPMediaLibrary
UUID
및 MPMediaPlaylistCreationMetadata
에 지정된 저장 또는 새 재생 목록 가져오기// MPMediaLibrary
func getPlaylist(with uuid: UUID, creationMetadata: MPMediaPlaylistCreationMetadata?, completionHandler: @escaping (MPMediaPlaylist?, Error?) -> Void)
MPMediaPlaylist
재생 목록에 노래와 앨범을 추가합니다 (한 곡 한 곡만 추가할 수 있습니다)😢)
// MPMediaPlaylist
func addItem(withProductID productID: String, completionHandler: ((Error?) -> Void)? = nil)
※ getPlaylist:
에서 플레이리스트를 얻고 빠르게 사용하면 오류가 발생할 수 있습니다.예전에 Qita에 썼던 거. 지금 5초 기다려야 할 것 같은데...😟iOS 9에서 시작하여 Apple Music 기능은 지속적으로 업데이트되는 타사에 제공되지만, 이번 업데이트는 상당히 큰 규모입니다.👏이번 기회에 좋은 음악 애플리케이션을 추가하면 좋을 것 같아요.🙏
끝맺다👋
Reference
이 문제에 관하여(iOS 11에 대한 뮤직키트 발표), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hanawat/items/c59c3365156a474821cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)