추적 SDKs 사용 방법 - Amazon Location Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

추적 SDKs 사용 방법

이 주제에서는 추적 SDKs.

Amazon Location 모바일 추적 SDK는 쉽게 인증하고 디바이스 위치를 캡처하고 Amazon Location Tracker에 위치 업데이트를 전송하는 데 도움이 되는 유틸리티를 제공합니다. SDK는 구성 가능한 업데이트 간격을 사용하여 위치 업데이트의 로컬 필터링을 지원합니다. 이렇게 하면 데이터 비용이 절감되고 iOS 애플리케이션의 간헐적인 연결이 최적화됩니다.

iOS 추적 SDK는 GitHub: iOS용 Amazon Location 모바일 추적 SDK에서 사용할 수 있습니다.

이 섹션에서는 Amazon Location 모바일 추적 iOS SDK에 대한 다음 주제를 다룹니다.

설치

다음 절차에 따라 iOS용 모바일 추적 SDK를 설치합니다.

  1. Xcode 프로젝트에서 파일로 이동하여 패키지 종속성 추가를 선택합니다.

  2. 검색 창에 https://github.com/aws-geospatial/amazon-location-mobile-tracking-sdk-ios/ URL을 입력하고 Enter 키를 누릅니다.

  3. amazon-location-mobile-tracking-sdk-ios 패키지를 선택하고 패키지 추가를 클릭합니다.

  4. AmazonLocationiOSTrackingSDK 패키지 제품을 선택하고 패키지 추가를 클릭합니다.

사용법

다음 절차에서는 Amazon Cognito의 자격 증명을 사용하여 인증 도우미를 생성하는 방법을 보여줍니다.

  1. 라이브러리를 설치한 후 info.plist 파일에 다음 설명 중 하나 또는 둘 다를 추가해야 합니다.

    Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
  2. 다음으로 클래스에서 AuthHelper를 가져옵니다.

    import AmazonLocationiOSAuthSDKimport AmazonLocationiOSTrackingSDK
  3. 그런 다음 Amazon Cognito의 자격 증명을 사용하여 인증 도우미를 생성하여 AuthHelper 객체를 생성하고 AWS SDK와 함께 사용합니다.

    let authHelper = AuthHelper() let locationCredentialsProvider = authHelper.authenticateWithCognitoUserPool(identityPoolId: "My-Cognito-Identity-Pool-Id", region: "My-region") //example: us-east-1 let locationTracker = LocationTracker(provider: locationCredentialsProvider, trackerName: "My-tracker-name") // Optionally you can set ClientConfig with your own values in either initialize or in a separate function // let trackerConfig = LocationTrackerConfig(locationFilters: [TimeLocationFilter(), DistanceLocationFilter()], trackingDistanceInterval: 30, trackingTimeInterval: 30, logLevel: .debug) // locationTracker = LocationTracker(provider: credentialsProvider, trackerName: "My-tracker-name",config: trackerConfig) // locationTracker.setConfig(config: trackerConfig)

필터

Amazon Location 모바일 추적 iOS SDK에는 3개의 내장 위치 필터가 있습니다.

  • TimeLocationFilter: 정의된 시간 간격을 기준으로 업로드할 현재 위치를 필터링합니다.

  • DistanceLocationFilter: 지정된 거리 임계값을 기준으로 위치 업데이트를 필터링합니다.

  • AccuracyLocationFilter: 마지막 업데이트 이후 이동한 거리를 현재 위치의 정확도와 비교하여 위치 업데이트를 필터링합니다.

이 예제에서는 생성 시 LocationTracker에 필터를 추가합니다.

val config = LocationTrackerConfig( trackerName = "MY-TRACKER-NAME", logLevel = TrackingSdkLogLevel.DEBUG, accuracy = Priority.PRIORITY_HIGH_ACCURACY, latency = 1000, frequency = 5000, waitForAccurateLocation = false, minUpdateIntervalMillis = 5000, locationFilters = mutableListOf(TimeLocationFilter(), DistanceLocationFilter(), AccuracyLocationFilter()) ) locationTracker = LocationTracker( applicationContext, locationCredentialsProvider, config, )

