사용자의 취향 장르를 기반으로 랜덤 음악이 재생되는 어플리케이션
실행 방법 을 반드시 참고해주세요!
-
Core Data 기반 음악 및 취향 데이터 관리 : 사용자 음악 및 선호도 정보를 CoreData를 활용하여 CRUD를 작업했습니다.
-
NotificationCenter를 활용한 데이터 상태 감지 : NotificationCenter를 통해 데이터 변경 사항을 감지하고 UI 및 상태를 변경했습니다.
-
MPRemoteCommandCenter 및 NowPlayingInfo 연동 : MPRemoteCommandCenter와 MPNowPlayingInfoCenter를 연동하여 백그라운드에서 재생 및 제어했습니다.
-
스토리보드 레퍼런스 활용으로 협업 최적화 : 별도의 Storyboard로 분리하고 Storyboard Reference를 통해 통합, 협업 중 충돌을 최소화하기 위해서 사용했습니다.
-
사이즈 클래스에 따른 대응 : 사이즈 클래스에 맞춰서 iPhone, iPad 등 기기에 맞게 대응했습니다.
-
싱글톤 패턴 사용 : 하나의 인스턴스로 상태를 일관되게 관리하고, 메모리 사용을 최소화했습니다.
-
MVC 아키텍처 기반 구조화 : 코드의 모듈화와 역할 분리를 위해 MVC 아키텍처를 적용했습니다.
-
AVFoundation 기반 음악 재생 기능 구현 : AVFoundation 프레임워크를 활용하여 음악을 재생 및 제어했습니다.
-
MarqueeLabel 라이브러리 적용을 통한 가사/제목 스크롤 처리 : 긴 텍스트를 자연스럽게 수평 스크롤 처리하기 위해 MarqueeLabel을 도입하여 사용자 UI 가독성을 개선하였습니다.
├── RandomMusic
│ ├── App // 앱 생명주기 관련
│ │ ├── AppDelegate.swift
│ │ └── SceneDelegate.swift
│ ├── Data // 모델 및 데이터 관리
│ │ ├── DataManager.swift
│ │ └── RandomMusic.xcdatamodeld
│ ├── Enum // 열거형 정의
│ │ ├── FeedbackType.swift
│ │ ├── Genre.swift
│ │ └── ThumbnailResponseType.swift
│ ├── Etc // 기타 리소스
│ │ ├── Assets.xcassets
│ │ └── Base.lproj
│ ├── Info.plist
│ ├── Manager // 주요 기능을 담당하는 싱글톤 매니저 클래스
│ │ ├── PlayerManager.swift
│ │ ├── PreferenceManager.swift
│ │ └── RemoteManager.swift
│ ├── Model // 데이터 모델 및 CoreData 확장 정의
│ │ ├── PreferenceData+Extension.swift
│ │ ├── Song+Extension.swift
│ │ ├── SongModel.swift
│ │ └── SongResponse.swift
│ ├── Service // 네트워크 및 음악 관련 서비스 모듈
│ │ ├── Network
│ │ └── Song
│ ├── Util // 공용 유틸리티 클래스
│ │ ├── Throttle.swift
│ │ ├── TimeFormatter.swift
│ │ └── Toast.swift
│ └── View // UI 관련
│ ├── Cell
│ └── ViewController
| 타입(Type) | 설명(Description) | 예시(Example) |
|---|---|---|
| feat | 새로운 기능 추가 | feat: 사용자 음악 추천 기능 추가 |
| fix | 버그 수정 | fix: 로그인 시 인증 오류 수정 |
| docs | 문서 관련 변경 | docs: README에 커밋 컨벤션 가이드 추가 |
| style | 코드 포맷팅, 세미콜론 등 스타일 변경 | style: 코드 포맷팅 및 불필요한 공백 제거 |
| refactor | 코드 리팩토링 | refactor: 음악 추천 로직 리팩토링 |
| test | 테스트 코드 추가/수정 | test: 로그인 기능 테스트 코드 추가 |
| chore | 빌드, 설정 등 기타 변경사항 | chore: 패키지 매니저 버전 업데이트 |
| ui | UI 추가/수정 | ui: 메인 화면 UI 레이아웃 변경 |