Amazon Location SDK y librerías - 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.

Amazon Location SDK y librerías

Amazon Location SDK es un conjunto de librerías de código abierto que proporcionan funciones útiles para desarrollar aplicaciones de Amazon Location. Se incluye la siguiente funcionalidad:

  • Cliente Amazon Location: los objetos Amazon Location del AWS SDK v3 vienen agrupados y empaquetados para facilitar su uso en el desarrollo web.

  • Autenticación: la utilidad de autenticación simplifica la autenticación (mediante Amazon Cognito o claves de API) al crear una página web o una JavaScriptaplicación iOS o Android para Amazon Location Service.

  • Seguimiento: los SDK de seguimiento móvil están disponibles para iOS y Android. Este SDK facilita que las aplicaciones móviles interactúen con Amazon Location Trackers.

  • Funciones GeoJSON de Amazon Location: las utilidades de conversión de GeoJSON facilitan la conversión entre los datos con formato GeoJSON estándar del sector y los formatos de la API de ubicación de Amazon.

Cómo empezar a utilizar Amazon Location SDK

Amazon Location SDK es un conjunto de funciones que pueden simplificar el uso de Amazon Location Service en una aplicación. Puede instalar e importar estas funciones a su aplicación. JavaScript En las siguientes secciones se describe el cliente de Amazon Location y las librerías auxiliares de autenticación y GeoJSON.

Cliente de Amazon Location

Con AWS el SDK v3, el SDK está separado por servicio. Puede instalar solo las partes que necesite. Por ejemplo, para instalar el cliente de Amazon Location y el proveedor de credenciales de Amazon Cognito, utilice los siguientes comandos.

npm install @aws-sdk/client-location npm install @aws-sdk/credential-providers

Para facilitar el uso de Amazon Location Service en las aplicaciones de interfaz JavaScript web, AWS proporciona un paquete hospedado de la biblioteca de ubicaciones de Amazon y el proveedor de credenciales. Para usar el cliente agrupado, agréguelo a su HTML en una etiqueta de script, de la siguiente manera:

<script src="https://unpkg.com/@aws/amazon-location-client@1.x/dist/amazonLocationClient.js"></script>
nota

El paquete se mantiene actualizado y es compatible con versiones anteriores para facilitar su uso. El uso de esta etiqueta de script o la instalación de NPM siempre obtendrá la última versión.

JavaScript Ayudante de autenticación

El asistente de JavaScript autenticación de Amazon Location facilita la autenticación al realizar llamadas a la API de Amazon Location desde tu JavaScript aplicación. Este asistente de autenticación le ayuda específicamente a utilizar Amazon Cognito o las claves de API como método de autenticación. Se trata de una biblioteca de código abierto que está disponible en https://github.com/aws-geospatial/ GitHub amazon-location-utilities-auth -helper-js.

nota

La compatibilidad con Amazon Cognito en el asistente de autenticación no admite la función de identidades federadas de Amazon Cognito.

Instalación

Puedes usar las bibliotecas con una instalación local, si usas un sistema de compilación como webpack, o incluir JavaScript paquetes prediseñados con etiquetas en tu código html. <script>

  • Utilice el siguiente comando para instalar la librería utilizando NPM:

    npm install @aws/amazon-location-utilities-auth-helper
  • Use el siguiente comando en su archivo HTML para cargar el script:

    <script src="https://unpkg.com/@aws/amazon-location-utilities-auth-helper@1.x/dist/amazonLocationAuthHelper.js"></script>

Importación

Para usar una función específica en tu JavaScript aplicación, debes importarla. El siguiente código se utiliza para importar la función withIdentityPoolId a la aplicación.

import { withIdentityPoolId } from '@aws/amazon-location-utilities-auth-helper';

Funciones de autenticación

Los ayudantes de autenticación de Amazon Location incluyen las siguientes funciones que devuelven un objeto AuthHelper:

  • async withIdentityPoolId( identityPoolId: string): AuthHelper— Esta función devuelve un AuthHelper objeto, inicializado para funcionar con Amazon Cognito

  • async withAPIKey( API_KEY: string): AuthHelper— Esta función devuelve un AuthHelper objeto, inicializado para que funcione con claves de API.

El objeto AuthHelper proporciona las siguientes funciones:

  • AuthHelper.getMapAuthenticationOptions()— Esta función del AuthHelper objeto devuelve un JavaScript objeto con el transformRequest que se puede utilizar con las opciones del mapa en MapLibre JS. Solo se proporciona cuando se inicializa con un grupo de identidades.

  • AuthHelper.getLocationClientConfig()— Esta función del AuthHelper objeto devuelve un JavaScript objeto con el credentials que se puede utilizar para inicializar un LocationClient.

  • AuthHelper.getCredentials()— Esta función del AuthHelper objeto devuelve las credenciales internas de Amazon Cognito. Solo se proporciona cuando se inicializa con un grupo de identidades.

