Como usar o Rastreamento SDKs - Amazon Location Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como usar o Rastreamento SDKs

Este tópico fornece informações sobre como usar o Rastreamento SDKs.

O SDK de rastreamento móvel do Amazon Location fornece utilitários que ajudam a autenticar, capturar posições de dispositivos e enviar atualizações de posição para rastreadores do Amazon Location com facilidade. O SDK é compatível com a filtragem local de atualizações de localização com intervalos de atualização configuráveis. Isso reduz os custos de dados e otimiza a conectividade intermitente para suas aplicações iOS.

O SDK de rastreamento do iOS está disponível em GitHub: Amazon Location Mobile Tracking SDK para iOS.

Esta seção aborda os seguintes tópicos do SDK do iOS de rastreamento móvel do Amazon Location:

Instalação

Use o seguinte procedimento para instalar o SDK de rastreamento móvel para iOS:

  1. No seu projeto do Xcode, acesse File e selecione Add Package Dependencies.

  2. Digite o seguinte URL: https://github.com/aws-geospatial/amazon-location-mobile-tracking-sdk-ios/ na barra de pesquisa e pressione a tecla enter.

  3. Selecione o pacote amazon-location-mobile-tracking-sdk-ios e clique em Add Package.

  4. Selecione o produto do pacote AmazonLocationiOSTrackingSDK e clique em Add Package.

Uso

O procedimento a seguir mostra como criar um auxiliar de autenticação usando credenciais do Amazon Cognito.

  1. Depois de instalar a biblioteca, você precisa adicionar uma ou ambas as descrições ao seu arquivo info.plist:

    Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
  2. Em seguida, importe o AuthHelper em sua classe:

    import AmazonLocationiOSAuthSDKimport AmazonLocationiOSTrackingSDK
  3. Em seguida, você criará um AuthHelper objeto e o usará com o AWS SDK, criando um auxiliar de autenticação usando credenciais do 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

O SDK do iOS de rastreamento móvel do Amazon Location tem três filtros de localização embutidos.

  • TimeLocationFilter: filtra a localização atual a ser carregada com base em um intervalo de tempo definido.

  • DistanceLocationFilter: filtra as atualizações de localização com base em um limite de distância especificado.

  • AccuracyLocationFilter: filtra as atualizações de localização comparando a distância percorrida desde a última atualização com a precisão da localização atual.

Este exemplo adiciona filtros no LocationTracker no momento da criação:

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 exemplo ativa e desativa o filtro em runtime com o LocationTracker:

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

Funções de rastreamento do SDK móvel para iOS

