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.
Erstellen Sie eine iOS-Anwendung
Gehen Sie wie folgt vor, um mithilfe von Amazon Location Service eine iOS-Anwendung zu erstellen.
Klonen Sie die Projektdateien von GitHub
Sie können Amazon Location Service Service-Ressourcen generieren, sobald Ihr AWS Konto bereit ist. Diese Ressourcen sind für die Ausführung der bereitgestellten Codefragmente unerlässlich.
Anmerkung
Wenn Sie noch kein AWS Konto erstellt haben, erstellen Sie bitte ein AWS
Zunächst müssen Sie eine Amazon Cognito Identity Pool-ID erstellen. Gehen Sie dazu wie folgt vor:
-
Navigieren Sie in der AWS Konsole zum Amazon Cognito-Service und wählen Sie dann im Menü auf der linken Seite Identitätspools und dann Identitätspool erstellen aus.
-
Vergewissern Sie sich, dass Gastzugriff aktiviert ist, und klicken Sie auf Weiter, um fortzufahren.
-
Erstellen Sie als Nächstes eine neue IAM-Rolle oder Verwenden Sie eine vorhandene IAM-Rolle.
-
Geben Sie einen Namen für den Identitätspool ein und stellen Sie sicher, dass Identity Pool Zugriff auf
(geo)Amazon-Standortressourcen für die Karte und den Tracker hat, die Sie im nächsten Verfahren erstellen werden.
Jetzt müssen Sie in der AWS Amazon Location-Konsole eine Karte erstellen und gestalten. Gehen Sie dazu wie folgt vor:
-
Navigieren Sie in der Amazon Location-Konsole zum Abschnitt Maps
und wählen Sie Create Map aus, um eine Vorschau der verfügbaren Kartenstile anzuzeigen. -
Geben Sie der neuen Kartenressource einen Namen und eine Beschreibung. Notieren Sie sich den Namen, den Sie der Kartenressource zuweisen, so wie er später im Tutorial verwendet wird.
-
Berücksichtigen Sie bei der Auswahl eines Kartenstils den Kartendatenanbieter. Weitere Informationen finden Sie in Abschnitt 82 der AWS Servicebedingungen
. -
Akzeptieren Sie die Allgemeinen Geschäftsbedingungen für Amazon-Standorte und
wählen Sie dann Karte erstellen aus. Nachdem die Karte erstellt wurde, können Sie mit der Karte interagieren, indem Sie sie vergrößern, verkleinern oder in eine beliebige Richtung schwenken.
So erstellen Sie einen Tracker mit der Amazon Location-Konsole
-
Öffnen Sie die Amazon Location Service Service-Konsole
. -
Wählen Sie im linken Navigationsbereich Trackers aus.
-
Wählen Sie Tracker erstellen.
-
Füllen Sie alle erforderlichen Felder aus.
-
Wählen Sie unter Positionsfilterung die Option aus, die am besten zu Ihrer geplanten Nutzung Ihrer Tracker-Ressource passt. Wenn Sie die Positionsfilterung nicht einrichten, ist die Standardeinstellung TimeBased. Weitere Informationen finden Sie unter Trackers in diesem Handbuch und PositionFiltering in der Amazon Location Service Trackers API-Referenz.
-
Wählen Sie „Tracker erstellen“, um den Vorgang abzuschließen.
Beim Erstellen einer Geofence-Sammlung können Sie entweder die Konsole, die API oder die CLI verwenden. Die folgenden Verfahren führen Sie durch die einzelnen Optionen.
Erstellen Sie mit der Amazon Location-Konsole eine Geofence-Sammlung:
-
Öffnen Sie die Amazon Location Service Service-Konsole unter https://console.aws.amazon.com/location/.
-
Wählen Sie im linken Navigationsbereich Geofence Collections aus.
-
Wählen Sie Geofence-Sammlung erstellen.
-
Geben Sie einen Namen und eine Beschreibung für die Sammlung an.
-
Unter EventBridge CloudWatch Regel mit Ziel können Sie eine optionale EventBridge Regel erstellen, mit der Sie sofort auf Geofence-Ereignisse reagieren können. Dadurch kann Amazon Location Ereignisse in Amazon CloudWatch Logs veröffentlichen.
-
Wählen Sie Geofence-Sammlung erstellen.
Erstellen Sie eine Geofence-Sammlung mithilfe des Amazon-Standorts: APIs
Verwenden Sie den CreateGeofenceCollection Vorgang von Amazon Location Geofences APIs aus. Das folgende Beispiel verwendet eine API-Anfrage, um eine Geofence-Sammlung namens zu erstellen. GOECOLLECTION_NAME
POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GOECOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }
Erstellen Sie eine Geofence-Sammlung mithilfe von Befehlen: AWS CLI
Verwenden Sie den create-geofence-collection-Befehl. Im folgenden Beispiel wird eine verwendet AWS CLI , um eine Geofence-Sammlung namens zu erstellen. GOECOLLECTION_NAME
aws location \ create-geofence-collection \ --collection-name "GOECOLLECTION_NAME" \ --description "Shopping center geofence collection" \ --tags Tag1=Value1
Um einen Tracker mit einer Geofence-Sammlung zu verknüpfen, können Sie entweder die Konsole, die API oder die CLI verwenden. Die folgenden Verfahren führen Sie durch die einzelnen Optionen.
Verknüpfen Sie mithilfe der Amazon Location Service Service-Konsole eine Tracker-Ressource mit einer Geofence-Sammlung:
-
Öffnen Sie die Amazon Location-Konsole.
-
Wählen Sie im linken Navigationsbereich Trackers aus.
-
Wählen Sie unter Device Trackers den Namenslink des Ziel-Trackers aus.
-
Wählen Sie unter Verknüpfte Geofence-Sammlungen die Option Geofence-Sammlung verknüpfen aus.
-
Wählen Sie im Fenster Verknüpfte Geofence-Sammlung eine Geofence-Sammlung aus dem Drop-down-Menü aus.
-
Wählen Sie Verknüpfen.
-
Nachdem Sie die Tracker-Ressource verknüpft haben, wird ihr der Status Aktiv zugewiesen.
Verknüpfen Sie mithilfe des Amazon-Standorts eine Tracker-Ressource mit einer Geofence-Sammlung: APIs
Verwenden Sie den AsssociateTrackerConsumer Vorgang von den Amazon Location Trackers APIs aus. Im folgenden Beispiel wird eine API-Anfrage verwendet, die mithilfe ihres Amazon-Ressourcennamens (ARN) ExampleTracker mit einer Geofence-Sammlung verknüpft wird.
POST /tracking/v0/trackers/ExampleTracker/consumers Content-type: application/json { "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" }
Verknüpfen Sie mithilfe von Befehlen eine Tracker-Ressource mit einer Geofence-Sammlung: AWS CLI
Verwenden Sie den associate-tracker-consumer -Befehl. Im folgenden Beispiel wird eine verwendet AWS CLI , um eine Geofence-Sammlung namens zu erstellen. GOECOLLECTION_NAME
aws location \ associate-tracker-consumer \ --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \ --tracker-name "ExampleTracker"
Erstellen einer Lambda-Funktion:
Um eine Verbindung zwischen AWS IoT Core und Amazon Location Service herzustellen, benötigen Sie eine AWS Lambda Funktion zur Verarbeitung von Nachrichten, die von EventBridge CloudWatch Ereignissen weitergeleitet werden. Diese Funktion extrahiert alle Positionsdaten, formatiert sie für Amazon Location Service und übermittelt sie über die Amazon Location Tracker-API. Sie können diese Funktion über die AWS Lambda Konsole erstellen, oder Sie können die AWS Command Line Interface (AWS CLI) oder die AWS Lambda APIs verwenden. So erstellen Sie eine Lambda-Funktion, die mithilfe der Konsole Positionsaktualisierungen für Amazon Location veröffentlicht:
-
Öffnen Sie die AWS Lambda Konsole unter. https://console.aws.amazon.com/lambda/
-
Wählen Sie in der linken Navigationsleiste Funktionen aus.
-
Wählen Sie „Funktion erstellen“ und stellen Sie sicher, dass „Von Grund auf neu erstellen“ ausgewählt ist.
-
Füllen Sie die folgenden Felder aus:
-
ein Funktionsname
-
wählen Sie für die Runtime-Option Node.js 16.x.
-
-
Wählen Sie Funktion erstellen.
-
Wählen Sie die Registerkarte Code, um den Editor zu öffnen.
-
Überschreiben Sie den Platzhaltercode in index.js mit dem Folgenden:
const AWS = require('aws-sdk') const iot = new AWS.Iot(); exports.handler = function(event) { console.log("event===>>>", JSON.stringify(event)); var param = { endpointType: "iot:Data-ATS" }; iot.describeEndpoint(param, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else { var endp = data['endpointAddress']; const iotdata = new AWS.IotData({endpoint: endp}); const trackerEvent = event["detail"]["EventType"]; const src = event["source"]; const time = event["time"]; const gfId = event["detail"]["GeofenceId"]; const resources = event["resources"][0]; const splitResources = resources.split("."); const geofenceCollection = splitResources[splitResources.length - 1]; const coordinates = event["detail"]["Position"]; const deviceId = event["detail"]["DeviceId"]; console.log("deviceId===>>>", deviceId); const msg = { "trackerEventType" : trackerEvent, "source" : src, "eventTime" : time, "geofenceId" : gfId, "coordinates": coordinates, "geofenceCollection": geofenceCollection }; const params = { topic: `${deviceId}/tracker`, payload: JSON.stringify(msg), qos: 0 }; iotdata.publish(params, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else { console.log("Ladmbda triggered===>>>", trackerEvent); // successful response } }); } }); } -
Wählen Sie Deploy, um die aktualisierte Funktion zu speichern.
-
Wählen Sie die Registerkarte Konfiguration aus.
-
Klicken Sie im Bereich Trigger auf Auslöser hinzufügen.
-
Wählen Sie im Feld Quelle EventBridge (CloudWatch Ereignisse) aus.
-
Wählen Sie das Optionsfeld `Existierende Regeln`.
-
Geben Sie den Regelnamen wie folgt ein: `-GEOFENCECOLLECTION_NAME`. AmazonLocationMonitor
-
Klicken Sie auf die Schaltfläche Hinzufügen.
-
Dadurch werden auch `Ressourcenbasierte Richtlinienerklärungen` auf der Registerkarte „Berechtigungen“ angehängt
MQTT-Testclient
-
Öffnen Sie die https://console.aws.amazon.com/iot/
. -
Wählen Sie im linken Navigationsbereich MQTT-Testclient aus.
-
Sie sehen einen Abschnitt mit dem Titel MQTT-Testclient, in dem Sie Ihre MQTT-Verbindung konfigurieren können.
-
Nachdem Sie die erforderlichen Einstellungen konfiguriert haben, klicken Sie auf die Schaltfläche Connect, um mithilfe der bereitgestellten Parameter eine Verbindung zum MQTT-Broker herzustellen.
-
Notieren Sie sich den Endpoint-Wert.
Sobald die Verbindung hergestellt ist, können Sie MQTT-Themen abonnieren oder Nachrichten zu Themen veröffentlichen, indem Sie die entsprechenden Eingabefelder in der MQTT-Testclient-Oberfläche verwenden. Als Nächstes fügen Sie die MQTT-Richtlinie hinzu:
-
Erweitern Sie im Menü auf der linken Seite unter Verwalten die Option Sicherheit und klicken Sie auf Richtlinien.
-
Klicken Sie auf die Schaltfläche Richtlinie erstellen.
-
Geben Sie den Namen einer Richtlinie ein.
-
Wählen Sie im Richtliniendokument die Registerkarte JSON aus.
-
Kopieren Sie die unten gezeigte Richtlinie und fügen Sie sie ein. Achten Sie jedoch darauf, alle Elemente mit Ihrem
und zu aktualisierenREGION:ACCOUNT_ID{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive" ], "Resource": [ "arn:aws:iot:REGION:ACCOUNT_ID:client/${cognito-identity.amazonaws.com:sub}", "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}", "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/${cognito-identity.amazonaws.com:sub}/", "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}/tracker" ], "Effect": "Allow" } ] } -
Wählen Sie die Schaltfläche Erstellen, um den Vorgang abzuschließen.
Um den Beispielcode einzurichten, müssen Sie die folgenden Tools installiert haben:
-
Git
-
XCode 15.3 oder später
-
iOS Simulator 16 oder höher
Gehen Sie wie folgt vor, um den Beispiel-App-Code einzurichten:
-
Klonen Sie das Git-Repository von dieser URL: https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking- with-geofence-notifications
. -
Öffnen Sie die Projektdatei
AWSLocationSampleApp.xcodeproj. -
Warte auf den Prozess zur Paketauflösung.
-
Optional: Benennen Sie im Projektnavigationsmenü in die folgenden Werte
ConfigTemplate.xcconfigumConfig.xcconfigund geben Sie sie ein:IDENTITY_POOL_ID = `YOUR_IDENTITY_POOL_ID` MAP_NAME = `YOUR_MAP_NAME` TRACKER_NAME = `YOUR_TRACKER_NAME` WEBSOCKET_URL = `YOUR_MQTT_TEST_CLIENT_ENDPOINT` GEOFENCE_ARN = `YOUR_GEOFENCE_COLLECTION_NAME`
Nachdem Sie den Beispielcode eingerichtet haben, können Sie die App nun auf einem iOS-Simulator oder einem physischen Gerät ausführen.
-
Erstellen Sie die App und führen Sie sie aus.
-
Die App fragt Sie nach Standort- und Benachrichtigungsberechtigungen. Sie müssen sie zulassen.
-
Tippen Sie auf die Schaltfläche `Cognito-Konfiguration`.
-
Wenn Sie die Werte in der Datei `Config.xcConfig` nicht ausgefüllt haben, müssen Sie das Feld mit den Ressourcenwerten ausfüllen, die Sie zuvor im Konfigurationsbildschirm erstellt haben.
IDENTITY_POOL_ID = `YOUR_IDENTITY_POOL_ID` MAP_NAME = `YOUR_MAP_NAME` TRACKER_NAME = `YOUR_TRACKER_NAME` WEBSOCKET_URL = `YOUR_MQTT_TEST_CLIENT_ENDPOINT` GEOFENCE_ARN = `YOUR_GEOFENCE_COLLECTION_NAME` -
Speichern Sie die Konfiguration
-
Sie können jetzt die Filteroptionen für Zeit, Entfernung und Genauigkeit sehen. Verwenden Sie sie nach Ihren Bedürfnissen.
-
Gehen Sie in der App zum Tab `Tracking` und Sie werden die Karte und die Schaltfläche `Tracking starten` sehen.
-
Wenn Sie die App auf einem Simulator installiert haben, möchten Sie möglicherweise Standortänderungen simulieren. Dies kann über die Menüoption Funktionen -> Standort erfolgen. Wählen Sie zum Beispiel Funktionen -> Standort -> Freeway Drive.
-
Tippen Sie auf die Schaltfläche `Tracking starten`. Sie sollten die Tracking-Punkte auf der Karte sehen.
-
Die App verfolgt auch die Standorte im Hintergrund. Wenn Sie die App also im Hintergrund bewegen, werden Sie um Erlaubnis gebeten, die Verfolgung im Hintergrundmodus fortzusetzen.
-
Sie können das Tracking beenden, indem Sie auf die Schaltfläche `Stop Tracking` tippen.