Ejemplo: inicialización de un objeto de MapLibre mapa con Amazon Cognito mediante un AuthHelper

import { withIdentityPoolId } from '@aws/amazon-location-utilities-auth-helper'; const authHelper = await withIdentityPoolId("identity-pool-id"); // use Cognito pool id for credentials const map = new maplibregl.Map({ container: "map", // HTML element ID of map element center: [-123.1187, 49.2819], // initial map center point zoom: 16, // initial map zoom style: https://maps.geo.region.amazonaws.com/maps/v0/maps/mapName/style-descriptor', // Defines the appearance of the map ...authHelper.getMapAuthenticationOptions(), // Provides credential options required for requests to Amazon Location });

Ejemplo: inicializar un objeto de MapLibre mapa con una clave de API (no AuthHelper es necesario en este caso)

const map = new maplibregl.Map({ container: "map", // HTML element ID of map element center: [-123.1187, 49.2819], // initial map center point zoom: 16, // initial map zoom style: https://maps.geo.region.amazonaws.com/maps/v0/maps/${mapName}/style-descriptor?key=api-key-id', });

Ejemplo: inicialice el cliente de ubicación desde el AWS SDK para JS con Amazon Cognito y AuthHelper

En este ejemplo, se usa el AWS SDK para JavaScript la versión 3.

import { withIdentityPoolId } from '@aws/amazon-location-utilities-auth-helper'; const authHelper = await withIdentityPoolId("identity-pool-id"); // use Cognito pool id for credentials //initialize the Location client: const client = new LocationClient({ region: "region", ...authHelper.getLocationClientConfig() // sets up the Location client to use the Cognito pool defined above }); //call a search function with the location client: const result = await client.send(new SearchPlaceIndexForPositionCommand({ IndexName: "place-index", // Place index resource to use Position: [-123.1187, 49.2819], // position to search near MaxResults: 10 // number of results to return });

Ejemplo: inicialice el cliente de ubicación desde el AWS SDK para JS mediante una clave de API y AuthHelper

En este ejemplo, se usa el AWS SDK para la JavaScript versión 3.

import { withAPIKey } from '@aws/amazon-location-utilities-auth-helper'; const authHelper = await withAPIKey("api-key-id"); // use API Key id for credentials //initialize the Location client: const client = new LocationClient({ region: "region", ...authHelper.getLocationClientConfig() // sets up the Location client to use the API Key defined above }); //call a search function with the location client: const result = await client.send(new SearchPlaceIndexForPositionCommand({ IndexName: "place-index", // Place index resource to use Position: [-123.1187, 49.2819], // position to search near MaxResults: 10 // number of results to return });

Ayudantes de conversión de GeoJSON

Los ayudantes de conversión de GeoJSON de Amazon Location proporcionan herramientas para convertir los tipos de datos de Amazon Location Service al formato estándar del sector GeoJSON y viceversa. GeoJSON se utiliza, por ejemplo, MapLibre para representar datos geográficos en el mapa. Se trata de una biblioteca de código abierto que está disponible en GitHub https://github.com/aws-geospatial/ amazon-location-utilities-datatypes -js.

Instalación

Puedes usar las bibliotecas con una instalación local, como un paquete web, o incluir JavaScript paquetes prediseñados con <script> etiquetas en tu código html.

  • Utilice el siguiente comando para instalar la librería usando NPM.

    npm install @aws/amazon-location-utilities-datatypes
  • Use el siguiente comando en su archivo HTML para cargar el script:

    <script src="https://unpkg.com/@aws/amazon-location-utilities-datatypes@1.x/dist/amazonLocationDataConverter.js"></script>

Importación

Para usar una función específica en tu JavaScript aplicación, debes importarla. El siguiente código se utiliza para importar la función placeToFeatureCollection a la aplicación.

import { placeToFeatureCollection } from '@aws/amazon-location-utilities-datatypes';

Funciones de conversión de GeoJSON

Los ayudantes de conversión de GeoJSON de Amazon Location incluyen las siguientes funciones:

  • placeToFeatureCollection(place: GetPlaceResponse | searchPlaceIndexForPositionResponse | searchPlaceIndexForTextResponse, keepNull: boolean): Feature— Esta función convierte las respuestas de las funciones de búsqueda de lugares en un GeoJSON FeatureCollection con 1 o más características de punto.

  • devicePositionToFeatureCollection(devicePositions: GetDevicePositionResponse | BatchGetDevicePositionResponse | GetDevicePositionHistoryResponse | ListDevicePositionsResponse, keepNull: boolean)— Esta función convierte las respuestas de las funciones de posición del dispositivo rastreador en un GeoJSON FeatureCollection con 1 o más funciones de punto.

  • routeToFeatureCollection(legs: CalculateRouteResponse): FeatureCollection— Esta función convierte las respuestas de la función de cálculo de ruta en un GeoJSON FeatureCollection con una sola MultiStringLine función. Cada tramo de la ruta se representa mediante una LineString entrada en. MultiStringLine

  • geofenceToFeatureCollection(geofences: GetGeofenceResponse | PutGeofenceRequest | BatchPutGeofenceRequest | ListGeofencesResponse): FeatureCollection— Esta función convierte la solicitud o respuesta de las funciones de geocerca en un FeatureCollection GeoJSON con características poligonales. Puede convertir las geocercas tanto en la respuesta como en la solicitud, lo que le permite mostrar las geocercas en un mapa antes de cargarlas con o. PutGeofence BatchPutGeofence

    Esta función convertirá una geovalla circular en una característica con un polígono aproximado, pero también tendrá propiedades de «centro» y «radio» para recrear la geovalla circular, si es necesario (consulte la siguiente función).

  • featureCollectionToGeofences(featureCollection: FeatureCollection): BatchPutGeofenceRequestEntry[]— Esta función convierte un GeoJSON FeatureCollection con características poligonales en una matriz de BatchPutGeofenceRequestEntry objetos, por lo que el resultado se puede utilizar para crear una solicitud a. BatchPutGeofence

    Si una de las entidades FeatureCollection tiene propiedades de «centro» y «radio», se convertirá en una entrada de solicitud de geocerca circular, sin tener en cuenta la geometría del polígono.

Ejemplo: convierte los resultados de la búsqueda en una capa de puntos en MapLibre

En este ejemplo se usa el AWS SDK para la JavaScript versión 3.

import { placeToFeatureCollection } from '@aws/amazon-location-utility-datatypes'; ... let map; // map here is an initialized MapLibre instance const client = new LocationClient(config); const input = { your_input }; const command = new searchPlaceIndexForTextCommand(input); const response = await client.send(command); // calling utility function to convert the response to GeoJSON const featureCollection = placeToFeatureCollection(response); map.addSource("search-result", featureCollection); map.addLayer({ id: "search-result", type: "circle", source: "search-result", paint: { "circle-radius": 6, "circle-color": "#B42222", }, });

SDK de autenticación móvil de Android

Estas utilidades te ayudan a autenticarte cuando realizas llamadas a la API de Amazon Location Service desde tus aplicaciones de Android. Esto ayuda específicamente cuando se utilizan Amazon Cognito o claves de API como método de autenticación.

El SDK de autenticación móvil Android está disponible en github: Amazon Location Service Mobile Authentication 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.

Instalación

Para usar el SDK de autenticación móvil, agrega las siguientes instrucciones de importación a tu build.gradle archivo en Android Studio.

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

Funciones de autenticación

El SDK auxiliar de autenticación tiene las siguientes funciones:

  • authHelper.authenticateWithApiKey("My-Amazon-Location-API-Key"): LocationCredentialsProvider: Esta función devuelve una clave de API LocationCredentialsProvider inicializada para que funcione con ella.

  • authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id"): LocationCredentialsProvider: Esta función devuelve un conjunto de identidades LocationCredentialsProvider inicializado para que funcione con un grupo de identidades de Amazon Cognito.

Uso

Para usar el SDK en su código, importe las siguientes clases:

import com.amazonaws.services.geo.AmazonLocationClient import software.amazon.location.auth.AuthHelper import software.amazon.location.auth.LocationCredentialsProvider

Tienes dos opciones a la hora de crear las instancias de ayuda de autenticación y de proveedor de clientes de ubicación. Puede crear una instancia con las claves de la API de ubicación de Amazon o Amazon Cognito.

  • Para crear una instancia auxiliar de autenticación mediante una clave de API de Amazon Location, declara la clase auxiliar de la siguiente manera:

    var authHelper = AuthHelper(applicationContext) var locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithApiKey("My-Amazon-Location-API-Key")
  • Para crear una instancia auxiliar de autenticación con Amazon Cognito, declare la clase auxiliar de la siguiente manera:

    var authHelper = AuthHelper(applicationContext) var locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")

Puedes crear una instancia de cliente de Amazon Location con el proveedor de credenciales de ubicación y realizar llamadas al servicio Amazon Location. En el siguiente ejemplo, se buscan lugares cercanos a una latitud y longitud especificadas.

var locationClient = authHelper.getLocationClient(locationCredentialsProvider.getCredentialsProvider()) var searchPlaceIndexForPositionRequest = SearchPlaceIndexForPositionRequest().withIndexName("My-Place-Index-Name").withPosition(arrayListOf(30.405423, -97.718833)) var nearbyPlaces = locationClient.searchPlaceIndexForPosition(searchPlaceIndexForPositionRequest)

SDK de autenticación móvil para iOS

Estas utilidades te ayudan a autenticarte cuando realizas llamadas a la API de Amazon Location Service desde tus aplicaciones iOS. Esto ayuda específicamente cuando se utilizan Amazon Cognito o claves de API como método de autenticación.

El SDK de autenticación móvil para iOS está disponible en github: Amazon Location Service Mobile Authentication SDK for iOS.

Instalación

Instala el SDK en un proyecto de Xcode:

  1. Ve a Archivo y selecciona Add Package Dependencies en tu proyecto de XCode.

  2. Escribe la URL del paquete: https://github.com/aws-geospatial/ amazon-location-mobile-auth -sdk-ios/ en la barra de búsqueda y pulsa la tecla Enter.

  3. Seleccione el amazon-location-mobile-auth-sdk-ios paquete y pulse Add Package.

  4. Seleccione el producto AmazonLocationiOSAuthSDK empaquetado y pulse Add Package.

Funciones de autenticación

El SDK auxiliar de autenticación tiene las siguientes funciones:

  • authHelper.authenticateWithApiKey("My-Amazon-Location-API-Key"): LocationCredentialsProvider: Esta función devuelve una clave de API LocationCredentialsProvider inicializada para que funcione con ella.

  • authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id"): LocationCredentialsProvider: Esta función devuelve un conjunto de identidades LocationCredentialsProvider inicializado para que funcione con un grupo de identidades de Amazon Cognito.

Uso

Para usar el SDK de autenticación móvil, añada las siguientes instrucciones a su actividad:

import AmazonLocationiOSAuthSDK import AWSLocationXCF

Tienes dos opciones a la hora de crear las instancias de ayuda de autenticación y de proveedor de cliente de ubicación. Puede crear una instancia con las claves de la API de ubicación de Amazon o Amazon Cognito.

  • Para crear una instancia auxiliar de autenticación mediante una clave de API de Amazon Location, declara la clase auxiliar de la siguiente manera:

    let authHelper = AuthHelper() let locationCredentialsProvider = authHelper.authenticateWithAPIKey(apiKey: "My-Amazon-Location-API-Key", region: "account-region")
  • Para crear una instancia auxiliar de autenticación con Amazon Cognito, declare la clase auxiliar de la siguiente manera:

    let authHelper = AuthHelper() let locationCredentialsProvider = authHelper.authenticateWithCognitoUserPool(identityPoolId: "My-Amazon-Location-API-Key", region: "account-region")

Puedes crear una instancia de cliente de Amazon Location con el proveedor de credenciales de ubicación y realizar llamadas al servicio Amazon Location. En el siguiente ejemplo, se buscan lugares cercanos a una latitud y longitud especificadas.

let locationClient = AWSLocation.default() let searchPlaceIndexForPositionRequest = AWSLocationSearchPlaceIndexForPositionRequest()! searchPlaceIndexForPositionRequest.indexName = "My-Place-Index-Name" searchPlaceIndexForPositionRequest.position = [30.405423, -97.718833] let nearbyPlaces = locationClient.searchPlaceIndex(forPosition: searchPlaceIndexForPositionRequest)

SDK de seguimiento para dispositivos móviles Android

El SDK de seguimiento móvil 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 ubicación de Amazon. 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 de 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 seguimiento móvil de Amazon Location para Android:

Instalación

Para instalar el SDK, agrega 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 te muestra cómo usar el SDK para autenticar y crear el objeto: LocationTracker

nota

Este procedimiento supone que ha importado la biblioteca mencionada en la Instalación sección.

  1. Importe las siguientes clases en 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 unaAuthHelper, ya que el LocationCredentialsProvider parámetro es obligatorio para crear un LocationTracker objeto:

    // Create an authentication helper using credentials from Cognito val authHelper = AuthHelper(applicationContext) val locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")
  3. Ahora, usa la LocationCredentialsProvider tecla y LocationTrackerConfig para crear un LocationTracker objeto:

    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 seguimiento móvil 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 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, )

Este ejemplo habilita y deshabilita el filtro en tiempo de ejecución conLocationTracker:

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

Funciones de seguimiento del SDK para dispositivos móviles de Android

El SDK de seguimiento móvil de Amazon Location para Android incluye las siguientes funciones:

  • Clase: LocationTracker

    constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,trackerName: String), o bien constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,clientConfig: LocationTrackerConfig)

    Se trata de una función inicializadora para crear un LocationTracker objeto. Requiere instancias de trackerName yLocationCredentialsProvider, 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 ubicaciones de Amazon.

  • Clase: LocationTracker

    isTrackingInForeground()

    Comprueba si el seguimiento de la ubicación está actualmente en curso.

  • Clase: LocationTracker

    stop()

    Detiene el proceso de seguimiento 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 seguimiento 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 de 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 ubicaciones de Amazon.

  • Clase: LocationTracker

    uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)

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

    Activa un filtro de ubicación concreto.

  • Clase: LocationTracker

    checkFilterIsExistsAndUpdateValue(filter: LocationFilter)

    Deshabilita un filtro de ubicación en particular.

  • 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

    LocationFilterEs un protocolo que los usuarios pueden implementar para la implementación de sus filtros personalizados. Debe implementar la shouldUpload función para comparar la ubicación anterior y actual y devolver si se debe cargar la ubicación actual.

