iOS Handy-Tracking SDK - Amazon Location Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

iOS Handy-Tracking SDK

Das mobile Tracking von Amazon Location SDK bietet Hilfsprogramme, mit denen Sie sich einfach authentifizieren, Gerätepositionen erfassen und Positionsaktualisierungen an Amazon Location Trackers senden können. Das SDK unterstützt die lokale Filterung von Standortaktualisierungen mit konfigurierbaren Aktualisierungsintervallen. Dies reduziert die Datenkosten und optimiert die intermittierende Konnektivität für Ihre iOS-Anwendungen.

Das iOS-Tracking SDK ist verfügbar auf GitHub: Amazon Location Mobile Tracking SDK für iOS.

In diesem Abschnitt werden die folgenden Themen für das mobile Tracking von Amazon Location für iOS behandeltSDK:

Installation

Gehen Sie wie folgt vor, um das mobile Tracking SDK für iOS zu installieren:

  1. Gehen Sie in Ihrem Xcode-Projekt zu Datei und wählen Sie Paketabhängigkeiten hinzufügen.

  2. Geben Sie Folgendes einURL: https://github.com/aws-geospatial/amazon-location-mobile-tracking-sdk-ios/ in die Suchleiste und drücken Sie die Eingabetaste.

  3. Wählen Sie das amazon-location-mobile-tracking-sdk-ios Package aus und klicken Sie auf Paket hinzufügen.

  4. Wählen Sie das AmazonLocationiOSTrackingSDK Paketprodukt aus und klicken Sie auf Package hinzufügen.

Verwendung

Das folgende Verfahren zeigt Ihnen, wie Sie mithilfe von Anmeldeinformationen von Cognito einen Authentifizierungshelfer erstellen.

  1. Nach der Installation der Bibliothek müssen Sie Ihrer info.plist Datei eine oder beide Beschreibungen hinzufügen:

    Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
  2. Als Nächstes importiere das AuthHelper in deine Klasse:

    import AmazonLocationiOSAuthSDKimport AmazonLocationiOSTrackingSDK
  3. Anschließend erstellen Sie ein AuthHelper Objekt und verwenden es mit dem AWS SDK, indem Sie einen Authentifizierungshelfer mit Anmeldeinformationen von Amazon Cognito erstellen.

    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)

Filter

Das mobile Tracking iOS von Amazon Location SDK verfügt über drei integrierte Standortfilter.

  • TimeLocationFilter: Filtert den aktuellen Standort, der hochgeladen werden soll, auf der Grundlage eines definierten Zeitintervalls.

  • DistanceLocationFilter: Filtert Standortaktualisierungen auf der Grundlage eines angegebenen Entfernungsschwellenwerts.

  • AccuracyLocationFilter: Filtert Standortaktualisierungen, indem die seit der letzten Aktualisierung zurückgelegte Entfernung mit der Genauigkeit des aktuellen Standorts verglichen wird.

In diesem Beispiel werden Filter zum LocationTracker Zeitpunkt der Erstellung hinzugefügt:

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

In diesem Beispiel wird der Filter zur Laufzeit aktiviert und deaktiviert mitLocationTracker:

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

SDKTracking-Funktionen für iOS Mobile

