HTTP Method의 종류는 어떤 것들이 있고 어떤 기능을 하는가?
-> GET, POST, DELETE, PUT 등등.. 이번에는 GET만 써봤다.
HTTP 통신을 위해 iOS에서 어떤 순서로 구현해야하는가?
-> 겁나 많은걸 해야하는데.. 일단 프레임워크(Alamofire)가 필요하고, 이 프레임워크를 통해 URL과 QueryString으로 Parameter를 줘서 통신했음. Response될때 저장해 놓을 데이터모델(Struct)도 필요하고, Request할때 같이 보내줘야되는 key도 필요함
라이징 테스트 전 마지막 과제였다.
마지막 과제였던만큼 난이도도 높았고, 정말.. 이슈사항이 너무 많았다.
지금까지 있었던 이슈사항 합친거랑 거의 비슷하다고해도 과언이 아닐정도로 이슈사항이 많았다..
그중 가장 큰 이유는 내 맥북이 M1이라서.. 였다.. 아직 호환성이 조금 떨어지나보다..
심지어 소셜 로그인 Api나 공공데이터 포털같은곳에서 제공해주는 오픈 Api들은 국내 한정 Api들이라서 구글에 자료들도 썩 많지 않았다..
그래서 정말 맨땅에 헤딩하면서 했다..
+핑계처럼 들리겠지만.. 2주차부터 발표과제에 학교 축제, 그리고 추석까지 겹쳐서.. 시간이.. 녹녹치 않았다..
이번주 또한 무슨 앱을 만들어야할지 고민이 많았다.
Api를 적당히 활용하면서도 너무 어렵지 않게 만들 수 있는거를 계속 찾았었고, 결국 'KakaoMap'을 만들어보기로 했었다.
하지만.. m1을 쓰고 있던 탓일까.. 계속해서 알 수 없는 오류들이 계속됐고, Daum 맵을 띄우는것까지는 성공했지만, 그 후에 써야되는 서버 통신을 위한 Alamofire 프레임워크 부분에서 계속해서 오류가 났다..
그래서 이 부분에서 계속 헤매다 결국 'NaverMap' 클론코딩으로 방향을 다시 잡았고, 크게 생각했던건 원래
1. 소셜 로그인
2. 네이버 맵 Api
3. 지하철 노선도 Api
4. 공공 데이터 포털 Api(음식점, 병원 등)
이렇게 총 4가지 정도의 Api를 구현해 보는것이었다.
결과적으로는 소셜 로그인과 네이버 맵 Api, 그리고 서울 근처 음식점 오픈 Api 이렇게 총 3가지를 구현했다.
우선 App 내 화면이다.
음식점 부분 사진이 없는 이유는... 추후에 설명하겠다..
사실상 이제는 컴포턴트를 논하는게 별로 의미가 없다.. 웬만한 컴포넌트는 거의 다 써봤고 이제는 컴포넌트를 어떻게 더 이쁘고 똑똑하게 구현하느냐..의 문제인것같다.
-> 이번에 처음으로 터미널에서 이것저것 설치를 했어야했는데, 바로 이 CocoaPod을 이용해 FrameWork를 설치해야했기 때문이다. 자신의 프로젝트 파일들이 있는 폴더에서 터미널을 열어 Podfile을 설치해주고, 그 파일 내부에서 개발에 필요한 FrameWork를 쓰고 다시 Install 명령어로 설치해주면된다.
-> 주의해야할점은 맥북 M1 모델을 쓴다면 단순 'pod install' 혹은 'pod update'가 아닌 'arch -x86_64 pod install' 을 해줘야 한다.
-> architecture가 달라서 발생하는 이슈사항이라고 한다.
-> CocoaPod으로 설치한 Alamofire로 Api를 호출하고, 그에 대한 응답을 받게 되는데 통신 방식은 GET을 이용했고 Response값들에 대한 데이터모델을 Struct로 만들어 따로 저장해주었다.
-> 아쉬웠던 점은 여러개의 request를 하고 싶었는데, 뭔가 자꾸 코드가 꼬여 뷰 하나에서 하나의 request밖에 못했다..
-> 카카오맵에 비해 띄우는게 생각보다 간단했으며, 이것도 역시 위에서 첨부한 사이트에 들어가서 이것저것 신청해야 Api를 쓸 수 있다.
-> 정말 다 좋았지만.. 네이버가 자체적으로 만들어놓은 기능외에는 아무것도 사용할수가 없다는것.. 물론 나는 네이버 지도를 그대로 클론하려고해서 발생했던 이슈였을수도 있겠지만, NaverMap View 위에서 이것저것 한다는건 쉽지 않았다.. 특히 autolayout잡기가 어려웠다..
-> 네이버가 네이버맵 SDK내에 자체적으로 만들어놓은 method들이 있는데, 그 method들을 활용해서 위치 마커 설정과 카메라 이동(지도에서 이동) 기능을 구현해봤다.
시간을 제일 많이 까먹었던 이슈사항이다..
아직도 이유는 잘 모르겠지만 카카오로 로그인 기능을 구현하면 CocoaPod에서 문제가 생겨서 framework 설치가 안되고 카카오맵을 구현하면 갑자기 헤더파일에서 문제가 생겼다..
이렇게 해서 생긴 이슈사항들을 찾아보면 대부분이 M1모델이기 때문에.. 당했다고.. 할 수 있다 하하..
결국엔 네이버로 방향을 틀긴했지만 이런 저런 이슈사항들을 직접 맞이해보면서 대처능력..?을 기를수있었던 시간이었다. 그래서 단순히 시간을 '낭비'했다고는 생각하지 않는다.
NMapsMap(=네이버맵 SDK)이 용량이 커지면서 Git-lfs 를 이용하여 받아야되는데, 이 Git-lfs라는것 또한 직접 설치해줘야한다. 근데 이것을 설치하려면 또 HomeBrew라는 프로그램이 필요한데(진짜 개웃긴다 ㅋㅋ 준비의 준비의 준비 느낌..) 그 이유는 Git-lfs를 그냥 쌩으로 받으려면 이것저것 해줘야하는게 많은데, 그런거를 자동으로 해주는게 HomeBrew인 셈이다..
근데 HomeBrew를 설치하는 과정에서 오류가 났다..
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The Xcode Command Line Tools will be installed.
Press RETURN to continue or any other key to abort:
==> /usr/bin/sudo /usr/sbin/chown -R ab:admin /usr/local/Homebrew
==> Searching online for the Command Line Tools
==> /usr/bin/sudo /usr/bin/touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
라는 오류가 났고.. 이 오류 또한 M1이기 때문에 발생하는 호환성 문제...
해결방법은 직접 터미널에서 아래와 같이 입력해서 HomeBrew 설치에 필요한 일부 부분을 깔아주는 것..
xcode-select --install
네이버 맵을 구현하는 과정에서..
Undefined symbol: OBJC_CLASS$_NMFMapView
라는 오류가 생겼고 해결까지 꽤 오래걸렸다.. 그냥 아래 링크에서 하라는대로 하고
https://crazybrain.tistory.com/51
만약 M1 노트북이면 마지막에 pod install이 아닌 arch -x86_64 pod install 을 해주면 된다..
시간 투자
-> 뭔가 물리적인 시간 투자를 그렇게 많이 못했던것 같다. 진짜 이번주에 이런저런일들이 많았어서.. 뭔가 시간이 하루이틀만 더 있어도 api 가공도 좀 더 잘했을 것같고, UI는 물론 기능적인 측면에서도 훨씬 나았을텐데.. 많이 아쉽다..
식당 음식 Image 어디로..? 😅
-> 내가 찾던 Api는 음식점의 위치(위도, 경도)와 대표 메뉴, 그리고 사진까지 담겨있는것이였지만.. 그런 Api를 찾는게 쉽지가 않았다.
-> 그래서 그냥 각자 다른 Api로 한개는 음식점의 정보만, 그리고 나머지 하나는 음식의 사진을 받아와 그냥 그럴듯하게라도 TableView 구성을 하려고 했는데, 자꾸 한 VC에서 두개의 Alamofire request하는게 안되서 결국 못했다.. ㅠㅠ 너무 아쉽..
Api 개수 모자람..
-> 내가 구현하려고 했던 최소한의 Api 개수를 못채웠다.. 흑흑... 그래도 구현에 앞서 사용했던 Api는 많으니... 이걸로 만족..
전체적으로 미흡한 UI...