iOS 실시간 위치 정보 가져오기 - 확장판

2024. 12. 21. 13:08·React Native/공통
반응형

사용자의 위치 정보를 계속 가지고오는 작업을 진행했었다. 

이번에는 사용자의 위치 정보를 일정 거리 이상 이동했을 때 가지고 오는 방법을 알아보려고 한다. 

실시간으로 계속 가지고 온다면 위치 확인 성능은 좋겠지만 배터리 사용량은 증가할테니깐 상황에 맞는 필터를 건다면 

성능도 잡고, 기능도 구현하는 좋은 방향이 되지 않을까?? 

 

본 글은 앞선 위치 정보 가지고 오기 글을 기준으로 작성했기 때문에 전체적인 코드는 나오지 않습니다.

만약 해당 기능이 필요하다면 글을 먼저 확인 후 여길 다시 찾아주세요! 

 

distanceFilter

locationManager 에서 사용할 수 있는 옵션 중 하나이다. 사용하면 설정해준 거리만큼 이동해야지 다시 호출된다. 

- (instancetype)init {
  self = [super init];
  if (self) {
    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    
    // iOS 14 이상에서는 정확도 권한을 요청할 수 있습니다.
    if (@available(iOS 14.0, *)) {
      self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    }
      
    // 위치 서비스 권한 요청
    [self.locationManager requestWhenInUseAuthorization];
    [self.locationManager requestAlwaysAuthorization];
    
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    self.locationManager.distanceFilter = 10; // 10m 이동할 때마다 업데이트 
    
    // 백그라운드에서도 위치 업데이트를 받을 수 있도록 설정 (iOS 9 이상)
    if ([self.locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
      self.locationManager.allowsBackgroundLocationUpdates = YES;
    }
    
    self.locationManager.pausesLocationUpdatesAutomatically = NO;

    // showsBackgroundLocationIndicator 설정 (iOS 11 이상)
    if (@available(iOS 11.0, *)) {
      self.locationManager.showsBackgroundLocationIndicator = YES;
    }
  }
  return self;
}

설정 하는 것도 아주 간단하다. 

초기화 할 때 추가해주면 된다. 설정해두면 startUpdatingLocation 함수가 설정해둔 거리 이후에 호출된다. 

 

self.locationManager.distanceFilter = 10;

단위는 m 단위로 10을 넣어주면 10m의 거리를 이동한 뒤에 동작한다는 뜻이다. 

비교적 높은 정확도가 필요하다면 값을 낮게 주면 자주 호출되면서 GPS 정보를 많이 호출할 수 있을 것이며, 크게하면 

호출되는 횟수는 줄어들겠지만 배터리 소모량은 비교적 적어질 것이다. 

 

중간에서 밸런스를 잘 맞추는게 중요하다.

 

startMonitoringSignificantLocationChanges

앞서 알아본 distanceFilter는 내가 원하는 거리를 설정해서 해당 거리를 이동했을 때 호출된다면 

이번에 사용할 것은 시스템에서 설정된 거리만큼 이동해야지 호출시키는 방법이다. 

RCT_EXPORT_METHOD(startMonitoringSignificantLocationChanges) {
  [self.locationManager startMonitoringSignificantLocationChanges];
}

RCT_EXPORT_METHOD(stopMonitoringSignificantLocationChanges) {
  [self.locationManager stopMonitoringSignificantLocationChanges];
}

사용 방법은 간단하다. 

실행하는 함수와 종료하는 함수를 추가로 설정해줘야 하지만 따로 거리를 설정할 필요는 없다. 

 

두가지 중 원하는 방법으로 즐거운 개발을 하세요~!

혹은 더 좋은 방법이 있다면 알려주시면 더 감사하구요!

반응형
저작자표시 비영리 변경금지 (새창열림)

'React Native > 공통' 카테고리의 다른 글

react native flex:1 의 오류  (1) 2024.11.16
iOS 실시간 위치 정보 가지고 오기  (1) 2024.08.24
React Native 파이어베이스 배포하기  (1) 2024.08.10
[React Native] 빌드하기  (0) 2023.08.28
[React Native] 첫 프로젝트  (2) 2022.07.17
'React Native/공통' 카테고리의 다른 글
  • react native flex:1 의 오류
  • iOS 실시간 위치 정보 가지고 오기
  • React Native 파이어베이스 배포하기
  • [React Native] 빌드하기
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    typescript
    바질
    덤프
    ChatGPT
    ReactNative
    네이버 부스트캠프
    영어회화
    redux
    타입스크립트
    자바스크립트
    webpack
    영어독학
    CCNA
    프로그래머스
    Node.js
    리액트
    네트워크
    javascript
    바질 키우기
    타일러영어
    Babel
    리얼학습일기
    다이소
    식물
    리얼클래스
    next.js
    Docker
    알고리즘
    react
    CSS
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
iOS 실시간 위치 정보 가져오기 - 확장판
상단으로

티스토리툴바