O SDK de rastreamento móvel do Amazon Location para iOS inclui as seguintes funções:

  • Classe: LocationTracker

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

    Essa é uma função inicializadora para criar um objeto LocationTracker. Requer instâncias de LocationCredentialsProvider, trackerName e, opcionalmente, uma instância de LocationTrackingConfig. Se a configuração não for fornecida, ela será inicializada com valores padrão.

  • Classe: LocationTracker

    setTrackerConfig(config: LocationTrackerConfig)

    Isso define a configuração do Tracker para entrar em vigor a qualquer momento após a inicialização do rastreador de localização.

  • Classe: LocationTracker

    getTrackerConfig()

    Isso faz com que a configuração de rastreamento de localização seja usada ou modificada na sua aplicação.

    Retorna: LocationTrackerConfig

  • Classe: LocationTracker

    getDeviceId()

    Obtém o ID do dispositivo gerado pelo rastreador de localização.

    Retorna: String?

  • Classe: LocationTracker

    startTracking()

    Inicia o processo de acessar a localização do usuário e enviá-la ao AWS rastreador.

  • Classe: LocationTracker

    resumeTracking()

    Retoma o processo de acessar a localização do usuário e enviá-la ao AWS rastreador.

  • Classe: LocationTracker

    stopTracking()

    Interrompe o processo de rastreamento da localização do usuário.

  • Classe: LocationTracker

    startBackgroundTracking(mode: BackgroundTrackingMode)

    Inicia o processo de acessar a localização do usuário e enviá-la ao AWS rastreador enquanto o aplicativo está em segundo plano. BackgroundTrackingModetem as seguintes opções:

    • Active: essa opção não pausa automaticamente as atualizações de localização.

    • BatterySaving:Essa opção pausa automaticamente as atualizações de localização.

    • None:Em geral, essa opção desativa as atualizações de localização em segundo plano.

  • Classe: LocationTracker

    resumeBackgroundTracking(mode: BackgroundTrackingMode)

    Retoma o processo de acessar a localização do usuário e enviá-la ao AWS rastreador enquanto o aplicativo está em segundo plano.

  • Classe: LocationTracker

    stopBackgroundTracking()

    Interrompe o processo de acessar a localização do usuário e enviá-la ao AWS rastreador enquanto o aplicativo está em segundo plano.

  • Classe: LocationTracker

    getTrackerDeviceLocation(nextToken: String?, startTime: Date? = nil, endTime: Date? = nil, completion: @escaping (Result<GetLocationResponse, Error>)

    Recupera os locais de rastreamento enviados para o dispositivo do usuário entre a data e hora de início e término.

    Retorna: Void

  • Classe: LocationTrackerConfig

    init()

    Isso inicializa o LocationTrackerConfig com valores padrão.

  • Classe: 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)

    Isso inicializa o LocationTrackerConfig com valores de parâmetros definidos pelo usuário. Se um valor de parâmetro não for fornecido, ele será definido como um valor padrão.

  • Classe: LocationFilter

    shouldUpload(currentLocation: LocationEntity, previousLocation: LocationEntity?, trackerConfig: LocationTrackerConfig)

    O LocationFilter é um protocolo que os usuários podem implementar para a implementação de filtros personalizados. Um usuário precisaria implementar uma função shouldUpload para comparar a localização anterior e atual e retornar se a localização atual deveria ser carregada.

Exemplos

Esta seção detalha exemplos do uso do Amazon Location Mobile Tracking SDK para iOS.

nota

Certifique-se de que as permissões necessárias estejam definidas no arquivo info.plist. Essas são as mesmas permissões listadas na seção Uso.

O exemplo a seguir demonstra a funcionalidade para rastrear a localização do dispositivo e recuperar os locais rastreados:

Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description

Comece a rastrear a localização:

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

Retome o rastreamento da localização:

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

Pare de rastrear a localização:

locationTracker.stopTracking()

Inicie o rastreamento em 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 }

Retomar o rastreamento em segundo plano:

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

Para interromper o rastreamento em segundo plano:

locationTracker.stopBackgroundTracking()

Recupere as localizações rastreadas do dispositivo a partir do 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) } }) }

O SDK de rastreamento móvel do Amazon Location fornece utilitários que ajudam a autenticar, capturar posições de dispositivos e enviar atualizações de posição para rastreadores do Amazon Location com facilidade. O SDK é compatível com a filtragem local de atualizações de localização com intervalos de atualização configuráveis. Isso reduz os custos de dados e otimiza a conectividade intermitente para suas aplicações Android.

O SDK de rastreamento do Android está disponível em GitHub: Amazon Location Mobile Tracking SDK para Android. Além disso, tanto o SDK de autenticação móvel quanto o AWS SDK estão disponíveis no repositório AWS Maven. O SDK de rastreamento do Android foi projetado para funcionar com o AWS SDK geral.

Esta seção aborda os seguintes tópicos do SDK do Android de rastreamento móvel do Amazon Location:

Instalação

Para instalar o SDK, adicione as seguintes linhas à seção de dependências do seu arquivo build.gradle no 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 procedimento mostra como usar o SDK para autenticar e criar o objeto LocationTracker:

nota

Esse procedimento pressupõe que você tenha importado a biblioteca mencionada na seção Instalação.

  1. Importe as seguintes classes em seu 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. Em seguida, crie um AuthHelper, pois o parâmetro LocationCredentialsProvider é necessário para criar um objeto 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. Agora, use LocationCredentialsProvider e LocationTrackerConfig para criar um objeto 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

