본문 바로가기

전체 글35

[날씨의 i] 첫 WidgetKit 도전..! 험난했던 시작 (WidgetKit 추가와 AppGroup설정, UserDefaults로 데이터 공유) 안녕하세요! 최근에 날씨의 i를 출시하고 소소한 기능 개선과 버그 픽스를 하며 보냈습니다:) 완성하고 어느정도 업데이트로 앱이 안정되다보니 조금 느슨해져서 뭘 할까..하다가 SwiftUI 스터디에 가입하고 오랜만에 SwiftUI를 해보자! 마음먹었습니다ㅎㅎ 초기에 날씨앱을 만들자고 생각할때 위젯은 필수로 있어야 된다고 생각했었는데요 UIKit 위주로 만들다 보니 SwiftUI만 사용해야하는 위젯킷은 왠지 뒤로 계속 미루었던거 같네요ㅠㅠ 오랜만에 하는 SwiftUI.. 재미있겠다! 하고 WidgetKit을 추가하는 순간 제가 알던 SwiftUI가 아니라 이상한 코드들이 있어서 멘붕에 빠졌습니다. 덕분에 일주일동안 공식문서부터 차근차근 시작해 위젯킷을 공부하고, SwiftUI도 복습하고, 다양한 시행착오를 .. 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.
[날씨앱] CoreLocation 3탄, 사용자의 위치정보, 위치 호출 최적화하기 (.startUpdatingLocation(), .requestLocation() 차이점) CoreLocation을 적용하면서 사용자의 현재 위치 가져오기, 현재 위치의 주소 가져오기 등을 했었는데요. 오늘은 CoreLocation을 개발하면서 제 앱에 맞게 최적화 했던 것들을 정리해보려합니다. 처음에는 위치 기반 앱이다 보니 위치를 옮길 때 사용자의 위치를 자동으로 가져오려 했습니다. 이전에 만들었던 코드를 보시면 이렇게 작성했었는데요 함수가 실행되는 디테일한 빈도와 순서가 궁금해서 프린트를 하나하나 찍어봤습니다. locationManagerDidChangeAuthorization()에 print("위치 가져옴"), locationManager(didUpdateLocations:) 에 print("위치 업데이트")을 넣고 찍어보면 앱을 실행할 때 이렇게 나오게 됩니다. 처음에 사용자가 위치 .. 2023. 7. 21.
[날씨앱] CoreLocation 2탄 기상청 주간 날씨 현재 주소를 연동해서 API 호출하기..! CLGeocoder, CLPlacemark 메인 뷰의 오늘 날씨 구성을 마무리하고 주간 날씨도 만들어주기 위해 기상청 중기예보를 보았습니다! 제 생각에는 테이블뷰를 이용해서 1. 일주일간의 날짜 2. 기상 상태를 아이콘으로 3. 비가 온다면 강수확률을 아이콘 밑에 4. 최저 기온 5. 최대 기온 6. 최저, 최대 기온을 그래프로 표현 하려고 했습니다! 당연히 주간 데이터가 같이 있겠지~ 하고 문서를 찾아봤는데 중기육상예보조회에서는 주간 기상 상태를, 중기기온조회에서는 주간 최저, 최고 기온을 각각 따로 제공해주고 있어서 하나의 테이블뷰에 두 개의 API를 연동해야 했습니다..! 역시 쉬운일이 없쥬.. 그리고 하나 더 해야할 일이 생겼습니다! 오늘날씨 같은 경우에는 CLLocation으로 현재 유저의 좌표를 가져온 뒤, 기상청 자체 기준에 따라 x.. 2023. 7. 17.