Rastreamento móvel iOS SDK - 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á.

Rastreamento móvel iOS SDK

O rastreamento móvel de localização da Amazon SDK fornece utilitários que ajudam a autenticar, capturar posições de dispositivos e enviar atualizações de posição para os Amazon Location Trackers com facilidade. O SDK suporta 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 seus aplicativos iOS.

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

Esta seção aborda os seguintes tópicos para o rastreamento móvel de localização da Amazon para iOSSDK:

Instalação

Use o procedimento a seguir para instalar o rastreamento móvel SDK para iOS:

  1. No seu projeto do Xcode, vá até Arquivo e selecione Add Package Dependencies.

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

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

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

Uso

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

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

    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 rastreamento móvel de localização da Amazon para iOS SDK 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 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 tempo de execução comLocationTracker:

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

Funções de SDK rastreamento de dispositivos móveis para iOS

O rastreamento móvel de localização da Amazon SDK 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 LocationTracker objeto. Requer instâncias de trackerName eLocationCredentialsProvider, opcionalmente, uma instância deLocationTrackingConfig. 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 em seu aplicativo.

    Devoluções: LocationTrackerConfig

  • Classe: LocationTracker

    getDeviceId()

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

    Devoluções: 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.

    Devoluções: 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)

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

Exemplos

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

nota

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

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 }

Continue rastreando a 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 os locais rastreados 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) } }) }