본문 바로가기

전체 글35

[LilsMusic] Coordinator를 활용해 MusicKit 권한, 구독 제안 화면이동하기 이번 프로젝트를 하면서 MVVM에 Coordinator를 더한 MVVMC패턴을 활용했는데요, Coordinator를 이전부터 프로젝트에 적용해보면서 느꼈던 점들이 있는데 우선 MVC보다는 MVVM의 Input, Output패턴에서 함께 썼을때 플로우도 깔끔하고 궁합이 잘 맞았다는 생각이 들었고, 재사용하는 화면이 많을때, 복잡한 화면이동을 관리할때 편하다는 생각이 들었습니다. 이번 제가 만든 앱에서는 재사용하는 화면이 많았는데요, 이렇게 첫번째 탭과 세번째 탭에서 플레이리스트를 누르면 List화면이 나오고, 노래를 누르면 플레이어 화면이 나오는 구조로 만들었습니다. 그래서 첫번째, 세번째 탭에서 각각 같은 화면인 List화면과 플레이어 화면이 나와야 해서 ListCoordinator와 MusicPlaye.. 2024. 4. 4.
[LilsMusic] MusicKit의 Swift Concurrency, Combine과 RxSwift 연동하며 생긴 트러블 슈팅 MusicKit을 활용한 음악앱을 만들기로 결정하고 한 가지 걱정되는 사실이 있었습니다. 그것을 바로..! MusicKit이 비교적 최신 API이고, SwiftUI를 대상으로 만든 API이기 때문에 대부분의 비동기 함수가 async / await함수이고, 이번에 제가 사용할 기술스택은 UIKit + RxSwift이기 때문에 잘 연동해서 만들 수 있을까는 걱정이 들었습니다. 만들면서 몇 가지 트러블이 있었고, 어떻게 해결했는지 정리해보려 합니다. 1. 다양한 Player시점의 부재 재생되던 음악이 끝나고 다음 노래가 재생될때의 시점을 파악해 화면에 바뀐 노래의 정보를 표시해줘야 했습니다. 기존의 음악플레이어인 MPMusicPlayer는 오래 사용한 만큼 다양한 시점의 Notification을 제공해줍니다... 2024. 3. 31.
[LilsMusic] MusicKit을 활용한 음악 앱 출시 회고 (Post Mortem) 만들 수 있을까 걱정하던 음악 앱을 무사히 만들고 앱 심사에 제출했습니다. 프로젝트 기간은 약 3주였고, 제가 중간에 건강이슈가 있어서 실질적인 프로젝트 기간은 2주 조금 넘었던 것 같습니다. 프로젝트를 진행하기 앞서 했던 기획은 기본적인 플레이 기능이 가능한 음악플레이어 + 인스타그램 릴스처럼 최신 뮤직비디오를 넘기면서 감상하고, 마음에 드는 노래를 바로 내 플레이리스트에 저장하도록 하자!였습니다. 제가 예전부터 음악과 미디어 앱에 관심이 많아서 언젠가 음악, 영상을 재생하는 앱을 만들어보고싶다고 막연하게 생각했었는데 이번 기회에 둘 다 만들어 볼 수 있어서 좋았습니다. 제가 이번 프로젝트에 사용한 기술스택은 UIKit + MVVM-C + RxSwift + MusicKit입니다. MusicKit같은 경.. 2024. 3. 26.
[LilsMusic] MusicKit을 활용한 음악앱 만들기 - 뮤직비디오 로딩 최적화 새싹 메모리스의 iOS 개발과정을 열심히 진행중에 있습니다! 지금은 개인 출시 프로젝트가 한창인데 저는 예전부터 관심이 있던 음악앱을 MusicKit을 활용해 구현해보기로 했습니다! MusicKit은 AppleMusic에 가입 + 개발자 계정까지 있어야 사용 가능한 비싼 API인데요 마침 제가 둘 다 충족하고, 돈도 많이 내고 있는 김에 겁 없이 도전해보았습니다! 만들다 보니 MusicKit은 비교적 최근 프레임워크가 자료도 많이 없었고, GPT도 아직 잘 모르는 친구이더라구요. 게다가 SwiftUI용 API로 설계되었기 때문에 UIKIt에서의 자료는 더더욱 없어서 처음에 어려움을 많이 겪었습니다! 아직까지 많이 구현하지는 못했지만 오늘 너무 큰 난관에 봉착했고, 문제를 해결해나가는 과정을 기록해보려 합.. 2024. 3. 13.
[날씨의 i] WidgetKit 5탄! - iOS17에서 변경된 사항 적용하기 (2.1 버전 업데이트 완료!) 안녕하세요! 날씨의 i를 출시하고, 벌써 7번째 업데이트를 했는데요, 2.1버전 업데이트 과정을 공유하려 합니다. 최근에 아이폰 15 플러스로 폰을 바꾸고 대 만족하며 즐겁게 사용하고 있었는데요! 한 가지 스트레스 받는 일이 발생했습니다! 즐겁게 폰을 세팅하면서 날씨의 i를 다운받고, 위젯을 설치했는데요! 음..? 이상하게 양쪽 사진이 잘리는 현상을 발견해서 부랴부랴 핫픽스를 하게 되었습니다! 알고보니 iOS17로 업데이트되면서 위젯API가 변경이 되었었고, 기존 코드를 수정하게 되었습니다! 역시 iOS16을 쓰던 아이폰 11에서 폰을 바꿔서 다행이지 영영 모를 뻔 했는데 다행입니다ㅎㅎ 처음에는 위젯 API가 변경된 지 모르고 단순히 패딩이나 프레임 문제일거라고 생각했습니다. 그런데 기존 코드에서 Geo.. 2023. 11. 10.
[SwiftUI 스터디] UIViewRepresentable: SwiftUI에 UIKit 뷰 연동! https://developer.apple.com/documentation/swiftui/uiviewrepresentable UIViewRepresentable | Apple Developer Documentation A wrapper for a UIKit view that you use to integrate that view into your SwiftUI view hierarchy. developer.apple.com 이전에 SwiftUI 프로젝트를 할때 이미지를 확대하고 스크롤하는 기능을 넣고 싶었는데 SwiftUI의 MagnificationGesture()가 저희가 일반적으로 사용하는 사진 확대 후 시점이동이 안되서 고민하던 중 UIKit의 뷰를 SwiftUI에 적용할 수 있는 UIViewRep.. 2023. 10. 15.