Code Monkey home page Code Monkey logo

cafe's Introduction

Hits

cafe's People

Contributors

commitcomplete avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

cafe's Issues

[Feat] LocalSearch request 제한

문제 상황

  • apple에서 제공하는 LocalSearch는 리퀘스트 횟수에 제한이 있다. (1분에 50회)
  • 한번 호출시에 생성되는 request의 개수는 최대 25. 즉 2번 호출하면 1분은 쉬어야 한다.
    -> 타이머를 생성하여 중복호출을 막는 방법을 구현해보자

TODO

  • 버튼 클릭시에 타이머를 생성하여 중복호출 제한 하기

[Feat] 서치버튼의 쿨타임 명시

문제 상황

  • 서치버튼이 쿨타임에 들어가면 "커피 식히는중..." 이라는 문구가 나오는데, 이 문구가 정보를 제대로 전달하지 못하고 있다.

TODO

  • 텍스트 수정하기
  • 타이머 추가하기

[Feat] 현재 위치 기반으로 주변 카페찾기

문제 상황

  • 사용자 주변의 카페를 찾아야 한다.
  • 네이버에서 제공하는 지역검색 api를 사용한다. But
    -> 현재 특정 지점을 기준으로 주변을 검색해주는 기능은 개인을 대상으로 제공하고 있지 않다.
    -> 현재 위치(KATECH)를 기반으로 x,y 좌표에 +- 100을 하여 주변을 검색하려 했으나 애초에 파라미터로 xy값을 가지고 있지 않다.

따라서 다른 방법을 찾아야 했다.

  1. 카카오 api - 현재 위치를 기준으로 주변을 검색해주는 기능을 제공하고 있다. (원래의 기능구현 목적에는 적합함)
  2. 현재 위치(위도,경도)를 한국 주소로 변환해 해당 주소내에 있는 카페를 검색하고 소팅하여 보여준다.

이중에서 2번을 선택한다.
원래의 의도로 보자면 첫번째 방법이 더 적합하겠지만 두번째 방법의 정확도가 얼마나 될지도 궁금하고 더 많은 전처리 과정이 필요해서 더 많이 배워갈수 있을것 같다.

TODO

  • 현재 위치를 기준으로 리뷰순, 정확도순 서치
  • 정확도 순으로 서치하기

[Feat] 리스트에서 아이템 클릭시 띄울 정보 창 생성

문제 상황

  • 리스트의 아이템 클릭시 카페의 정보를 띄울 창이 필요하다.
  • 웹뷰 혹은 커스텀 창을 제공하여 해당 카페에 대한 정보들을 보여준다.

TODO

  • webview를 제공하여 카페에 대한 정보를 네이버 지도에서 클릭했을때 처럼 보여준다.
  • 커스텀 뷰를 만들어 해당 좌표값에 있는 상점에 대한 정보를 받아 커스텀하여 처리해준다.
  • URL Scheme을 이용한 네이버 지도 연동 ( 기존의 방법들은 지원하지 않는 것들로 확인)

[Feat] 자동 길 업데이트 이슈

문제 상황

  • 사용자가 맵뷰에 진입시에 자동적으로 경로를 업데이트하는데 현재 3초마다 업데이트하고 있다.
  • 문제는 1분에 50회로 경로 request횟수가 제한되어 있다는 것인데 이 자동 경로 업데이트 를 사용자에게 제공하려면 원래 하려던대로 2번 검색하고 쿨타임을 가지는것이 아닌 1번검색으로 변경해야 한다.

TODO

  • 테스트해보기

[Feat] 서치결과로 나온 카페들까지의 거리 계산 + 소팅

문제 상황

  • 받아온 카페들의 서치 기준은 정확도, 리뷰순이므로 현재위치에서 얼마나 멀리 떨어져 있는지는 표시되어 있지 않다. 따라서 따로 계산이 필요한데, 이는 네이버 map에서 제공하는 기능을 이용하여 값을 반환 받는다.

TODO

  • 네이버 map을 이용하여 각각의 거리계산 하기 - geocoding을 이용한 특정 거리에서 거리계산

[Feat] 테이블뷰 스크롤 원위치

문제 상황

  • 테이블뷰의 스크롤이 검색이후에도 그 위치에 남아있다.

TODO

  • 재검색이후에는 스크롤을 탑으로 끌어올린다.