Ejemplos

El siguiente ejemplo de código muestra la funcionalidad del SDK de rastreo móvil.

En este ejemplo, se utiliza LocationTracker para iniciar y detener el seguimiento 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()

SDK de seguimiento móvil para iOS

El SDK de seguimiento móvil 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 ubicación de Amazon. 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 seguimiento móvil de Amazon Location para iOS:

Instalación

Usa el siguiente procedimiento para instalar el SDK de rastreo móvil para iOS:

  1. En tu proyecto de Xcode, ve a Archivo y selecciona Add Package Dependencies.

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

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

  4. Seleccione el producto AmazonLocationiOSTrackingSDK del paquete y haga clic en Add Package.

Uso

El siguiente procedimiento muestra cómo crear un ayudante de autenticación con las credenciales de Cognito.

  1. Tras instalar la biblioteca, debe añadir una o ambas descripciones al archivoinfo.plist:

    Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
  2. A continuación, importa lo siguiente AuthHelper en tu 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 seguimiento móvil 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 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, )

Este ejemplo habilita y deshabilita el filtro en tiempo de ejecución conLocationTracker:

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

Funciones de seguimiento del SDK para iOS Mobile

El SDK de seguimiento móvil de Amazon Location para iOS incluye las siguientes funciones:

  • Clase: LocationTracker

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

    Se trata de una función inicializadora para crear un LocationTracker objeto. Requiere instancias de trackerName yLocationCredentialsProvider, opcionalmente, una instancia de. LocationTrackingConfig Si no se proporciona la configuración, se inicializará con los valores predeterminados.

  • Clase: LocationTracker

    setTrackerConfig(config: LocationTrackerConfig)

    Esto establece que la configuración del rastreador surta efecto en cualquier momento después de la inicialización del rastreador de ubicación

  • Clase: LocationTracker

    getTrackerConfig()

    Esto obtiene la configuración de seguimiento de ubicación para usarla o modificarla en tu aplicación.

    Devoluciones: LocationTrackerConfig

  • Clase: LocationTracker

    getDeviceId()

    Obtiene el identificador del dispositivo generado por el rastreador de ubicación.

    Devoluciones: 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 seguimiento 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 seguimiento cargadas para el dispositivo del usuario entre la fecha y la hora de inicio y finalización.

    Devoluciones: 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)

    LocationFilterEs un protocolo que los usuarios pueden implementar para la implementación de sus filtros personalizados. Un usuario tendría que implementar una shouldUpload función para comparar la ubicación anterior y actual y regresar si se debe cargar la ubicación actual.

Ejemplos

En esta sección se detallan ejemplos del uso del SDK de seguimiento móvil de Amazon Location para iOS.

nota

Asegúrese de que los permisos necesarios estén establecidos en el info.plist archivo. Son los mismos permisos que se enumeran en la Uso sección.

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

Comience a rastrear la ubicación:

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

Reanude el seguimiento de la ubicación:

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

Deja de rastrear la ubicación:

locationTracker.stopTracking()

Iniciar el seguimiento 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 }

Reanude el seguimiento en segundo plano:

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

Para detener el seguimiento en segundo plano:

locationTracker.stopBackgroundTracking()

Recupera las ubicaciones rastreadas del dispositivo desde el 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) } }) }