KOKKOK Move
범용 위치 라이브러리를 서비스 요구사항에 맞는 Native Module로 전환
Problem
현재 위치 조회가 timeout으로 자주 실패했습니다. timeout과 캐시 유효 시간을 늘리면 오류 표시는 줄일 수 있었지만 대기 시간이 길어지고 오래된 좌표가 반환될 가능성이 커져 근본적인 해결이 아니었습니다.
Solution
- 라이브러리의 캐시 우선 조회와 지속 위치 업데이트 구조를 확인하고 앱에 필요한 단발성 조회와의 차이를 분석했습니다.
- Android는 FusedLocationProviderClient, iOS는 CLLocationManager를 사용한 Native Module을 직접 구현했습니다.
- 현재 위치를 먼저 요청하고 제한 시간 안에 응답하지 않을 때만 마지막 위치를 반환하도록 fallback 순서를 바꿨습니다.
- 권한 거부, 위치 서비스 비활성화와 timeout을 JavaScript에서 구분할 수 있도록 오류 계약을 정의했습니다.
Result
- Android 조회 성공률을 72%에서 100%로 개선했습니다.
- Android 응답 시간 중앙값을 67.3ms에서 41.8ms로 단축했습니다.
- iOS는 캐시보다 현재 좌표를 우선해 위치의 최신성을 높였습니다.