iOS 모바일 추적 SDK - Amazon Location Service

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

iOS 모바일 추적 SDK

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

iOS 추적SDK은 iOS용 GitHubAmazon Location Mobile Tracking 에서 사용할 수 있습니다. SDK

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

설치

다음 절차에 따라 iOSSDK용 모바일 추적을 설치합니다.

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

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

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

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

사용량

다음 절차에서는 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 의 자격 증명을 사용하여 인증 도우미를 생성 AWS SDK하여 AuthHelper 객체를 생성하고 와 함께 사용합니다.

    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에는 3개의 내장 위치 필터SDK가 있습니다.

  • 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 Mobile SDK 추적 함수

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

  • 클래스: LocationTracker

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

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

  • 클래스: LocationTracker

    setTrackerConfig(config: LocationTrackerConfig)

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

  • 클래스: 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 함수를 구현해야 합니다.

예시

이 섹션에서는 iOSSDK용 Amazon Location Mobile Tracking 사용의 예를 자세히 설명합니다.

참고

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) } }) }