이 예제에서는 LocationTracker를 사용하여 런타임 시 필터를 활성화 및 비활성화합니다.

// To enable the filter locationTracker?.enableFilter(TimeLocationFilter()) // To disable the filter locationTracker?.disableFilter(TimeLocationFilter())

iOS 모바일 SDK 추적 함수

iOS용 Amazon Location 모바일 추적 SDK에는 다음 함수가 포함됩니다.

  • 클래스: LocationTracker

    init(provider: LocationCredentialsProvider, trackerName: String, config: LocationTrackerConfig? = nil)

    이는 LocationTracker 객체를 생성하는 초기화 기능입니다. LocationCredentialsProvider , trackerName의 인스턴스와 선택적으로 LocationTrackingConfig의 인스턴스가 필요합니다. 구성이 제공되지 않으면 기본값으로 초기화됩니다.

  • 클래스: LocationTracker

    setTrackerConfig(config: LocationTrackerConfig)

    이렇게 하면 위치 추적기를 초기화한 후 언제든지 트래커의 구성이 적용되도록 설정됩니다.

  • 클래스: LocationTracker

    getTrackerConfig()

    이렇게 하면 앱에서 사용하거나 수정할 위치 추적 구성을 가져옵니다.

    반환 값: LocationTrackerConfig

  • 클래스: LocationTracker

    getDeviceId()

    위치 추적기의 생성된 디바이스 ID를 가져옵니다.

    반환 값: String?

  • 클래스: LocationTracker

    startTracking()

    사용자의 위치에 액세스하여 AWS 트래커로 전송하는 프로세스를 시작합니다.

  • 클래스: LocationTracker

    resumeTracking()

    사용자의 위치에 액세스하여 AWS 트래커로 전송하는 프로세스를 재개합니다.

  • 클래스: LocationTracker

    stopTracking()

    사용자의 위치를 추적하는 프로세스를 중지합니다.

  • 클래스: LocationTracker

    startBackgroundTracking(mode: BackgroundTrackingMode)

    애플리케이션이 백그라운드에 있는 동안 사용자의 위치에 액세스하여 AWS 트래커로 전송하는 프로세스를 시작합니다. BackgroundTrackingMode에는 다음 옵션이 있습니다.

    • Active: 이 옵션은 위치 업데이트를 자동으로 일시 중지하지 않습니다.

    • BatterySaving:이 옵션은 위치 업데이트를 자동으로 일시 중지합니다.

    • None:이 옵션은 전체적으로 백그라운드 위치 업데이트를 비활성화합니다.

  • 클래스: LocationTracker

    resumeBackgroundTracking(mode: BackgroundTrackingMode)

    애플리케이션이 백그라운드에 있는 동안 사용자의 위치에 액세스하여 AWS 트래커로 전송하는 프로세스를 재개합니다.

  • 클래스: LocationTracker

    stopBackgroundTracking()

    애플리케이션이 백그라운드에 있는 동안 사용자의 위치에 액세스하여 AWS 트래커로 전송하는 프로세스를 중지합니다.

  • 클래스: LocationTracker

    getTrackerDeviceLocation(nextToken: String?, startTime: Date? = nil, endTime: Date? = nil, completion: @escaping (Result<GetLocationResponse, Error>)

    시작 날짜 및 시간과 종료 날짜 및 시간 사이에 사용자 디바이스에 대해 업로드된 추적 위치를 검색합니다.

    반환 값: Void

  • 클래스: LocationTrackerConfig

    init()

    이렇게 하면 기본값으로 LocationTrackerConfig가 초기화됩니다.

  • 클래스: LocationTrackerConfig

    init(locationFilters: [LocationFilter]? = nil, trackingDistanceInterval: Double? = nil, trackingTimeInterval: Double? = nil, trackingAccuracyLevel: Double? = nil, uploadFrequency: Double? = nil, desiredAccuracy: CLLocationAccuracy? = nil, activityType: CLActivityType? = nil, logLevel: LogLevel? = nil)

    이렇게 하면 사용자 정의 파라미터 값으로 LocationTrackerConfig가 초기화됩니다. 파라미터 값이 제공되지 않으면 기본값으로 설정됩니다.

  • 클래스: LocationFilter

    shouldUpload(currentLocation: LocationEntity, previousLocation: LocationEntity?, trackerConfig: LocationTrackerConfig)

    LocationFilter는 사용자가 사용자 지정 필터 구현을 위해 사용자가 구현할 수 있는 프로토콜입니다. 사용자는 이전 위치와 현재 위치를 비교하고 현재 위치를 업로드해야 하는 경우 반환하는 shouldUpload 함수를 구현해야 합니다.

예시

이 섹션에서는 iOS용 Amazon Location 모바일 추적 SDK 사용의 예를 자세히 설명합니다.

참고

info.plist 파일에 필요한 권한이 설정되어 있는지 확인합니다. 이는 사용법 섹션에 나열된 것과 동일한 권한입니다.

다음 예제에서는 디바이스 위치를 추적하고 추적된 위치를 검색하는 기능을 보여줍니다.

Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description

위치 추적 시작:

do { try locationTracker.startTracking() } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

위치 추적 재개:

do { try locationTracker.resumeTracking() } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

위치 추적 중지:

locationTracker.stopTracking()

백그라운드 추적 시작:

do { locationTracker.startBackgroundTracking(mode: .Active) // .Active, .BatterySaving, .None } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

백그라운드 추적 재개:

do { locationTracker.resumeBackgroundTracking(mode: .Active) } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

백그라운드 추적을 중지하려면:

locationTracker.stopBackgroundTracking()

트래커에서 디바이스의 추적된 위치를 검색합니다.

func getTrackingPoints(nextToken: String? = nil) { let startTime: Date = Date().addingTimeInterval(-86400) // Yesterday's day date and time let endTime: Date = Date() locationTracker.getTrackerDeviceLocation(nextToken: nextToken, startTime: startTime, endTime: endTime, completion: { [weak self] result in switch result { case .success(let response): let positions = response.devicePositions // You can draw positions on map or use it further as per your requirement // If nextToken is available, recursively call to get more data if let nextToken = response.nextToken { self?.getTrackingPoints(nextToken: nextToken) } case .failure(let error): print(error) } }) }

Amazon Location 모바일 추적 SDK는 쉽게 인증하고 디바이스 위치를 캡처하고 Amazon Location Tracker에 위치 업데이트를 전송하는 데 도움이 되는 유틸리티를 제공합니다. SDK는 구성 가능한 업데이트 간격을 사용하여 위치 업데이트의 로컬 필터링을 지원합니다. 이렇게 하면 데이터 비용이 절감되고 Android 애플리케이션의 간헐적인 연결이 최적화됩니다.

Android 추적 SDK는 GitHub: Android용 Amazon Location 모바일 추적 SDK에서 사용할 수 있습니다. 또한 모바일 인증 SDK와 AWS SDK는 AWS Maven 리포지토리에서 모두 사용할 수 있습니다. Android 추적 SDK는 일반 AWS SDK와 함께 작동하도록 설계되었습니다.

이 섹션에서는 Amazon Location 모바일 추적 Android SDK에 대한 다음 주제를 다룹니다.

설치

SDK를 설치하려면 Android Studio에서 build.gradle 파일의 종속성 섹션에 다음 줄을 추가합니다.

implementation("software.amazon.location:tracking:0.0.1") implementation("software.amazon.location:auth:0.0.1") implementation("com.amazonaws:aws-android-sdk-location:2.72.0")

사용법

이 절차는 SDK를 사용하여 LocationTracker 객체를 인증하고 생성하는 방법을 보여줍니다.

참고

이 절차에서는 설치 섹션에 언급된 라이브러리를 가져온 것으로 가정합니다.

  1. 코드에서 다음 클래스를 가져옵니다.

    import software.amazon.location.tracking.LocationTracker import software.amazon.location.tracking.config.LocationTrackerConfig import software.amazon.location.tracking.util.TrackingSdkLogLevel import com.amazonaws.services.geo.AmazonLocationClient import software.amazon.location.auth.AuthHelper import software.amazon.location.auth.LocationCredentialsProvider
  2. 그런 다음 LocationTracker 객체를 생성하는 데 LocationCredentialsProvider 파라미터가 필요하므로 AuthHelper를 생성합니다.

    // Create an authentication helper using credentials from Amazon Cognito val authHelper = AuthHelper(applicationContext) val locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")
  3. 이제 LocationCredentialsProviderLocationTrackerConfig를 사용하여 LocationTracker 객체를 생성합니다.

    val config = LocationTrackerConfig( trackerName = "MY-TRACKER-NAME", logLevel = TrackingSdkLogLevel.DEBUG, accuracy = Priority.PRIORITY_HIGH_ACCURACY, latency = 1000, frequency = 5000, waitForAccurateLocation = false, minUpdateIntervalMillis = 5000, ) locationTracker = LocationTracker( applicationContext, locationCredentialsProvider, config, )

필터

Amazon Location 모바일 추적 Android SDK에는 3개의 내장 위치 필터가 있습니다.

  • TimeLocationFilter: 정의된 시간 간격을 기준으로 업로드할 현재 위치를 필터링합니다.

  • DistanceLocationFilter: 지정된 거리 임계값을 기준으로 위치 업데이트를 필터링합니다.

  • AccuracyLocationFilter: 마지막 업데이트 이후 이동한 거리를 현재 위치의 정확도와 비교하여 위치 업데이트를 필터링합니다.

이 예제에서는 생성 시 LocationTracker에 필터를 추가합니다.

val config = LocationTrackerConfig( trackerName = "MY-TRACKER-NAME", logLevel = TrackingSdkLogLevel.DEBUG, accuracy = Priority.PRIORITY_HIGH_ACCURACY, latency = 1000, frequency = 5000, waitForAccurateLocation = false, minUpdateIntervalMillis = 5000, locationFilters = mutableListOf(TimeLocationFilter(), DistanceLocationFilter(), AccuracyLocationFilter()) ) locationTracker = LocationTracker( applicationContext, locationCredentialsProvider, config, )

이 예제에서는 LocationTracker를 사용하여 런타임 시 필터를 활성화 및 비활성화합니다.

// To enable the filter locationTracker?.enableFilter(TimeLocationFilter()) // To disable the filter locationTracker?.disableFilter(TimeLocationFilter())

Android 모바일 SDK 추적 함수

Android용 Amazon Location 모바일 추적 SDK에는 다음 함수가 포함됩니다.

  • 클래스: LocationTracker

    constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,trackerName: String) 또는 constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,clientConfig: LocationTrackerConfig)

    이는 LocationTracker 객체를 생성하는 초기화 기능입니다. LocationCredentialsProvider , trackerName의 인스턴스와 선택적으로 LocationTrackingConfig의 인스턴스가 필요합니다. 구성이 제공되지 않으면 기본값으로 초기화됩니다.

  • 클래스: LocationTracker

    start(locationTrackingCallback: LocationTrackingCallback)

    사용자의 위치에 액세스하여 Amazon Location 트래커로 전송하는 프로세스를 시작합니다.

  • 클래스: LocationTracker

    isTrackingInForeground()

    위치 추적이 현재 진행 중인지 확인합니다.

  • 클래스: LocationTracker

    stop()

    사용자의 위치를 추적하는 프로세스를 중지합니다.

  • 클래스: LocationTracker

    startTracking()

    사용자의 위치에 액세스하여 AWS 트래커로 전송하는 프로세스를 시작합니다.

  • 클래스: LocationTracker

    startBackground(mode: BackgroundTrackingMode, serviceCallback: ServiceCallback)

    애플리케이션이 백그라운드에 있는 동안 사용자의 위치에 액세스하여 AWS 트래커로 전송하는 프로세스를 시작합니다. BackgroundTrackingMode에는 다음 옵션이 있습니다.

    • ACTIVE_TRACKING: 이 옵션은 사용자의 위치 업데이트를 적극적으로 추적합니다.

    • BATTERY_SAVER_TRACKING: 이 옵션은 15분마다 사용자의 위치 업데이트를 추적합니다.

  • 클래스: LocationTracker

    stopBackgroundService()

    애플리케이션이 백그라운드에 있는 동안 사용자의 위치에 액세스하여 AWS 트래커로 전송하는 프로세스를 중지합니다.

  • 클래스: LocationTracker

    getTrackerDeviceLocation()

    Amazon Location 서비스에서 디바이스 위치를 검색합니다.

  • 클래스: LocationTracker

    getDeviceLocation(locationTrackingCallback: LocationTrackingCallback?)

    융합된 위치 공급자 클라이언트에서 현재 디바이스 위치를 검색하여 Amazon Location 트래커에 업로드합니다.

  • 클래스: LocationTracker

    uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)

    구성된 위치 필터를 기반으로 필터링한 후 Amazon Location 서비스에 디바이스 위치를 업로드합니다.

  • 클래스: LocationTracker

    enableFilter(filter: LocationFilter)

    특정 위치 필터를 활성화합니다.

  • 클래스: LocationTracker

    checkFilterIsExistsAndUpdateValue(filter: LocationFilter)

    특정 위치 필터를 비활성화합니다.

  • 클래스: LocationTrackerConfig

    LocationTrackerConfig( // Required var trackerName: String, // Optional var locationFilters: MutableList = mutableListOf( TimeLocationFilter(), DistanceLocationFilter(), ), var logLevel: TrackingSdkLogLevel = TrackingSdkLogLevel.DEBUG, var accuracy: Int = Priority.PRIORITY_HIGH_ACCURACY, var latency: Long = 1000, var frequency: Long = 1500, var waitForAccurateLocation: Boolean = false, var minUpdateIntervalMillis: Long = 1000, var persistentNotificationConfig: NotificationConfig = NotificationConfig())

    이렇게 하면 사용자 정의 파라미터 값으로 LocationTrackerConfig가 초기화됩니다. 파라미터 값이 제공되지 않으면 기본값으로 설정됩니다.

  • 클래스: LocationFilter

    shouldUpload(currentLocation: LocationEntry, previousLocation: LocationEntry?): Boolean

    LocationFilter는 사용자가 사용자 지정 필터 구현을 위해 구현할 수 있는 프로토콜입니다. 이전 위치와 현재 위치를 비교하고 현재 위치를 업로드해야 하는지를 반환하는 shouldUpload 함수를 구현합니다.

예시

다음 코드 샘플은 모바일 추적 SDK 기능을 보여줍니다.

이 예제에서는 LocationTracker를 사용하여 백그라운드에서 추적을 시작하고 중지합니다.

// For starting the location tracking locationTracker?.startBackground( BackgroundTrackingMode.ACTIVE_TRACKING, object : ServiceCallback { override fun serviceStopped() { if (selectedTrackingMode == BackgroundTrackingMode.ACTIVE_TRACKING) { isLocationTrackingBackgroundActive = false } else { isLocationTrackingBatteryOptimizeActive = false } } }, ) // For stopping the location tracking locationTracker?.stopBackgroundService()