Amazon Location SDK und Bibliotheken - 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.

Amazon Location SDK und Bibliotheken

Das Amazon Location SDK besteht aus einer Reihe von Open-Source-Bibliotheken, die nützliche Funktionen für die Entwicklung von Amazon Location-Anwendungen bieten. Die folgenden Funktionen sind enthalten:

  • Amazon Location Client — Die Amazon Location-Objekte im AWS SDK v3 sind gebündelt und verpackt, um die Verwendung bei der Webentwicklung zu vereinfachen.

  • Authentifizierung — Das Authentifizierungsprogramm vereinfacht die Authentifizierung (mithilfe von Amazon Cognito oder API-Schlüsseln) beim Erstellen einer Webseite JavaScript, iOS- oder Android-Anwendung für Amazon Location Service.

  • Tracking — Die mobilen Tracking-SDKs sind für iOS und Android verfügbar. Dieses SDK erleichtert mobilen Anwendungen die Interaktion mit Amazon Location Trackers.

  • GeoJSON-Funktionen von Amazon Location — Die GeoJSON-Konvertierungsprogramme erleichtern die Konvertierung zwischen den branchenüblichen GeoJSON-formatierten Daten und den Amazon Location API-Formaten.

Wie fange ich an, das Amazon Location SDK zu verwenden

Das Amazon Location SDK besteht aus einer Reihe von Funktionen, die die Verwendung des Amazon Location Service in einer Anwendung vereinfachen können. Sie können diese Funktionen installieren und in Ihre JavaScript Anwendung importieren. In den folgenden Abschnitten werden der Amazon Location-Client sowie die Authentifizierungs- und GeoJSON-Hilfsbibliotheken beschrieben.

Kunde mit Amazon-Standort

Bei AWS SDK v3 ist das SDK nach Diensten getrennt. Sie können nur die Teile installieren, die Sie benötigen. Verwenden Sie beispielsweise die folgenden Befehle, um den Amazon Location-Client und den Anmeldeinformationsanbieter für Amazon Cognito zu installieren.

npm install @aws-sdk/client-location npm install @aws-sdk/credential-providers

Um die Nutzung von Amazon Location Service in JavaScript Web-Frontend-Anwendungen zu erleichtern, AWS stellt es ein gehostetes Paket aus der Amazon Location-Bibliothek und dem Anbieter für Anmeldeinformationen bereit. Um den mitgelieferten Client zu verwenden, fügen Sie ihn wie folgt zu Ihrem HTML-Code in einem Skript-Tag hinzu:

<script src="https://unpkg.com/@aws/amazon-location-client@1.x/dist/amazonLocationClient.js"></script>
Anmerkung

Das Paket wird auf dem neuesten Stand gehalten und ist aus Gründen der Benutzerfreundlichkeit abwärtskompatibel. Wenn Sie dieses Skript-Tag oder die NPM-Installation verwenden, wird immer die neueste Version abgerufen.

JavaScript Authentifizierungshelfer

Der Amazon JavaScript Location-Authentifizierungshelfer erleichtert die Authentifizierung, wenn Sie Amazon Location API-Aufrufe von Ihrer JavaScript Anwendung aus tätigen. Dieser Authentifizierungshelfer hilft Ihnen speziell bei der Verwendung von Amazon Cognito oder API-Schlüsseln als Authentifizierungsmethode. Dies ist eine Open-Source-Bibliothek, die hier verfügbar GitHub ist: https://github.com/aws-geospatial/ amazon-location-utilities-auth -helper-js.

Anmerkung

Die Amazon Cognito-Unterstützung im Authentifizierungshelfer unterstützt die Funktion für föderierte Identitäten von Amazon Cognito nicht.

Installation

Sie können die Bibliotheken mit einer lokalen Installation verwenden, wenn Sie ein Build-System wie Webpack verwenden, oder indem Sie vorgefertigte JavaScript Bundles mit <script> Tags in Ihr HTML aufnehmen.

  • Verwenden Sie den folgenden Befehl, um die Bibliothek mit NPM zu installieren:

    npm install @aws/amazon-location-utilities-auth-helper
  • Verwenden Sie den folgenden Befehl in Ihrer HTML-Datei, um das Skript zu laden:

    <script src="https://unpkg.com/@aws/amazon-location-utilities-auth-helper@1.x/dist/amazonLocationAuthHelper.js"></script>

