-
iOS - 미세먼지 정보 제공앱Project 2020. 5. 4. 01:29
1. 개발 배경
API통신, 코드를 이용한 UI개발 방법을 숙달하기 위해서 제작하게된 앱
화면 구성이 심플하면서도 유용하고, API 통신이 들어간 것을 조사하다보니 미세먼지 정보 제공앱을 선택하게 됐다.
요즘 같은 시대에 유용하기도 하고 자료가 많아서 조사도 수월했다.
미세먼지 정보는 환경공단의 API를 이용해 제작했고, 미리 구성한 레이아웃과 최대한 유사하게 개발했다.
문서화도 잘되어있는 편이고, 공식문서를 잘 정리한 블로그도 많았다. 관련앱을 만드실 분이라면 추천!
https://www.data.go.kr/data/15000581/openapi.do
2. 개발 환경
- 언어 : Swift
- 사용한 패키지(Swift) : CoreLocation, SnapKit, Then, SwiftyJson, Alamofire
- API : 환경공단 대기오염 정보 https://www.data.go.kr/data/15000581/openapi.do
3. 주요 기능
(1) 현재 위치 안내 (행정구 단위로)
(2) 새로 고침 버튼 터치시 최신 정보로 갱신
(3) GPS기반으로 본인 위치의 미세먼지, 초미세먼지 정보 안내 (오염 정도, 수치)
(4) 정보를 불러오는 동안 로딩 인디케이터 표시
(5) 정보 제공 기준 시간 안내
4. 회고
1) 라이브러리 활용에 감을 잡아가는 중
실무에서 많이 사용하는 라이브러리 조합을 이용해서 API 통신에 활용해 볼 수 있어서 좋았다.
Alamofire는 에러 처리도 간편하고 잘 만든 라이브러리인 것 같다.
JSON파싱도 이제 몇번해봐서 구조 짜는데 조금은 익숙해졌고, 더 복잡한 데이터를 다뤄볼 예정.
2) 코드로 UI 개발
지난번 앱을[링크] 만들면서 뷰가 많아지다보니 스토리보드를 이용한 UI개발에 한계를 느꼈고,
관리도 너무 어려워서 이번에는 처음으로 코드만 이용해서 UI 개발을 하게 됐다.
결론적으로 처음에는 조금 헤맸지만 대만족!
더 복잡하고 큰 규모의 UI에도 적용해나가면서 숙달해야겠다.
물론 코드로만 짜는게 만능은 아닌것 같다.
UI변경 가능성, 재사용성, 레이아웃 복잡도에 따라 적재적소에 맞게 적용해볼 예정이다.
SwiftUI까지 나오면서 공부할건 더 늘어나는것 같아 걱정이긴하다 ㅠㅠ
[이번 프로젝트에서 공부한 내용]
- HTTP API 통신
- JSON 결과값 파싱 및 데이터 가공
- UIActivityIndicatorView 사용
- 코드를 통한 UI개발 (SnapKit)
[삽질 내역과 해결 방법]
추후 다른 프로젝트를 진행할때 참고할 수 있는 자료가 될 것 같아서
앞으로는 예상치 못하게 오랜 시간 삽질했거나, 해결하지 못했던 사항들을 함께 정리할 예정.
내용 해결 방법 시뮬레이터에서 GPS 현재 위치 정보를 불러오지 못함 시뮬레이터의 한계로 인한 문제..코드 오류인줄 알고 계속 헤맴
GPS 좌표 값을 수동으로 설정하거나, 실단말기에서만 테스트 가능
Almofire로 파싱한 JSON 결과 데이터가 전역변수에 저장되지 않음 비동기처리로 되는 네트워크 통신 구조를 이해하지 못해서 삽질..
escaping 함수로 completion을 구성하면 해결 가능
아래 블로그 글을 참고하여 해결함
https://jiseobkim.github.io/swift/2018/07/29/swift-Alamofire%EC%99%80-Escaping.html
'Project' 카테고리의 다른 글
iOS - 브랜드별 커피 메뉴판 앱 (0) 2020.04.06 iOS - 해결의 책 feat.구글 애드몹 (0) 2020.03.09 iOS - 주요 음원 챠트 순위 비교 앱 (멜론,벅스,지니) (0) 2020.03.04 iOS - 명언과 함께하는 to-do list 앱 (0) 2019.12.23 iOS - 계산내역이 기록되는 계산기앱 (0) 2019.12.09