O SDK do Android de rastreamento móvel do Amazon Location tem três filtros de localização embutidos.

  • TimeLocationFilter: filtra a localização atual a ser carregada com base em um intervalo de tempo definido.

  • DistanceLocationFilter: filtra as atualizações de localização com base em um limite de distância especificado.

  • AccuracyLocationFilter: filtra as atualizações de localização comparando a distância percorrida desde a última atualização com a precisão da localização atual.

Este exemplo adiciona filtros no LocationTracker no momento da criação:

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 exemplo ativa e desativa o filtro em runtime com o LocationTracker:

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

Funções de rastreamento do Android Mobile SDK

O SDK de rastreamento móvel do Amazon Location para Android inclui as seguintes funções:

  • Classe: LocationTracker

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

    Essa é uma função inicializadora para criar um objeto LocationTracker. Requer instâncias de LocationCredentialsProvider, trackerName e, opcionalmente, uma instância de LocationTrackingConfig. Se a configuração não for fornecida, ela será inicializada com valores padrão.

  • Classe: LocationTracker

    start(locationTrackingCallback: LocationTrackingCallback)

    Inicia o processo de acessar a localização do usuário e enviá-la para um rastreador do Amazon Location.

  • Classe: LocationTracker

    isTrackingInForeground()

    Verifica se o rastreamento de localização está em andamento.

  • Classe: LocationTracker

    stop()

    Interrompe o processo de rastreamento da localização do usuário.

  • Classe: LocationTracker

    startTracking()

    Inicia o processo de acessar a localização do usuário e enviá-la ao AWS rastreador.

  • Classe: LocationTracker

    startBackground(mode: BackgroundTrackingMode, serviceCallback: ServiceCallback)

    Inicia o processo de acessar a localização do usuário e enviá-la ao AWS rastreador enquanto o aplicativo está em segundo plano. BackgroundTrackingModetem as seguintes opções:

    • ACTIVE_TRACKING: essa opção rastreia ativamente as atualizações de localização de um usuário.

    • BATTERY_SAVER_TRACKING: essa opção rastreia as atualizações de localização do usuário a cada 15 minutos.

  • Classe: LocationTracker

    stopBackgroundService()

    Interrompe o processo de acessar a localização do usuário e enviá-la ao AWS rastreador enquanto o aplicativo está em segundo plano.

  • Classe: LocationTracker

    getTrackerDeviceLocation()

    Recupera a localização do dispositivo dos serviços do Amazon Location.

  • Classe: LocationTracker

    getDeviceLocation(locationTrackingCallback: LocationTrackingCallback?)

    Recupera a localização atual do dispositivo do cliente do provedor de localização fundido e a carrega no rastreador do Amazon Location.

  • Classe: LocationTracker

    uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)

    Carrega a localização do dispositivo para os serviços do Amazon Location após a filtragem com base nos filtros de localização configurados.

  • Classe: LocationTracker

    enableFilter(filter: LocationFilter)

    Ativa um filtro de localização específico.

  • Classe: LocationTracker

    checkFilterIsExistsAndUpdateValue(filter: LocationFilter)

    Desativa o filtro de localização específico.

  • Classe: 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())

    Isso inicializa o LocationTrackerConfig com valores de parâmetros definidos pelo usuário. Se um valor de parâmetro não for fornecido, ele será definido como um valor padrão.

  • Classe: LocationFilter

    shouldUpload(currentLocation: LocationEntry, previousLocation: LocationEntry?): Boolean

    O LocationFilter é um protocolo que os usuários podem implementar para a implementação de filtros personalizados. Você precisa implementar a função shouldUpload para comparar a localização anterior e atual e retornar se a localização atual deve ser carregada.

Exemplos

O exemplo de código a seguir mostra a funcionalidade do SDK de rastreamento móvel.

Este exemplo usa o LocationTracker para iniciar e interromper o rastreamento em 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()