기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
추적 SDKs 사용 방법
이 주제에서는 추적 SDKs.
Amazon Location 모바일 추적 SDK는 쉽게 인증하고 디바이스 위치를 캡처하고 Amazon Location Tracker에 위치 업데이트를 전송하는 데 도움이 되는 유틸리티를 제공합니다. SDK는 구성 가능한 업데이트 간격을 사용하여 위치 업데이트의 로컬 필터링을 지원합니다. 이렇게 하면 데이터 비용이 절감되고 iOS 애플리케이션의 간헐적인 연결이 최적화됩니다.
iOS 추적 SDK는 GitHub: iOS용 Amazon Location 모바일 추적 SDK
이 섹션에서는 Amazon Location 모바일 추적 iOS SDK에 대한 다음 주제를 다룹니다.
설치
다음 절차에 따라 iOS용 모바일 추적 SDK를 설치합니다.
-
Xcode 프로젝트에서 파일로 이동하여 패키지 종속성 추가를 선택합니다.
-
검색 창에 https://github.com/aws-geospatial/amazon-location-mobile-tracking-sdk-ios/
URL을 입력하고 Enter 키를 누릅니다. -
amazon-location-mobile-tracking-sdk-ios
패키지를 선택하고 패키지 추가를 클릭합니다. -
AmazonLocationiOSTrackingSDK
패키지 제품을 선택하고 패키지 추가를 클릭합니다.
사용법
다음 절차에서는 Amazon Cognito의 자격 증명을 사용하여 인증 도우미를 생성하는 방법을 보여줍니다.
-
라이브러리를 설치한 후
info.plist
파일에 다음 설명 중 하나 또는 둘 다를 추가해야 합니다.Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
-
다음으로 클래스에서 AuthHelper를 가져옵니다.
import AmazonLocationiOSAuthSDKimport AmazonLocationiOSTrackingSDK
-
그런 다음 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
이 섹션에서는 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
객체를 인증하고 생성하는 방법을 보여줍니다.
참고
이 절차에서는 설치 섹션에 언급된 라이브러리를 가져온 것으로 가정합니다.
-
코드에서 다음 클래스를 가져옵니다.
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
-
그런 다음
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")
-
이제
LocationCredentialsProvider
및LocationTrackerConfig
를 사용하여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()