본문 바로가기

xcode14

[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] WidgetKit 4탄! - 위젯 TimelineProvider 이해하기, 위젯 새로고침, 날씨 서버와 통신하기 (2.0 업데이트 도전~!) WidgetKit 시리즈의 마지막입니다! 위젯... 정말.. 쉽지 않았습니다... 그래도 어느정도 생각한대로 앱을 구성하고, 현재 2.0 업데이트 심사도 요청한 상태라 어느정도 후련한 마음입니다! 부디 한번만에 앱이 통과되길! 우선 이전에 Combine으로 코드를 구성했었는데요! 앱이 데이터를 가져오고, 오류없이 동작하기는 하나 일부 화면이 새로 안 그려지는 치명적인 문제가 있었습니다..! 아직 왜 그런지 원인을 찾지 못했는데 아직 Combine에 대한 이해가 부족한 것 같아서 더 공부한 뒤에 다시 도전해보려 합니다. 일단 앱 업데이트를 해야하니 제게 익숙한 방식인 CompletionHandler로 리팩토링하니 다행히 잘 동작했습니다! 우선, 위젯에서 위치정보를 수집하고 동작하는것은 아이폰에 부담을 줄 .. 2023. 9. 17.
[날씨의 i] WidgetKit 3탄! - 위젯 사진 설정 (AppExtension, AppGroup, Realm 연동, GeometryReader 활용해 위젯패밀리 크기 대응하기 새로 시작한 위젯을 하나하나 만들어가며..! 어느정도 통신을 하고, 화면을 그리도록 만들었습니다! 그런데 화면을 그리면서 크게 세 가지 문제점이 있었는데 1. 위젯이 원래 앱에서 저장된 파일 URL 경로를 찾지 못한다 2. 위젯이 큰 사이즈의 사진을 지원하지 않는다는 점과 3. 유저가 설정한 사진에 따라 날씨 표시되는 부분의 레이아웃이 변경되는 문제였습니다. 우선 1번으로 스트레스를 많이 받았는데요... 앞서 NotificationCenter를 사용할때 realm으로 저장한 사진을 FileManager로 URL을 저장하고, 알림 설정 트리거를 보낼때 URL을 같이 보내 사진을 접근할 수 있도록 만들었습니다. 그 방법 그대로 사용을 했는데 이상하게 위젯에서는 파일URL에 접근을 잘 못했습니다ㅠㅠ 분명 원래.. 2023. 9. 14.
[날씨의 i] 1.2 업데이트! (서버에서 보내주는 데이터가 누락되었을때 무한 로딩현상 해결) 오랜만에 새벽에 잠이 깨서 버릇처럼 날씨의 i 를 켜보았습니다! 그런데..왜 또 무한로딩 현상이... 업데이트 하고나서 이런적이 없었는데... 서버에서 데이터를 받아오는 앱은 참 변수가 많은 걸 이번에 많이 느낍니다! 잠도 안오기도 하고 원인을 알아보기 위해 Xcode를 켜고, 로그를 보았습니다. 놀랍게도 두 가지 문제점이 있었습니다.. 첫번째로 주간 날씨 쿼리를 보낼때 데이터의 발표 기준 시간이 0600시인데, 0600시가 지나면 오늘 시간을, 지나지 않았으면 어제 시간을 기준으로 주간 날씨를 보내게 되는데, 오른쪽 코드처럼 >인 경우 0600시에 어제 시간을 요청하게 되면서 오류가 나는 것이었습니다. 이건 새벽 6시에 안 일어났으면 무심코 지나쳤을 에러인데, 에러 해결하고 자라는 하늘의 뜻이 아닌가싶.. 2023. 8. 29.