Das mobile Tracking von Amazon Location SDK für iOS umfasst die folgenden Funktionen:

  • Klasse: LocationTracker

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

    Dies ist eine Initialisierungsfunktion zum Erstellen eines LocationTracker Objekts. Sie benötigt Instanzen von LocationCredentialsProvider trackerName und optional eine Instanz von. LocationTrackingConfig Wenn die Konfiguration nicht bereitgestellt wird, wird sie mit Standardwerten initialisiert.

  • Klasse: LocationTracker

    setTrackerConfig(config: LocationTrackerConfig)

    Dadurch wird die Konfiguration von Tracker so eingestellt, dass sie zu jedem Zeitpunkt nach der Initialisierung des Location Trackers wirksam wird

  • Klasse: LocationTracker

    getTrackerConfig()

    Dadurch wird die Konfiguration der Standortverfolgung abgerufen, die Sie in Ihrer App verwenden oder ändern können.

    Gibt zurück: LocationTrackerConfig

  • Klasse: LocationTracker

    getDeviceId()

    Ruft die generierte Geräte-ID des Location Trackers ab.

    Gibt zurück: String?

  • Klasse: LocationTracker

    startTracking()

    Startet den Prozess, auf den Standort des Benutzers zuzugreifen und ihn an den AWS Tracker zu senden.

  • Klasse: LocationTracker

    resumeTracking()

    Setzt den Vorgang fort, auf den Standort des Benutzers zuzugreifen und ihn an den AWS Tracker zu senden.

  • Klasse: LocationTracker

    stopTracking()

    Stoppt das Nachverfolgen des Standorts des Benutzers.

  • Klasse: LocationTracker

    startBackgroundTracking(mode: BackgroundTrackingMode)

    Startet den Prozess, bei dem auf den Standort des Benutzers zugegriffen und dieser an den AWS Tracker gesendet wird, während sich die Anwendung im Hintergrund befindet. BackgroundTrackingModehat die folgenden Optionen:

    • Active:Diese Option unterbricht Standortaktualisierungen nicht automatisch.

    • BatterySaving:Diese Option unterbricht automatisch Standortaktualisierungen

    • None:Mit dieser Option werden Standortaktualisierungen im Hintergrund insgesamt deaktiviert

  • Klasse: LocationTracker

    resumeBackgroundTracking(mode: BackgroundTrackingMode)

    Setzt den Vorgang fort, auf den Standort des Benutzers zuzugreifen und ihn an den AWS Tracker zu senden, während sich die Anwendung im Hintergrund befindet.

  • Klasse: LocationTracker

    stopBackgroundTracking()

    Stoppt den Zugriff auf den Standort des Benutzers und das Senden an den AWS Tracker, während sich die Anwendung im Hintergrund befindet.

  • Klasse: LocationTracker

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

    Ruft die hochgeladenen Tracking-Standorte für das Gerät des Benutzers zwischen Start- und Enddatum und Uhrzeit ab.

    Gibt zurück: Void

  • Klasse: LocationTrackerConfig

    init()

    Dies initialisiert die LocationTrackerConfig mit Standardwerten.

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

    Dadurch wird der LocationTrackerConfig mit benutzerdefinierten Parameterwerten initialisiert. Wenn kein Parameterwert angegeben wird, wird er auf einen Standardwert gesetzt.

  • Klasse: LocationFilter

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

    Das LocationFilter ist ein Protokoll, das Benutzer für ihre benutzerdefinierte Filter-Implementierung implementieren können. Ein Benutzer müsste eine shouldUpload Funktion implementieren, um den vorherigen und den aktuellen Standort zu vergleichen und zurückzukehren, wenn der aktuelle Standort hochgeladen werden soll.

Beispiele

In diesem Abschnitt werden Beispiele für die Verwendung von Amazon Location Mobile Tracking SDK für iOS beschrieben.

Anmerkung

Stellen Sie sicher, dass die erforderlichen Berechtigungen in der info.plist Datei festgelegt sind. Dies sind dieselben Berechtigungen, die im Verwendung Abschnitt aufgeführt sind.

Das folgende Beispiel zeigt die Funktionen zum Verfolgen des Gerätestandorts und zum Abrufen nachverfolgter Standorte:

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

Fangen Sie an, den Standort zu verfolgen:

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

Setze die Verfolgung des Standorts fort:

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

Beenden Sie die Verfolgung des Standorts:

locationTracker.stopTracking()

Hintergrundverfolgung starten:

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

Hintergrundverfolgung fortsetzen:

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

Um die Hintergrundverfolgung zu beenden:

locationTracker.stopBackgroundTracking()

Rufen Sie die verfolgten Standorte des Geräts vom Tracker ab:

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