728x90
1. 위치 정보 받아오기 및 API 전환 시스템
기본 구조:
Google Maps APIOpenStreetMap (OSM) API 를 기본으로 사용합니다.실시간 사용량 체크: Google Maps API의 무료 사용량이 끝나가면 OpenStreetMap (OSM) API로 전환합니다.- 한국용 앱: 한국에서는 기본적으로 네이버
또는카카오지도 API를 사용합니다.네이버/카카오 무료 사용량이 끝나면 Google Maps API로 전환.Google Maps 무료 사용량이 끝나면 OSM API로 전환.- 네이버 지도 API 사용. (월 10,000,000건의 무료 이용량을 제공)
구현 방법:
API 사용량 모니터링:각 API에서 제공하는 사용량 체크 엔드포인트를 주기적으로 호출하여 현재 사용량을 모니터링합니다.무료 사용 한도에 도달하면 다음 우선순위 API로 전환합니다.
API 전환 로직:API 키와 사용량 정보를 관리하는 서비스 또는 모듈을 작성하여, 각 API의 사용량을 실시간으로 체크하고 전환합니다.예를 들어, Google -> OSM 또는 Naver/ Kakao -> Google -> OSM의 순서로 전환하도록 설정합니다.
2. 메뉴 설정 및 랜덤 선택 기능
- 사용자 입력: 사용자가 특정 메뉴를 검색할 수 있도록 검색창 제공.
- 랜덤 메뉴 선택: 메뉴를 랜덤으로 추천하는 기능 제공.
구현 방법:
- 메뉴 데이터베이스:
- 음식 메뉴 데이터베이스를 구축하거나 외부 API (예: Yelp, Foursquare)에서 메뉴 데이터를 가져옵니다.
- 랜덤 선택 알고리즘:
- 사용자 입력이 없는 경우, 전체 메뉴에서 랜덤으로 하나를 선택합니다.
- 사용자 입력이 있는 경우, 해당 입력과 일치하는 메뉴를 검색하여 선택합니다.
3. 선택한 메뉴와 설정 위치 반경 내 음식점 랜덤 선택
- 사용자가 선택한 메뉴와 설정된 위치 반경 내에서 음식점을 랜덤으로 선택하여 추천합니다.
구현 방법:
- 반경 내 음식점 검색:
- 선택한 메뉴에 맞는 음식점들을 지도 API에서 검색합니다 (예: Google Places API, Naver Places API).
- 설정한 반경 내에서 해당 메뉴를 제공하는 음식점 리스트를 가져옵니다.
- 랜덤 추천:
- 검색된 음식점 목록에서 하나를 랜덤으로 선택하여 사용자에게 추천합니다.
추가 구현 고려사항
- 성능 최적화: API 호출 빈도 최소화 및 캐싱 전략을 통해 성능을 최적화합니다.
- 사용자 경험 향상: 사용량 한도에 따른 API 전환이 원활하게 이루어지도록 하여 사용자에게 중단 없는 경험을 제공합니다.
- 로그 및 모니터링: 각 API의 사용량을 기록하고 로그를 통해 시스템 상태를 모니터링합니다.
1. 웹으로 먼저 모든 기능구현 완료하기 (추후 코틀린 웹뷰 사용하여 어플 빌드)
2. 추가로 호스팅을 하여 load할 것인지, 로컬에서 로드할 것인지 생각해볼 것 (호스팅 비용 고려)
2. api키 노출 우려 때문에 무조건 호스팅 필요. 로컬에서 절대x
3. 회원제를 추가해서 결제시스템 추가 후, 회원인 사람은 횟수제한을 둘 것인지 말 것인지 생각해볼 것
3-1. 회원제를 한다면, db는 어떤 서비스로 관리할 것인지 생각해 볼 것 (몽고, 마리아, 포스트그레 중 1)
3. 간단한 회원가입으로 회원제, 결제시스템 적용 / 비회원 하루 3회 무료 / 회원가입 후 하루 15회 무료
3-1. 유료 결제는 후원 형태로. 후원 결제 시 하루 100건 무료 (1회 결제시 평생 무료. 추후 네이버 지도 api 요금에 따라 변경될 소지 있음)
3-2. 회원 db는 몽고db사용
4. 사용되어질 음식이나 식당 이미지들이 저작권에 걸리는지, 피해갈 수 있는 방법
5. 왠만한 모든 아이콘은 ai 생성 사용
6. 사용자 경험에 불편함이 없게 멀티스레드 느낌으로 코드 구현 하도록
7. 고민하지말고 일단 당장 시작
728x90
'끄적 > 나만봐' 카테고리의 다른 글
[토이프로젝트1] 2. 구현(1) - 음식 랜덤 추천 웹/앱 (0) | 2024.09.19 |
---|---|
[토이프로젝트2] 1. 기획 - 유명인의 랜덤 명언 웹/앱 (0) | 2024.09.17 |
개인정보처리방침 (0) | 2024.09.10 |
개인정보처리방침 (0) | 2024.09.05 |
web을 webview를 이용해서 안드로이드 적용하기 (0) | 2024.08.20 |