Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

kanghun1121/1PodShuffle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

213 Commits

Repository files navigation

1PodShuffle

사용자의 취향 장르를 기반으로 랜덤 음악이 재생되는 어플리케이션

iOS


🙂 실행하는 방법

실행 방법 을 반드시 참고해주세요!


⭐️ 주요 기능

  • 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 레이아웃 변경

🙇 구성원


강대훈
GitHub
김종성
GitHub
이동욱
GitHub
이유정
GitHub
이주용
GitHub

About

취향 맞춤 랜덤 음악 스트리밍 앱

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • Swift 100.0%

AltStyle によって変換されたページ (->オリジナル) /