본문 바로가기

날씨앱11

[날씨의 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] WidgetKit 2탄! (서버와 데이터 연동하기, 위젯 구성하기) 험난했던 AppGroup과 UserDefaults 세팅을 끝내고 본격적으로 위젯을 구성해보겠습니다. 우선 WidgetKit의 SwiftUI는 제가 평소에 하던 것과 조금 달라서 헷갈렸었는데요 차근차근 정리해보겠습니다. 우선 WidgetBundle로 메인 위젯을 설정합니다. 저는 일단 LiveActivity는 제외하고 기본 위젯으로만 구성해보려 합니다! 위젯은 크게 TimelineEntry Provider Widget 으로 구성되어 있습니다. 셋 다 프로토콜인데요, 첫번째로 TimelineEntry는 date를 필수 프로퍼티로 가지는 프로토콜입니다. 위젯을 업데이트하는데 기준이 되는 시간과, 위젯에 표시할 컨텐츠를 설정합니다. 저는 위젯에 그려줄 데이터들을 함께 구성했습니다. 두번째로 Provider는 위.. 2023. 9. 10.
[날씨의 i] 1.2 업데이트! (서버에서 보내주는 데이터가 누락되었을때 무한 로딩현상 해결) 오랜만에 새벽에 잠이 깨서 버릇처럼 날씨의 i 를 켜보았습니다! 그런데..왜 또 무한로딩 현상이... 업데이트 하고나서 이런적이 없었는데... 서버에서 데이터를 받아오는 앱은 참 변수가 많은 걸 이번에 많이 느낍니다! 잠도 안오기도 하고 원인을 알아보기 위해 Xcode를 켜고, 로그를 보았습니다. 놀랍게도 두 가지 문제점이 있었습니다.. 첫번째로 주간 날씨 쿼리를 보낼때 데이터의 발표 기준 시간이 0600시인데, 0600시가 지나면 오늘 시간을, 지나지 않았으면 어제 시간을 기준으로 주간 날씨를 보내게 되는데, 오른쪽 코드처럼 >인 경우 0600시에 어제 시간을 요청하게 되면서 오류가 나는 것이었습니다. 이건 새벽 6시에 안 일어났으면 무심코 지나쳤을 에러인데, 에러 해결하고 자라는 하늘의 뜻이 아닌가싶.. 2023. 8. 29.
[날씨의 i] 날씨의 i 1.0 앱스토어 출시! (날씨 알림앱, 아이폰 날씨앱, 기상청 날씨앱) 다시 한번 심사를 제출하고 하루종일 기다리고 기다리던 메일이 도착했습니다! 설레는 마음으로 메일을 열어보니..! 쨘~! 드디어 오랜 역경을 딛고 앱스토어에 정식 출시했습니다~! 와~! UIKit으로, 개인 프로젝트로 앱을 출시하니 더 기쁘고 뿌듯한 것 같네요! 앞으로도 꾸준히 업데이트 해보겠습니다ㅎㅎ 참 그리고 혹시 data.go.kr의 API를 사용하신 분들은 운영계정 신청을 꼭 해주세요! 서비스 URL, 앱 캡쳐화면, 대표썸네일 등을 등록하고 개발 계정에서 운영 계정으로 변경 신청하면 이렇게 일일 트래픽을 늘릴 수 있습니다! 일일 트래픽이 부족해서 더 늘리는 그날까지 화이팅~! 날씨의 i 가 궁금하신 분들은 방문해주세요~! 앱스토어: https://bit.ly/AppStore_WeatherI GitH.. 2023. 8. 11.
[날씨앱] 앱스토어 출시 도전과 세 번의 리젝! 이 앱...출시할 수 있을까? (앱스토어 앱 제출시 주의사항, 앱 crash log 확인하고 해결하기, 리젝 해결하기) 한 달 반 정도에 걸쳐서 드디어 날씨앱을 앱스토어에 제출하게 되었습니다! 와~! 저번에 멋사 앱스쿨을 하면서 SwiftUI로 최종 팀 프로젝트 부트캠핑 앱을 성공적으로 출시해 본 경험이 있었지만 (물론 많은 리젝과 우여곡절을 뚫고..) 이번에 UIKit으로, 혼자, 프로젝트를 마무리하고 출시하게 되어 뭔가 더욱 뜻깊고 보람찬 것 같았어요! 앱 이름은 고민하다가 앱스쿨에서 센스있는 작명으로 도와줬던 친구에게 부탁해 "날씨의 i"로 정하게 되었습니다! 뭔가 이름도 귀엽고 듣자마자 제 마음에 들었습니다 이 앱은 디자이너가..없이 저 혼자 만든 앱이다 보니 아이콘은 예쁘게 만들진 못하고 sf심볼을 이용해서 간단하게 만들었습니다! 날씨 아이콘과 알림..을 합쳐서 만들었는데 혹시나 측은지심을 지니신 디자이너분 계시.. 2023. 8. 10.