Monitoraggio per dispositivi mobili iOS SDK - Servizio di posizione Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Monitoraggio per dispositivi mobili iOS SDK

Il tracciamento mobile di Amazon Location SDK fornisce utilità che aiutano a autenticare, acquisire facilmente le posizioni dei dispositivi e inviare aggiornamenti di posizione ad Amazon Location Tracker. SDKSupporta il filtraggio locale degli aggiornamenti di posizione con intervalli di aggiornamento configurabili. Ciò riduce i costi dei dati e ottimizza la connettività intermittente per le applicazioni iOS.

Il tracciamento iOS SDK è disponibile su GitHub: Amazon Location Mobile Tracking SDK per iOS.

Questa sezione tratta i seguenti argomenti per il tracciamento mobile di Amazon Location iOSSDK:

Installazione

Utilizza la seguente procedura per installare il tracciamento mobile SDK per iOS:

  1. Nel tuo progetto Xcode, vai su File e seleziona Add Package Dependencies.

  2. Digita quanto segueURL: https://github.com/aws-geospatial/amazon-location-mobile-tracking-sdk-ios/ nella barra di ricerca e premi il tasto invio.

  3. Seleziona il amazon-location-mobile-tracking-sdk-ios pacchetto e fai clic su Aggiungi pacchetto.

  4. Seleziona il prodotto del AmazonLocationiOSTrackingSDK pacchetto e fai clic su Aggiungi pacchetto.

Utilizzo

La procedura seguente mostra come creare un helper di autenticazione utilizzando le credenziali di Cognito.

  1. Dopo aver installato la libreria, devi aggiungere una o entrambe le descrizioni nel file: info.plist

    Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
  2. Quindi, importali AuthHelper nella tua classe:

    import AmazonLocationiOSAuthSDKimport AmazonLocationiOSTrackingSDK
  3. Quindi creerai un AuthHelper oggetto e lo utilizzerai con AWS SDK, creando un helper di autenticazione utilizzando le credenziali di 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)

Filtri

Il tracciamento mobile di Amazon Location iOS SDK ha tre filtri di posizione integrati.

  • TimeLocationFilter: filtra la posizione corrente da caricare in base a un intervallo di tempo definito.

  • DistanceLocationFilter: filtra gli aggiornamenti della posizione in base a una soglia di distanza specificata.

  • AccuracyLocationFilter: filtra gli aggiornamenti della posizione confrontando la distanza percorsa dall'ultimo aggiornamento con la precisione della posizione corrente.

Questo esempio aggiunge filtri in LocationTracker al momento della creazione:

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

Questo esempio abilita e disabilita il filtro in fase di esecuzione conLocationTracker:

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

Funzioni di SDK tracciamento per dispositivi mobili iOS

Il tracciamento mobile di Amazon Location SDK per iOS include le seguenti funzioni:

  • Classe: LocationTracker

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

    Questa è una funzione di inizializzazione per creare un LocationTracker oggetto. Richiede istanze di trackerName eLocationCredentialsProvider, facoltativamente, un'istanza di. LocationTrackingConfig Se la configurazione non viene fornita, verrà inizializzata con valori predefiniti.

  • Classe: LocationTracker

    setTrackerConfig(config: LocationTrackerConfig)

    Questo imposta la configurazione di Tracker in modo che abbia effetto in qualsiasi momento dopo l'inizializzazione del localizzatore di posizione

  • Classe: LocationTracker

    getTrackerConfig()

    In questo modo viene ottenuta la configurazione di tracciamento della posizione da utilizzare o modificare nell'app.

    Restituisce: LocationTrackerConfig

  • Classe: LocationTracker

    getDeviceId()

    Ottiene l'ID del dispositivo generato dal localizzatore di posizione.

    Restituisce: String?

  • Classe: LocationTracker

    startTracking()

    Avvia il processo di accesso alla posizione dell'utente e di invio al AWS tracker.

  • Classe: LocationTracker

    resumeTracking()

    Riprende il processo di accesso alla posizione dell'utente e di invio al AWS tracker.

  • Classe: LocationTracker

    stopTracking()

    Interrompe il processo di tracciamento della posizione dell'utente.

  • Classe: LocationTracker

    startBackgroundTracking(mode: BackgroundTrackingMode)

    Avvia il processo di accesso alla posizione dell'utente e di invio al AWS tracker mentre l'applicazione è in background. BackgroundTrackingModeha le seguenti opzioni:

    • Active:Questa opzione non sospende automaticamente gli aggiornamenti della posizione.

    • BatterySaving:Questa opzione sospende automaticamente gli aggiornamenti della posizione

    • None:Questa opzione disabilita nel complesso gli aggiornamenti della posizione in background

  • Classe: LocationTracker

    resumeBackgroundTracking(mode: BackgroundTrackingMode)

    Riprende il processo di accesso alla posizione dell'utente e di invio al AWS tracker mentre l'applicazione è in background.

  • Classe: LocationTracker

    stopBackgroundTracking()

    Interrompe il processo di accesso alla posizione dell'utente e di invio della stessa al AWS tracker mentre l'applicazione è in background.

  • Classe: LocationTracker

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

    Recupera le posizioni di tracciamento caricate per il dispositivo dell'utente tra la data e l'ora di inizio e fine.

    Restituisce: Void

  • Classe: LocationTrackerConfig

    init()

    Questo inizializza LocationTrackerConfig con valori predefiniti.

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

    Questo inizializza il LocationTrackerConfig con valori dei parametri definiti dall'utente. Se non viene fornito un valore di parametro, verrà impostato su un valore predefinito.

  • Classe: LocationFilter

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

    LocationFilterÈ un protocollo che gli utenti possono implementare per l'implementazione di filtri personalizzati. Un utente dovrebbe implementare una shouldUpload funzione per confrontare la posizione precedente e corrente e restituire se la posizione corrente deve essere caricata.

Esempi

Questa sezione descrive alcuni esempi di utilizzo di Amazon Location Mobile Tracking SDK per iOS.

Nota

Assicurati che le autorizzazioni necessarie siano impostate nel info.plist file. Queste sono le stesse autorizzazioni elencate nella Utilizzo sezione.

L'esempio seguente illustra la funzionalità per il tracciamento della posizione del dispositivo e il recupero delle posizioni tracciate:

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

Inizia a tracciare la posizione:

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

Riprendi a tracciare la posizione:

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

Smetti di tracciare la posizione:

locationTracker.stopTracking()

Inizia il tracciamento in background:

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

Riprendi il tracciamento in background:

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

Per interrompere il tracciamento in background:

locationTracker.stopBackgroundTracking()

Recupera le posizioni tracciate del dispositivo dal tracker:

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