Cómo utilizar el seguimiento SDKs - Amazon Location Service

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:

  1. En su proyecto de Xcode, vaya a Archivo y seleccione Agregar dependencias de paquete.

  2. 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.

  3. Seleccione el paquete amazon-location-mobile-tracking-sdk-ios y haga clic en Agregar paquete.

  4. 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.

  1. 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
  2. A continuación, importe el archivo a su AuthHelper clase:

    import AmazonLocationiOSAuthSDKimport AmazonLocationiOSTrackingSDK
  3. 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 de LocationCredentialsProvider, trackerName y, opcionalmente, una instancia de LocationTrackingConfig. 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. BackgroundTrackingModetiene 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 de shouldUpload 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. Además, tanto el SDK de autenticación móvil como el AWS SDK están disponibles en el repositorio de AWS Maven. El SDK de seguimiento de Android está diseñado para funcionar con el AWS SDK general.

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.

  1. 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
  2. A continuación, cree un AuthHelper, ya que se necesita el parámetro de LocationCredentialsProvider para crear un objeto de LocationTracker:

    // Create an authentication helper using credentials from Amazon Cognito val authHelper = AuthHelper(applicationContext) val locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")
  3. Ahora, use LocationCredentialsProvider y LocationTrackerConfig para crear un objeto de 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, )

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 bien constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,clientConfig: LocationTrackerConfig)

    Se trata de una función de inicializador para crear un objeto de LocationTracker. Requiere instancias de LocationCredentialsProvider, trackerName y, opcionalmente, una instancia de LocationTrackingConfig. 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. BackgroundTrackingModetiene 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ón shouldUpload 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()