iOS 11에 대한 뮤직키트 발표

12919 단어 SwiftWWDCios11iOS
※ 아직 공식 발표되지 않은 정보이기 때문에 변경 가능성⚠️
개인적으로 가장 기쁜 업데이트는 바로 이 뮤직키트입니다.😎🎸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) 작성
  • ES256
  • 위에서 만든 개인 키를 사용자 정의 헤더에 삽입하는 Key ID

  • 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보다 더 쉽게 볼 수 있음)
  • Storefronts
  • 획득
  • 앨범/노래/플레이리스트/뮤직비디오/스테이션의 취득
  • 아티스트/Curators/Activities/AppleCurators 획득
  • 차트 획득
  • 유형의 수령
  • Catalog 검색
  • 재방송 획득 ※
  • 최근에 들은 노래/스테이션 입수 ※
  • 평가의 관리 ※
  • 권장 획득 ※
  • ※ 사용자의 애플뮤직 콘텐츠를 얻으려면 StoreKit를 통해 뮤직 유저 Token 획득

    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

    UUIDMPMediaPlaylistCreationMetadata에 지정된 저장 또는 새 재생 목록 가져오기
    // 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 기능은 지속적으로 업데이트되는 타사에 제공되지만, 이번 업데이트는 상당히 큰 규모입니다.👏이번 기회에 좋은 음악 애플리케이션을 추가하면 좋을 것 같아요.🙏
    끝맺다👋

    좋은 웹페이지 즐겨찾기