본문 바로가기

uikit23

[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.
[날씨의 i] 쌓여가는 앱 용량..realm 데이터와 iOS 데이터 확인하고 임시파일 삭제하기 (Realm CRUD, RealmStudio, iOS FileManager, tmp) 위젯을 모두 완성하고..! 즐거운 마음으로 2.0 업데이트를 신청하려 하는데 앱 용량이 궁금해서 확인해보니 400MB..?였습니다?? 그렇게 큰 앱이 아닌데 이상하다..해서 내부를 살펴봤습니다. 앱 용량은 익스텐션을 3개나 활용해서 이전보다 늘어났을 수 있다고 해도 문서 및 데이터가 52.6MB..?로 생각보다 많이 데이터가 있었습니다. 위젯을 개발하면서 테스트하기 위해 여러 사진을 설정했었는데 그 사진들이 지워지지 않고 앱 안에 쌓여있나..? 해서 새로운 사진을 몇 장 설정해보았습니다. 그랬더니 이렇게 바로바로 용량이 쌓이고 있었습니다ㅎㅎ realm에서 업데이트할때 기존의 사진을 대체하는 메소드를 만들어서 사진이 한 장씩 계속 바뀐다고 생각했는데 잘 못 만들었나..? 생각하며 코드를 다시 확인했습니다... 2023. 9. 18.