[Feat] 맵뷰에서 경로 재추적 버튼 만들기

문제 상황

  • 자신의 위치가 업데이트 될때마다 루트를 재설정하기에는 문제가 있다고 판단하기도 하고, 네이버지도에서도 한번 설정된 경로는 다시 바뀌지 않는 것으로 보아 하지 않는것으로 한다.
  • 버튼을 누를 당시의 위치를 기준으로 경로를 재설정하는것으로 추가기능을 제공한다.

TODO

  • 00하기

[Feat] MapKit을 이용하여 현재위치와 카페와의 거리 표시

문제 상황

  • 네이버 map이 유료로 변경됨에 따라 MapKit을 이용하여 현재위치와 카페까지의 거리를 나타내어야 한다.

Process

  1. CLLocation을 이용해 현재 위치의 경도와 위도를 받아온다. (127.1234 , 36.1234)
  2. CLGeoCoder에서 제공하는 ReverseGeocoding을 이용해 현재 경도와 위도를 주소로 변환한다. (서울특별시 가나구 다라동 마바길 34)
  3. 변환한 주소에서 '시' 정보 + '동' 정보 + "카페"를 합쳐 query문을 작성한다. (가나구 다라동 카페)
  4. 네이버 '지역 검색'에 query문을 삽입한다.
  5. 정확도순으로 리스팅된 카페 5개의 타이틀, 주소를 받아온다.
  6. 카페의 주소를 CLGeoCoder에서 제공하는 GeoCoding을 이용해 변환한다. ( 127.3456, 36.4553)
  7. Mapkit의 route생성을 이용해 현재위치와 카페의 위치간의 route를 작성하고 거리를 받아온다.

[Feat] MapView 생성

문제 상황

  • 네이버에서 제공하는 mapkit을 이용하여 네이버 지도 기반 map View 생성
  • 생성된 맵뷰에서는 통상적인 map + 이전 화면의 list에서 생성된 근처 카페의 위치를 띄운다.
  • 사용자가 버튼을 누르기 전이라면 로딩화면 or 안내문 or 회색화면정도 띄운다.

TODO

  • 네이버 mapkit(가명) 사용하기
  • viewmodel에서 정보 비동기적으로 받아 맵에 띄우기
  • URL scheme을 이용한 네이버 지도 연동으로 변경

[Feat] 리스트뷰와 맵뷰간의 공통된 데이터 관리

문제 상황

  • 사용자의 현재 위치를 기반으로 불러온 주위 카페정보는 리스트뷰에서나 맵뷰에서나 공통으로 사용한다.
  • 서치 관련 함수를 포함하는 뷰모델을 싱글톤 클래스로 사용하고 , 찾은 정보도 뷰모델에서 관리한다. (따로 데이터매니저 x)

TODO

  • 싱글톤클래스로 뷰모델 생성하기

[Feat] 첫 화면 애니메이션 끝나면 나올 버튼 fade in + 버튼 클릭시 발생하는 회전

문제 상황

  • 첫 화면 애니메이션 끝나감과 동시에 버튼이 페이드인 되어야 한다.
  • 버튼 클릭시 네이버 api를 호출하고 호출하는 동안 컵이 회전하는 애니메이션 보여주기

TODO

  • 애니메이션이 끝났다는 처리를 받을 방법을 정하기
  • rx를 이용한 비동기적 처리 받기 혹은 끝나는 시간을 계산하여 dispatchqueue 를 이용한 딜레이 처리

[Chore] 안쓰는 코드 정리

문제 상황

  • 기존에 사용했던 네이버 api가 남아있다.
  • 이를 포함한 사용되지 않는 코드들을 정리한다.

TODO

  • 리팩토링하기

[Refactor] 코드 정리 AGAIN

문제 상황

  • 로직적인 정리는 아닐지라도 보이는 코드라도 정리한다. 당시에는 나름정돈되었다고 생각했다...

TODO

  • REFACTOR

[Feat] 맵뷰에서의 현재위치 변경

문제 상황

  • 현재 맵뷰에서의 현재위치는 이전 리스트에서 받은 좌표를 기준으로 한다.
  • 맵뷰에 들어가서 locationmanager에서 새로 좌표를 받아 이를 대체한다. (정확도를 높이기 위해)

TODO

  • 00하기

[Feat] 현재 위치 받아오기

