IOS application/Swift

5. AVMetadataItem

개발자킹콩 2021. 2. 18. 01:46

우리는 AVPlayerItem의 데이터를 관리하다가 AVMetadataItem 타입을 알게 되었다.

이것이 무엇이고 어떻게 사용하는지를 살펴보자

 

 

 

 

우리는 AVPlayerItem type를 갖는 데이터들의 array에서 특정 index를 인자로 주면 Track type로 반환하는 함수를 만들었다. 그런데 기존의 파일은 AVPlayerItem이기에 우리는 extention 키워드를 사용해서 convertToTrack() 라는 메소드를 만들어 사용했다.

 

 

 

 


 

 

AVPlayerItem.convertToTrack()

 

 

우선 AVPlayerItem 안에는 asset라는 property가 존재하는데,

이 asset property안에는 metadata라는 것이 존재한다.

 

우리가 곡이라는 파일이 있을 때,

우리들이 현재 듣고 있는 곡이라는 실제 파일 안에는 음원도 있고,

음원의 metadata라고 해서 음원의 artist정보, 곡 제목, 곡 썸네일 등 이런 메타데이터들이 들어있다.

이것을 추출해서 실제 트랙 객체를 생성해서 반환한 것이다.

asset.metadata 리스트를 반환해서 해당 변수들이 property 존재하는 것을 확인할 있다.

 

추출 방법은 다음과 같이 해당하는 동일 type 변수를 만들어 if let을 통해 안전하게 변수를 받아온다.

 

그렇다면 우리는 사용한 데이터인 asset.metadata가 어떻게 구성되이 있는지를 판단해야 한다.

 

 

 

 


 

 

 

AVMetadataItem

 

 

 

 

 

실제 matadata에서 title, artist, albumName, artwork를 어떻게 빼오는 지는 위와 같이 구현되어 있다. 

 

AVMetadataItem이라는 녀석은 AVPlayerItem안에 asset안에 metadata안에 존재하는 타입이다.

그래서 title, artist, albumName, artwork라는 computed property를 만들어서

해당 변수를 접근할 때 조건을 판단해서 데이터를 가져온다.

 

실제 우리가 스트리밍 서비스를 하고 있는 곡들은 다음과 같은 정보를 담은 상태로 내려온다. 

 

 

 


 

 

 

 

그리고 코드의 밑을 보면 현재 AVPlayer이 현재 곡을 재생하고 있는지 안하고 있는지 판단하기 위해 메소드를 만들었다.

 

 

 

여기서 주의할 사항은 extension으로 클래스의 확장을 할때 stored property를 정의할 수는 없다. computed property, method 로는 사용할 수 있다.

 

 

 

 

 

 

 

 

 

'IOS application > Swift' 카테고리의 다른 글

7. Swift Escaping Closure ?? 😁  (0) 2021.04.23
6. Instance Method vs. Type Method  (0) 2021.04.22
4. Design Patton: MVVM 패턴  (0) 2021.02.06
3. 상속은 언제 하면 좋은가?  (0) 2021.01.22
2. Struct vs. Class  (0) 2021.01.22