[flutter] 플러터 geolocator를 이용한 위치 기반 알림 서비스 구현 방법

플러터(Flutter)는 Google에서 개발한 모바일 애플리케이션 개발 프레임워크로, 교차 플랫폼 개발을 지원합니다. geolocator 패키지는 플러터 애플리케이션에서 GPS 및 위치 정보를 사용할 수 있게 해주는 패키지입니다.

이번 글에서는 geolocator 패키지를 이용하여 플러터 애플리케이션에 위치 기반 알림 서비스를 구현하는 방법에 대해 알아보겠습니다.

1. geolocator 패키지 추가하기

우선, pubspec.yaml 파일에 geolocator 패키지를 추가해야 합니다. 다음 코드를 dependencies 섹션에 추가해주세요.

dependencies:
  geolocator: ^7.0.0

이후, 터미널에서 flutter pub get 명령을 실행하여 패키지를 다운로드 받습니다.

2. 위치 권한 설정하기

안드로이드(Android)와 iOS 애플리케이션에서 위치 정보를 사용하기 위해서는 위치 접근 권한 설정이 필요합니다.

안드로이드

AndroidManifest.xml 파일에 다음 라인을 추가합니다.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

iOS

Info.plist 파일에 다음 라인을 추가합니다.

<key>NSLocationWhenInUseUsageDescription</key>
<string>Your description here</string>

앱이 위치 정보를 사용하기 위한 이유를 명확히 설명해주세요.

3. 위치 정보 가져오기

위치 정보를 가져오기 위해서는 Geolocator 클래스의 getCurrentPosition 메서드를 사용합니다. 다음은 간단한 예제 코드입니다.

import 'package:geolocator/geolocator.dart';

void main() async {
  // 위치 정보 가져오기
  Position position = await Geolocator.getCurrentPosition(
    desiredAccuracy: LocationAccuracy.high,
  );

  print('위도: ${position.latitude}');
  print('경도: ${position.longitude}');
}

getCurrentPosition 메서드는 Position 객체를 반환합니다. 이 객체에는 위도(latitude)와 경도(longitude) 정보를 포함하고 있습니다.

4. 위치 정보 업데이트하기

만약 사용자의 위치 변경을 실시간으로 감지하고 싶다면, Geolocator 클래스의 getPositionStream 메서드를 사용할 수 있습니다.

import 'package:geolocator/geolocator.dart';

void main() {
  // 위치 정보 가져오기
  StreamSubscription<Position> positionStream = Geolocator.getPositionStream(
    desiredAccuracy: LocationAccuracy.high,
  ).listen((Position position) {
    print('위도: ${position.latitude}');
    print('경도: ${position.longitude}');
  });

  // 위치 정보 업데이트 멈추기
  // positionStream.cancel();
}

getPositionStream 메서드는 스트림을 반환하며, 새로운 위치 정보가 얻어지면 해당 정보를 처리하는 콜백 함수가 호출됩니다. 위치 정보 업데이트를 멈추려면, cancel 메서드를 호출하면 됩니다.

위치 기반 알림 서비스는 이제 구현되었습니다. 사용자의 위치 정보를 가져와서 이를 활용하여 사용자에게 필요한 정보를 제공할 수 있습니다.

참고 문서: