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.
Temas
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
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 eltransformRequest
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 elcredentials
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.
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 BatchPutGeofenceEsta 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. BatchPutGeofenceSi 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
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 APILocationCredentialsProvider
inicializada para que funcione con ella.authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id"): LocationCredentialsProvider
: Esta función devuelve un conjunto de identidadesLocationCredentialsProvider
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:
Ve a Archivo y selecciona Add Package Dependencies en tu proyecto de XCode.
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. Seleccione el
amazon-location-mobile-auth-sdk-ios
paquete y pulse Add Package.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 APILocationCredentialsProvider
inicializada para que funcione con ella.authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id"): LocationCredentialsProvider
: Esta función devuelve un conjunto de identidadesLocationCredentialsProvider
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
En esta sección se tratan los siguientes temas del SDK de seguimiento móvil de Amazon Location para Android:
Temas
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.
-
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
-
A continuación, cree una
AuthHelper
, ya que elLocationCredentialsProvider
parámetro es obligatorio para crear unLocationTracker
objeto:// Create an authentication helper using credentials from Cognito val authHelper = AuthHelper(applicationContext) val locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")
-
Ahora, usa la
LocationCredentialsProvider
tecla yLocationTrackerConfig
para crear unLocationTracker
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 bienconstructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,clientConfig: LocationTrackerConfig)
Se trata de una función inicializadora para crear un
LocationTracker
objeto. Requiere instancias detrackerName
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
LocationFilter
Es un protocolo que los usuarios pueden implementar para la implementación de sus filtros personalizados. Debe implementar lashouldUpload
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:
-
En tu proyecto de Xcode, ve a Archivo y selecciona Add Package Dependencies.
-
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. -
Seleccione el
amazon-location-mobile-tracking-sdk-ios
paquete y haga clic en Add Package. -
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.
-
Tras instalar la biblioteca, debe añadir 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, importa lo siguiente AuthHelper en tu 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 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 detrackerName
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.
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 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)
LocationFilter
Es un protocolo que los usuarios pueden implementar para la implementación de sus filtros personalizados. Un usuario tendría que implementar unashouldUpload
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) } }) }