문제 상황

  • 사용자 주변의 카페위치를 파악하기 위해서는 사용자의 현재위치를 받아와야 한다.

TODO

  • 사용자에게 퍼미션 구하기
  • CLLocation을 이용하여 사용자의 위도,경도 구하기
  • 위도,경도를 주소로 변환하기

[Feat] distance를 구하는 함수에대한 유효성 검증

문제 상황

  • 비교적 한국 localizing이 될되었다고 판단되는 애플 지도의 거리를 구하는 함수가 유효한지가 불분명하다.
  1. 한국 주소지에대한 위도,경도 변환이 정상적으로 작동하는가
  2. 거리를 구하는 함수가 단순 유클리드 거리가 아닌 사람이 걸어갈수 있는 기준의 길을 바탕으로 도출한 거리인가

TODO

  • 비동기적 순서를 제외한 각각의 함수 테스트

[Feat] 맵뷰로 이동했을때 현재위치에서 목표지점까지의 경로 보여주기

문제 상황

  • 거리는 정상적으로 업데이트 되었으나, 경로표시가 정상적으로 진행되지 않음
  • mapview에서 제공하는 update 를 사용하여 업데이트하였으나 장시간 사용하게 되면 프레임이 낮아진다. ( 메모리 문제)
  • 현재위치를 표시한 핀포인트를 삭제하거나 동적으로 움직여야 한다.
  • 맵뷰로 이동했다가 다시 리스트로 복귀하면 바뀐 거리가 반영되어 있지 않다.
  • 리스트에 표기된 거리와 맵뷰에 들어가서 표기되는 거리가 동일하지 않다. (현재 위치를 제대로 못잡아서 생기는 문제같다.)

TODO

  • 00하기

[Feat] 서치하지 못했을 경우 처리

문제 상황

  • 주변에 존재하는 카페가 없을 경우 혹은 네트워크 처리가 일정시간 이상으로 지연되었을 경우의 처리

TODO

  • timer를 따로 생성하여 프로세스 강제종료 시키기

[Feat] 특정 위치에서의 서치 에러 문제

문제 상황

  • 테스트를 위해 인천의 어느 지역으로 위치를 옮기고 테스트한 결과 , 에러가 발생하여 서치가 되지않는 현상 발생

해결과정 1

애플에서 기본으로 제공하는 geocoding이 받아들이지 못하는 주소가 존재한다.
-> geocoding만 UnitTest한 결과 상세주소까지 들어가면 geocoding을 할 수 없다는 사실을 알아냄! (ex : ~빌딩 ~층)
-> 이를 제거하기 위해 주소를 공백 기준으로 분리하고 앞에서부터 5개까지만 받아서 주소로 받기로함

해결과정 2

네이버 검색 api에서 제공하는 기본 api가 도출하는 주소 중에서 공백(_)없이 도출되는 주소가 존재한다.
-> 앞선 5개까지만 받는 과정에서 문제가 있었다.
-> 주소 문자열을 나누고 합치는 과정에서 공백으로 나눈 문자 배열의 개수가 5개보다 많으면 5개까지 합쳐서 반환하는데, 이때 공백을 추가하지 않은것!

해결과정 3

-> 나눈 문자열의 개수가 5개보다 작으나 상세주소를 포함하는 경우가 있었다.
-> 한국의 주소체계를 살펴보니 번지나 건물번호로 숫자로 끝나는 부분이 존재하고 이 부분 다음부터는 상세주소로 들어감을 확인
-> 공백으로 나눈 문자열을 숫자가 있는 부분까지만 사용할수 있도록 전처리

-> 해결!

[Feat] UserTest를 통한 피드백 (10/16)

문제 상황

  • 출시하기 이전 앱을 사용하는 사용자의 측면에서 앱을 사용해본다.
  • 멈춰있는 사용자의 피드백은 많이 받았으니 움직이면서 앱을 사용한다는 가정으로 테스트한다.

TODO

  • 테스트하고 결과 추가하기

[Fix] 얼음소리 묵음 이슈

문제 상황

  • 기존의 기기에서는 정상적으로 나오던 얼음소리가 테스트플라이트에서는 나오지 않는다.

TODO

  • 고치기

[Feat] 탐색완료 후의 과정

문제 상황

  • 탐색완료후 탐색버튼을 다시 사용할수 있도록 바꾸어야 한다. (재탐색)

TODO

  • 재탐색할수 있도록 변경

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.