Seguimiento móvil iOS SDK - 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.

Seguimiento móvil iOS SDK

El seguimiento móvil de Amazon Location SDK 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. SDKAdmite 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 seguimiento para iOS SDK está disponible en GitHub: Amazon Location Mobile Tracking SDK para iOS.

En esta sección se tratan los siguientes temas para el seguimiento móvil de Amazon Location en iOSSDK:

Instalación

Utilice el siguiente procedimiento para instalar el seguimiento móvil SDK para iOS:

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

  2. Escribe lo siguienteURL: 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 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, importe lo siguiente AuthHelper en su 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 seguimiento móvil de Amazon Location para iOS SDK 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 SDK seguimiento de iOS Mobile

El seguimiento móvil de Amazon Location SDK 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 seguimiento móvil de Amazon Location SDK 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) } }) }