Device.subscribeLocation
함수형 API
startUpdateLocation으로도 같은 기능을 쓸 수 있어요.
기능 설명
디바이스의 위치 변경을 계속 감지하고, 위치가 바뀔 때마다 onEvent 콜백을 실행해요. 반환하는 cleanup 함수로 구독을 해제해야 해요. timeInterval은 시스템 영향으로 지정한 값보다 길어질 수 있어요.
위치 권한이 없으면 onError 콜백에 StartUpdateLocationPermissionError(GetCurrentLocationPermissionError와 동일한 클래스)가 전달돼요. Device.subscribeLocation.getPermission() / Device.subscribeLocation.openPermissionDialog()로 권한을 확인·요청할 수 있어요.
타입
Device.subscribeLocation(params: StartUpdateLocationEventParams): () => void;Params
type StartUpdateLocationEventParams = {
onEvent: (location: Location) => void;
onError: (error: unknown) => void;
options: {
accuracy: Accuracy;
/** 위치 업데이트 최소 주기(ms)예요. */
timeInterval: number;
/** 위치 변경을 감지할 거리(m)예요. */
distanceInterval: number;
};
};Response
구독을 해제하는 cleanup 함수(() => void)를 반환해요.
에러
에러는 onError 콜백에 클래스 인스턴스로 전달돼요 — error instanceof StartUpdateLocationPermissionError로 식별해요. 클래스는 @apps-in-toss/web-framework에서 import할 수 있어요.
에러 클래스
설명
StartUpdateLocationPermissionError
위치 업데이트 권한이 거부된 경우예요. Device.subscribeLocation.openPermissionDialog()로 다시 요청할 수 있어요.
예시 코드
도움이 되었나요?