Import

Um eine bestimmte Funktion in Ihrer JavaScript Anwendung zu verwenden, müssen Sie diese Funktion importieren. Der folgende Code wird verwendet, um die Funktion withIdentityPoolId in Ihre Anwendung zu importieren.

import { withIdentityPoolId } from '@aws/amazon-location-utilities-auth-helper';

Authentifizierungsfunktionen

Die Amazon Location-Authentifizierungshelfer umfassen die folgenden Funktionen, die ein AuthHelper Objekt zurückgeben:

  • async withIdentityPoolId( identityPoolId: string): AuthHelper— Diese Funktion gibt ein AuthHelper Objekt zurück, das für die Verwendung mit Amazon Cognito initialisiert wurde

  • async withAPIKey( API_KEY: string): AuthHelper— Diese Funktion gibt ein AuthHelper Objekt zurück, das für die Verwendung mit API-Schlüsseln initialisiert wurde.

Das AuthHelper Objekt bietet die folgenden Funktionen:

  • AuthHelper.getMapAuthenticationOptions()— Diese Funktion des AuthHelper Objekts gibt ein JavaScript Objekt mit dem zurücktransformRequest, das mit den Map-Optionen in MapLibre JS verwendet werden kann. Wird nur bereitgestellt, wenn es mit einem Identitätspool initialisiert wurde.

  • AuthHelper.getLocationClientConfig()— Diese Funktion des AuthHelper Objekts gibt ein JavaScript Objekt mit dem zurückcredentials, das zur Initialisierung eines verwendet werden kann. LocationClient

  • AuthHelper.getCredentials()— Diese Funktion des AuthHelper Objekts gibt die internen Anmeldeinformationen von Amazon Cognito zurück. Wird nur bereitgestellt, wenn es mit einem Identitätspool initialisiert wurde.

Beispiel: Initialisieren eines MapLibre Kartenobjekts mit Amazon Cognito unter Verwendung eines AuthHelper

import { withIdentityPoolId } from '@aws/amazon-location-utilities-auth-helper'; const authHelper = await withIdentityPoolId("identity-pool-id"); // use Cognito pool id for credentials const map = new maplibregl.Map({ container: "map", // HTML element ID of map element center: [-123.1187, 49.2819], // initial map center point zoom: 16, // initial map zoom style: https://maps.geo.region.amazonaws.com/maps/v0/maps/mapName/style-descriptor', // Defines the appearance of the map ...authHelper.getMapAuthenticationOptions(), // Provides credential options required for requests to Amazon Location });

Beispiel: Initialisierung des MapLibre Kartenobjekts mit einem API-Schlüssel (AuthHelperist in diesem Fall nicht erforderlich)

