Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cómo utilizar el seguimiento SDKs
En este tema se proporciona información sobre cómo utilizar el seguimiento SDKs.
El SDK de rastreo en móviles de Amazon Location proporciona utilidades que ayudan a autenticar fácilmente, capturar las posiciones de los dispositivos y enviar actualizaciones de posición a los rastreadores de Amazon Location. El SDK admite el filtrado local de las actualizaciones de ubicación con intervalos de actualización configurables. Esto reduce los costes de datos y optimiza la conectividad intermitente de las aplicaciones iOS.
El SDK de rastreo para iOS está disponible en GitHub: Amazon Location Mobile Tracking SDK for iOS
En esta sección se tratan los siguientes temas del SDK de Amazon Location de rastreo en móviles para iOS:
Instalación
Utilice el siguiente procedimiento para instalar el SDK de rastreo en móviles para iOS:
-
En su proyecto de Xcode, vaya a Archivo y seleccione Agregar dependencias de paquete.
-
Escribe la siguiente URL: https://github.com/aws-geospatial/amazon-location-mobile-tracking-sdk-ios/
en la barra de búsqueda y pulsa la tecla Intro. -
Seleccione el paquete
amazon-location-mobile-tracking-sdk-ios
y haga clic en Agregar paquete. -
Seleccione el producto del paquete
AmazonLocationiOSTrackingSDK
y haga clic en Agregar paquete.
Uso
El siguiente procedimiento muestra cómo crear un ayudante de autenticación con las credenciales de Amazon Cognito.
-
Tras instalar la biblioteca, debe agregar una o ambas descripciones al archivo
info.plist
:Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
-
A continuación, importe el archivo a su AuthHelper clase:
import AmazonLocationiOSAuthSDKimport AmazonLocationiOSTrackingSDK
-
A continuación, creará un
AuthHelper
objeto y lo utilizará con el AWS SDK mediante la creación de un ayudante de autenticación con las credenciales de Amazon Cognito.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)
Filtros
El SDK de rastreo en móviles de Amazon Location para iOS tiene tres filtros de ubicación integrados.
-
TimeLocationFilter
: filtra la ubicación actual que se va a cargar en función de un intervalo de tiempo definido. -
DistanceLocationFilter
: filtra las actualizaciones de ubicación en función de un umbral de distancia especificado. -
AccuracyLocationFilter
: filtra las actualizaciones de ubicación comparando la distancia recorrida desde la última actualización con la precisión de la ubicación actual.
En este ejemplo, se añaden filtros en el LocationTracker
en el momento de la creación:
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, )
En este ejemplo se habilita y deshabilita el filtro en el tiempo de ejecución con LocationTracker
:
// To enable the filter locationTracker?.enableFilter(TimeLocationFilter()) // To disable the filter locationTracker?.disableFilter(TimeLocationFilter())
Características de rastreo en móviles del SDK para iOS Mobile
El SDK de rastreo en móviles de Amazon Location para iOS incluye las siguientes características:
-
Clase:
LocationTracker
init(provider: LocationCredentialsProvider, trackerName: String, config: LocationTrackerConfig? = nil)
Se trata de una función de inicializador para crear un objeto de
LocationTracker
. Requiere instancias deLocationCredentialsProvider
,trackerName
y, opcionalmente, una instancia deLocationTrackingConfig
. Si no se proporciona la configuración, se inicializará con los valores predeterminados. -
Clase:
LocationTracker
setTrackerConfig(config: LocationTrackerConfig)
Esto permite que la configuración del rastreador se aplique en cualquier momento tras la inicialización del rastreador de ubicación.
-
Clase:
LocationTracker
getTrackerConfig()
Esto hace que la configuración de rastreo de ubicación se use o modifique en su aplicación.
Devuelve:
LocationTrackerConfig
-
Clase:
LocationTracker
getDeviceId()
Obtiene el ID de dispositivo generado por el rastreador de ubicación.
Devuelve:
String?
-
Clase:
LocationTracker
startTracking()
Inicia el proceso de acceder a la ubicación del usuario y enviarla al AWS rastreador.
-
Clase:
LocationTracker
resumeTracking()
Reanuda el proceso de acceder a la ubicación del usuario y enviarla al AWS rastreador.
-
Clase:
LocationTracker
stopTracking()
Detiene el proceso de rastreo de la ubicación del usuario.
-
Clase:
LocationTracker
startBackgroundTracking(mode: BackgroundTrackingMode)
Inicia el proceso de acceder a la ubicación del usuario y enviarla al AWS rastreador mientras la aplicación está en segundo plano.
BackgroundTrackingMode
tiene las siguientes opciones:-
Active:
Esta opción no detiene automáticamente las actualizaciones de ubicación. -
BatterySaving:
Esta opción detiene automáticamente las actualizaciones de ubicación. -
None:
En general, esta opción desactiva las actualizaciones de ubicación en segundo plano.
-
-
Clase:
LocationTracker
resumeBackgroundTracking(mode: BackgroundTrackingMode)
Reanuda el proceso de acceder a la ubicación del usuario y enviarla al AWS rastreador mientras la aplicación está en segundo plano.
-
Clase:
LocationTracker
stopBackgroundTracking()
Detiene el proceso de acceder a la ubicación del usuario y enviarla al AWS rastreador mientras la aplicación está en segundo plano.
-
Clase:
LocationTracker
getTrackerDeviceLocation(nextToken: String?, startTime: Date? = nil, endTime: Date? = nil, completion: @escaping (Result<GetLocationResponse, Error>)
Recupera las ubicaciones de rastreo subidas para el dispositivo del usuario entre la fecha y la hora de inicio y de finalización.
Devuelve:
Void
-
Clase:
LocationTrackerConfig
init()
Esto inicializa el LocationTrackerConfig con los valores predeterminados.
-
Clase:
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)
Esto inicializa el
LocationTrackerConfig
con valores de parámetros definidos por el usuario. Si no se proporciona un valor de parámetro, se establecerá en un valor predeterminado. -
Clase:
LocationFilter
shouldUpload(currentLocation: LocationEntity, previousLocation: LocationEntity?, trackerConfig: LocationTrackerConfig)
LocationFilter
es un protocolo que los usuarios pueden implementar para la implementación de sus filtros personalizados. Un usuario tendría que implementar una función deshouldUpload
para comparar la ubicación anterior con la actual y volver si se debe subir la ubicación actual.
Ejemplos
En esta sección se detallan ejemplos del uso del SDK de rastreo en móviles de Amazon Location para iOS.
nota
Asegúrese de que los permisos necesarios estén configurados en el archivo de info.plist
. Son los mismos permisos que se enumeran en la sección Uso.
El siguiente ejemplo muestra la funcionalidad para rastrear la ubicación del dispositivo y recuperar las ubicaciones rastreadas:
Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
Comenzar a rastrear la ubicación:
do { try locationTracker.startTracking() } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }
Reanudar el rastreo de la ubicación:
do { try locationTracker.resumeTracking() } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }
Dejar de rastrear la ubicación:
locationTracker.stopTracking()
Iniciar el rastreo en segundo plano:
do { locationTracker.startBackgroundTracking(mode: .Active) // .Active, .BatterySaving, .None } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }
Reanudar el rastreo en segundo plano:
do { locationTracker.resumeBackgroundTracking(mode: .Active) } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }
Detener el rastreo en segundo plano:
locationTracker.stopBackgroundTracking()
Recuperar las ubicaciones rastreadas del dispositivo del rastreador:
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) } }) }
El SDK de rastreo en móviles de Amazon Location proporciona utilidades que ayudan a autenticar fácilmente, capturar las posiciones de los dispositivos y enviar actualizaciones de posición a los rastreadores de Amazon Location. El SDK admite el filtrado local de las actualizaciones de ubicación con intervalos de actualización configurables. Esto reduce los costes de datos y optimiza la conectividad intermitente de las aplicaciones Android.
El SDK de rastreo para Android está disponible en GitHub: Amazon Location Mobile Tracking SDK for Android
En esta sección se tratan los siguientes temas del SDK de Amazon Location de rastreo en móviles para Android:
Instalación
Para instalar el SDK, agregue las siguientes líneas a la sección de dependencias del archivo build.gradle en Android Studio:
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")
Uso
Este procedimiento le muestra cómo usar el SDK para autenticar y crear el objeto de LocationTracker
:
nota
Este procedimiento supone que ha importado la biblioteca mencionada en la sección Instalación.
-
Importe las siguientes clases a su código:
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
-
A continuación, cree un
AuthHelper
, ya que se necesita el parámetro deLocationCredentialsProvider
para crear un objeto deLocationTracker
:// Create an authentication helper using credentials from Amazon Cognito val authHelper = AuthHelper(applicationContext) val locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")
-
Ahora, use
LocationCredentialsProvider
yLocationTrackerConfig
para crear un objeto deLocationTracker
: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, )
Filtros
El SDK de rastreo en móviles de Amazon Location para Android tiene tres filtros de ubicación integrados.
-
TimeLocationFilter
: filtra la ubicación actual que se va a cargar en función de un intervalo de tiempo definido. -
DistanceLocationFilter
: filtra las actualizaciones de ubicación en función de un umbral de distancia especificado. -
AccuracyLocationFilter
: filtra las actualizaciones de ubicación comparando la distancia recorrida desde la última actualización con la precisión de la ubicación actual.
En este ejemplo, se añaden filtros en el LocationTracker
en el momento de la creación:
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, )
En este ejemplo se habilita y deshabilita el filtro en el tiempo de ejecución con LocationTracker
:
// To enable the filter locationTracker?.enableFilter(TimeLocationFilter()) // To disable the filter locationTracker?.disableFilter(TimeLocationFilter())
Características de rastreo del SDK para móviles de Android
El SDK de rastreo en móviles de Amazon Location para Android incluye las siguientes características:
-
Clase:
LocationTracker
constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,trackerName: String)
, o bienconstructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,clientConfig: LocationTrackerConfig)
Se trata de una función de inicializador para crear un objeto de
LocationTracker
. Requiere instancias deLocationCredentialsProvider
,trackerName
y, opcionalmente, una instancia deLocationTrackingConfig
. Si no se proporciona la configuración, se inicializará con los valores predeterminados. -
Clase:
LocationTracker
start(locationTrackingCallback: LocationTrackingCallback)
Inicia el proceso de acceder a la ubicación del usuario y enviarla a un rastreador de Amazon Location.
-
Clase:
LocationTracker
isTrackingInForeground()
Comprueba si el rastreo de la ubicación está en curso actualmente.
-
Clase:
LocationTracker
stop()
Detiene el proceso de rastreo de la ubicación del usuario.
-
Clase:
LocationTracker
startTracking()
Inicia el proceso de acceder a la ubicación del usuario y enviarla al AWS rastreador.
-
Clase:
LocationTracker
startBackground(mode: BackgroundTrackingMode, serviceCallback: ServiceCallback)
Inicia el proceso de acceder a la ubicación del usuario y enviarla al AWS rastreador mientras la aplicación está en segundo plano.
BackgroundTrackingMode
tiene las siguientes opciones:-
ACTIVE_TRACKING
: esta opción realiza un rastreo activo de las actualizaciones de ubicación de un usuario. -
BATTERY_SAVER_TRACKING
: esta opción rastrea las actualizaciones de ubicación del usuario cada 15 minutos.
-
-
Clase:
LocationTracker
stopBackgroundService()
Detiene el proceso de acceder a la ubicación del usuario y enviarla al AWS rastreador mientras la aplicación está en segundo plano.
-
Clase:
LocationTracker
getTrackerDeviceLocation()
Recupera la ubicación del dispositivo desde Amazon Location Services.
-
Clase:
LocationTracker
getDeviceLocation(locationTrackingCallback: LocationTrackingCallback?)
Recupera la ubicación actual del dispositivo del cliente del proveedor de ubicaciones fusionadas y la carga en el rastreador de Amazon Location.
-
Clase:
LocationTracker
uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)
Sube la ubicación del dispositivo a Amazon Location Services después de filtrarla en función de los filtros de ubicación configurados.
-
Clase:
LocationTracker
enableFilter(filter: LocationFilter)
Habilita un filtro de ubicación concreto.
-
Clase:
LocationTracker
checkFilterIsExistsAndUpdateValue(filter: LocationFilter)
Deshabilita un filtro de ubicación concreto.
-
Clase:
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())
Esto inicializa el
LocationTrackerConfig
con valores de parámetros definidos por el usuario. Si no se proporciona un valor de parámetro, se establecerá en un valor predeterminado. -
Clase:
LocationFilter
shouldUpload(currentLocation: LocationEntry, previousLocation: LocationEntry?): Boolean
LocationFilter
es un protocolo que los usuarios pueden implementar para la implementación de sus filtros personalizados. Debe implementar la funciónshouldUpload
para comparar la ubicación anterior y actual, y devolver si se debe subir la ubicación actual.
Ejemplos
En el siguiente ejemplo de código se muestra la funcionalidad del SDK de rastreo en móviles.
En este ejemplo, se utiliza el LocationTracker
para iniciar y detener el rastreo en segundo plano:
// 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()