const map = new maplibregl.Map({ container: "map", // HTML element ID of map element center: [-123.1187, 49.2819], // initial map center point zoom: 16, // initial map zoom style: https://maps.geo.region.amazonaws.com/maps/v0/maps/${mapName}/style-descriptor?key=api-key-id', });

Beispiel: Initialisieren Sie den Location-Client über das AWS SDK für JS mithilfe von Amazon Cognito und AuthHelper

In diesem Beispiel wird AWS SDK für JavaScript v3 verwendet.

import { withIdentityPoolId } from '@aws/amazon-location-utilities-auth-helper'; const authHelper = await withIdentityPoolId("identity-pool-id"); // use Cognito pool id for credentials //initialize the Location client: const client = new LocationClient({ region: "region", ...authHelper.getLocationClientConfig() // sets up the Location client to use the Cognito pool defined above }); //call a search function with the location client: const result = await client.send(new SearchPlaceIndexForPositionCommand({ IndexName: "place-index", // Place index resource to use Position: [-123.1187, 49.2819], // position to search near MaxResults: 10 // number of results to return });

Beispiel: Initialisieren Sie den Location-Client über das AWS SDK für JS mithilfe eines API-Schlüssels und AuthHelper

In diesem Beispiel wird AWS SDK für JavaScript v3 verwendet.

import { withAPIKey } from '@aws/amazon-location-utilities-auth-helper'; const authHelper = await withAPIKey("api-key-id"); // use API Key id for credentials //initialize the Location client: const client = new LocationClient({ region: "region", ...authHelper.getLocationClientConfig() // sets up the Location client to use the API Key defined above }); //call a search function with the location client: const result = await client.send(new SearchPlaceIndexForPositionCommand({ IndexName: "place-index", // Place index resource to use Position: [-123.1187, 49.2819], // position to search near MaxResults: 10 // number of results to return });

GeoJSON-Konvertierungshilfen

Die Amazon Location GeoJSON-Konvertierungshilfen bieten Tools zur Konvertierung von Amazon Location Service Service-Datentypen in und aus dem branchenüblichen GeoJSON-Format. GeoJSON wird beispielsweise verwendet, um geografische Daten auf der Karte MapLibre zu rendern. Dies ist eine Open-Source-Bibliothek, die hier verfügbar GitHub ist: https://github.com/aws-geospatial/ amazon-location-utilities-datatypes -js.

Installation

Sie können die Bibliotheken mit einer lokalen Installation wie Webpack verwenden oder indem Sie vorgefertigte JavaScript Bundles mit <script> Tags in Ihren HTML-Code einfügen.

  • Verwenden Sie den folgenden Befehl, um die Bibliothek mithilfe von NPM zu installieren.

    npm install @aws/amazon-location-utilities-datatypes
  • Verwenden Sie den folgenden Befehl in Ihrer HTML-Datei, um das Skript zu laden:

    <script src="https://unpkg.com/@aws/amazon-location-utilities-datatypes@1.x/dist/amazonLocationDataConverter.js"></script>

Import

Um eine bestimmte Funktion in Ihrer JavaScript Anwendung zu verwenden, müssen Sie diese Funktion importieren. Der folgende Code wird verwendet, um die Funktion placeToFeatureCollection in Ihre Anwendung zu importieren.

import { placeToFeatureCollection } from '@aws/amazon-location-utilities-datatypes';

GeoJSON-Konvertierungsfunktionen

Die Amazon Location GeoJSON-Konvertierungshilfen umfassen die folgenden Funktionen:

  • placeToFeatureCollection(place: GetPlaceResponse | searchPlaceIndexForPositionResponse | searchPlaceIndexForTextResponse, keepNull: boolean): Feature— Diese Funktion konvertiert Antworten aus den Ortssuchfunktionen in eine GeoJSON-Datei FeatureCollection mit einem oder mehreren Point-Features.

  • devicePositionToFeatureCollection(devicePositions: GetDevicePositionResponse | BatchGetDevicePositionResponse | GetDevicePositionHistoryResponse | ListDevicePositionsResponse, keepNull: boolean)— Diese Funktion konvertiert Antworten aus den Positionsfunktionen des Tracker-Geräts in eine GeoJSON FeatureCollection mit einem oder mehreren Punktmerkmalen.

  • routeToFeatureCollection(legs: CalculateRouteResponse): FeatureCollection— Diese Funktion konvertiert Antworten aus der Funktion „Route berechnen“ in eine GeoJSON-Datei FeatureCollection mit einem einzigen MultiStringLine Feature. Jeder Abschnitt der Route wird durch einen LineString Eintrag in der MultiStringLine dargestellt.

  • geofenceToFeatureCollection(geofences: GetGeofenceResponse | PutGeofenceRequest | BatchPutGeofenceRequest | ListGeofencesResponse): FeatureCollection— Diese Funktion konvertiert die Anfrage oder Antwort von Geofence-Funktionen in eine GeoJSON FeatureCollection mit Polygon-Funktionen. Sie kann Geofences sowohl in der Antwort als auch in der Anfrage konvertieren, sodass Sie Geofences auf einer Karte anzeigen können, bevor Sie sie mit oder hochladen. PutGeofence BatchPutGeofence

    Diese Funktion wandelt einen Kreisgeofence in ein Feature mit einem angenäherten Polygon um, verfügt aber auch über die Eigenschaften „Mittelpunkt“ und „Radius“, um bei Bedarf die Kreisgeofence nachzubilden (siehe die nächste Funktion).

  • featureCollectionToGeofences(featureCollection: FeatureCollection): BatchPutGeofenceRequestEntry[]— Diese Funktion konvertiert ein GeoJSON FeatureCollection mit Polygon-Features in ein Array von BatchPutGeofenceRequestEntry Objekten, sodass das Ergebnis verwendet werden kann, um eine Anfrage zu erstellen. BatchPutGeofence

    Wenn ein Feature in der über die Eigenschaften „Mittelpunkt“ und „Radius“ FeatureCollection verfügt, wird es in einen Kreisgeofence-Anforderungseintrag umgewandelt, wobei die Geometrie des Polygons ignoriert wird.

Beispiel: Konvertiert Suchergebnisse in eine Punktebene in MapLibre

In diesem Beispiel wird AWS SDK für JavaScript Version 3 verwendet.

import { placeToFeatureCollection } from '@aws/amazon-location-utility-datatypes'; ... let map; // map here is an initialized MapLibre instance const client = new LocationClient(config); const input = { your_input }; const command = new searchPlaceIndexForTextCommand(input); const response = await client.send(command); // calling utility function to convert the response to GeoJSON const featureCollection = placeToFeatureCollection(response); map.addSource("search-result", featureCollection); map.addLayer({ id: "search-result", type: "circle", source: "search-result", paint: { "circle-radius": 6, "circle-color": "#B42222", }, });

SDK für die mobile Authentifizierung von Android

Diese Dienstprogramme helfen Ihnen bei der Authentifizierung, wenn Sie Amazon Location Service API-Aufrufe von Ihren Android-Anwendungen aus tätigen. Dies hilft insbesondere bei der Verwendung von Amazon Cognito oder API-Schlüsseln als Authentifizierungsmethode.

Das Android Mobile Authentication SDK ist auf Github verfügbar: Amazon Location Service Mobile Authentication SDK for Android. Darüber hinaus sind sowohl das SDK für die mobile Authentifizierung als auch das AWS SDK im AWS Maven-Repository verfügbar.

Installation

Um das SDK für die mobile Authentifizierung zu verwenden, fügen Sie Ihrer build.gradle Datei in Android Studio die folgenden Importanweisungen hinzu.

implementation("software.amazon.location:auth:0.0.1") implementation("com.amazonaws:aws-android-sdk-location:2.72.0")

Authentifizierungsfunktionen

Das Authentication Helper SDK hat die folgenden Funktionen:

  • authHelper.authenticateWithApiKey("My-Amazon-Location-API-Key"): LocationCredentialsProvider: Diese Funktion gibt einen API-Schlüssel zurück, der LocationCredentialsProvider initialisiert wurde, um mit ihm zu arbeiten.

  • authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id"): LocationCredentialsProvider: Diese Funktion gibt einen Identitätspool zurück, der für die Arbeit mit einem Amazon Cognito Cognito-Identitätspool LocationCredentialsProvider initialisiert wurde.

Verwendung

Um das SDK in Ihrem Code zu verwenden, importieren Sie die folgenden Klassen:

import com.amazonaws.services.geo.AmazonLocationClient import software.amazon.location.auth.AuthHelper import software.amazon.location.auth.LocationCredentialsProvider

Beim Erstellen der Instanzen Authentication Helper und Location Client Provider stehen Ihnen zwei Optionen zur Verfügung. Sie können eine Instance mithilfe von Amazon Location API-Schlüsseln oder Amazon Cognito erstellen.

  • Um eine Authentifizierungshelfer-Instance mit einem Amazon Location API-Schlüssel zu erstellen, deklarieren Sie die Helper-Klasse wie folgt:

    var authHelper = AuthHelper(applicationContext) var locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithApiKey("My-Amazon-Location-API-Key")
  • Um eine Authentifizierungshelferinstanz mit Amazon Cognito zu erstellen, deklarieren Sie die Helper-Klasse wie folgt:

    var authHelper = AuthHelper(applicationContext) var locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")

Sie können mithilfe des Anbieters für Standortinformationen eine Amazon Location-Client-Instance erstellen und den Amazon Location-Service aufrufen. Im folgenden Beispiel wird nach Orten in der Nähe eines bestimmten Breiten- und Längengrades gesucht.

var locationClient = authHelper.getLocationClient(locationCredentialsProvider.getCredentialsProvider()) var searchPlaceIndexForPositionRequest = SearchPlaceIndexForPositionRequest().withIndexName("My-Place-Index-Name").withPosition(arrayListOf(30.405423, -97.718833)) var nearbyPlaces = locationClient.searchPlaceIndexForPosition(searchPlaceIndexForPositionRequest)

SDK für die mobile Authentifizierung von iOS

Diese Dienstprogramme helfen Ihnen bei der Authentifizierung, wenn Sie Amazon Location Service API-Aufrufe von Ihren iOS-Anwendungen aus tätigen. Dies hilft insbesondere bei der Verwendung von Amazon Cognito oder API-Schlüsseln als Authentifizierungsmethode.

Das iOS Mobile Authentication SDK ist auf Github verfügbar: Amazon Location Service Mobile Authentication SDK for iOS.

Installation

Installieren Sie das SDK in einem Xcode-Projekt:

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

  2. Geben Sie die Paket-URL: https://github.com/aws-geospatial/ amazon-location-mobile-auth -sdk-ios/ in die Suchleiste ein und drücken Sie die Eingabetaste.

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

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

Authentifizierungsfunktionen

Das Authentication Helper SDK hat die folgenden Funktionen:

  • authHelper.authenticateWithApiKey("My-Amazon-Location-API-Key"): LocationCredentialsProvider: Diese Funktion gibt einen API-Schlüssel zurück, der LocationCredentialsProvider initialisiert wurde, um mit ihm zu arbeiten.

  • authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id"): LocationCredentialsProvider: Diese Funktion gibt einen Identitätspool zurück, der für die Arbeit mit einem Amazon Cognito Cognito-Identitätspool LocationCredentialsProvider initialisiert wurde.

Verwendung

Um das SDK für die mobile Authentifizierung zu verwenden, fügen Sie Ihrer Aktivität die folgenden Anweisungen hinzu:

import AmazonLocationiOSAuthSDK import AWSLocationXCF

Sie haben zwei Optionen, wenn Sie die Instanzen Authentication Helper und Location Client Provider erstellen. Sie können eine Instance mithilfe von Amazon Location API-Schlüsseln oder Amazon Cognito erstellen.

  • Um eine Authentifizierungshelfer-Instance mit einem Amazon Location API-Schlüssel zu erstellen, deklarieren Sie die Helper-Klasse wie folgt:

    let authHelper = AuthHelper() let locationCredentialsProvider = authHelper.authenticateWithAPIKey(apiKey: "My-Amazon-Location-API-Key", region: "account-region")
  • Um eine Authentifizierungshelferinstanz mit Amazon Cognito zu erstellen, deklarieren Sie die Helper-Klasse wie folgt:

    let authHelper = AuthHelper() let locationCredentialsProvider = authHelper.authenticateWithCognitoUserPool(identityPoolId: "My-Amazon-Location-API-Key", region: "account-region")

Sie können mithilfe des Anbieters für Standortinformationen eine Amazon Location-Client-Instance erstellen und den Amazon Location-Service aufrufen. Im folgenden Beispiel wird nach Orten in der Nähe eines bestimmten Breiten- und Längengrades gesucht.

let locationClient = AWSLocation.default() let searchPlaceIndexForPositionRequest = AWSLocationSearchPlaceIndexForPositionRequest()! searchPlaceIndexForPositionRequest.indexName = "My-Place-Index-Name" searchPlaceIndexForPositionRequest.position = [30.405423, -97.718833] let nearbyPlaces = locationClient.searchPlaceIndex(forPosition: searchPlaceIndexForPositionRequest)

Tracking-SDK für Android für Mobilgeräte

Das Amazon Location Mobile Tracking SDK bietet Dienstprogramme, mit denen Sie sich auf einfache Weise authentifizieren, Gerätepositionen erfassen und Positionsaktualisierungen an Amazon Location Trackers senden können. Das SDK unterstützt das lokale Filtern von Standortaktualisierungen mit konfigurierbaren Aktualisierungsintervallen. Dies reduziert die Datenkosten und optimiert die intermittierende Konnektivität für Ihre Android-Anwendungen.

Das Android Tracking SDK ist verfügbar auf GitHub: Amazon Location Mobile Tracking SDK for Android. Darüber hinaus sind sowohl das SDK für die mobile Authentifizierung als auch das AWS SDK im AWS Maven-Repository verfügbar. Das Android-Tracking-SDK ist so konzipiert, dass es mit dem allgemeinen AWS SDK funktioniert.

In diesem Abschnitt werden die folgenden Themen für das Amazon Location Mobile Tracking Android SDK behandelt:

Installation

Um das SDK zu installieren, fügen Sie dem Abschnitt dependencies Ihrer build.gradle-Datei in Android Studio die folgenden Zeilen hinzu:

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

Verwendung

Dieses Verfahren zeigt Ihnen, wie Sie das SDK verwenden, um das Objekt zu authentifizieren und zu erstellen: LocationTracker

Anmerkung

Bei diesem Verfahren wird davon ausgegangen, dass Sie die im Installation Abschnitt erwähnte Bibliothek importiert haben.

  1. Importieren Sie die folgenden Klassen in Ihren Code:

    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. Erstellen Sie als Nächstes eineAuthHelper, da der LocationCredentialsProvider Parameter für die Erstellung eines LocationTracker Objekts erforderlich ist:

    // Create an authentication helper using credentials from Cognito val authHelper = AuthHelper(applicationContext) val locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")
  3. Verwenden Sie nun das LocationCredentialsProvider und, LocationTrackerConfig um ein LocationTracker Objekt zu erstellen:

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

Filter

Das Android SDK für mobiles Tracking von Amazon Location 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())

Tracking-Funktionen des Android Mobile SDK

Das Amazon Location Mobile Tracking SDK for Android umfasst die folgenden Funktionen:

  • Klasse: LocationTracker

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

    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

    start(locationTrackingCallback: LocationTrackingCallback)

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

  • Klasse: LocationTracker

    isTrackingInForeground()

    Überprüft, ob die Standortverfolgung gerade läuft.

  • Klasse: LocationTracker

    stop()

    Stoppt das Nachverfolgen des Standorts des Benutzers.

  • Klasse: LocationTracker

    startTracking()

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

  • Klasse: LocationTracker

    startBackground(mode: BackgroundTrackingMode, serviceCallback: ServiceCallback)

    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. BackgroundTrackingMode hat die folgenden Optionen:

    • ACTIVE_TRACKING: Diese Option verfolgt aktiv die Standortaktualisierungen eines Benutzers.

    • BATTERY_SAVER_TRACKING: Mit dieser Option werden die Standortaktualisierungen des Benutzers alle 15 Minuten nachverfolgt.

  • Klasse: LocationTracker

    stopBackgroundService()

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

    Ruft den Gerätestandort von den Amazon-Ortungsdiensten ab.

  • Klasse: LocationTracker

    getDeviceLocation(locationTrackingCallback: LocationTrackingCallback?)

    Ruft den aktuellen Gerätestandort vom Fused Location Provider-Client ab und lädt ihn auf Amazon Location Tracker hoch.

  • Klasse: LocationTracker

    uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)

    Lädt den Gerätestandort nach der Filterung anhand der konfigurierten Standortfilter in die Amazon Location Services hoch.

  • Klasse: LocationTracker

    enableFilter(filter: LocationFilter)

    Aktiviert einen bestimmten Standortfilter.

  • Klasse: LocationTracker

    checkFilterIsExistsAndUpdateValue(filter: LocationFilter)

    Deaktivieren Sie einen bestimmten Standortfilter.

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

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

  • Klasse: LocationFilter

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

    Das LocationFilter ist ein Protokoll, das Benutzer für ihre benutzerdefinierte Filter-Implementierung implementieren können. Sie müssen die shouldUpload Funktion implementieren, um den vorherigen und den aktuellen Standort zu vergleichen und herauszufinden, ob der aktuelle Standort hochgeladen werden soll.

Beispiele

Das folgende Codebeispiel zeigt die Funktionalität des Mobile Tracking SDK.

In diesem Beispiel wird das verwendetLocationTracker, um das Tracking im Hintergrund zu starten und zu beenden:

// 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()

iOS SDK für mobiles Tracking

Das Amazon Location Mobile Tracking SDK bietet Dienstprogramme, mit denen Sie sich auf einfache Weise authentifizieren, Gerätepositionen erfassen und Positionsaktualisierungen an Amazon Location Trackers senden können. Das SDK unterstützt das lokale Filtern 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 Amazon Location Mobile Tracking iOS SDK behandelt:

Installation

Gehen Sie wie folgt vor, um das Mobile Tracking SDK for iOS zu installieren:

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

  2. Geben Sie die folgende URL: https://github.com/aws-geospatial/ amazon-location-mobile-tracking -sdk-ios/ in die Suchleiste ein 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 iOS-SDK für mobiles Tracking von Amazon Location 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())

Tracking-Funktionen des iOS Mobile SDK

Das Amazon Location Mobile Tracking SDK for 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 des Amazon Location Mobile Tracking SDK for 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) } }) }