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à.
Creare un'applicazione iOS
Segui queste procedure per creare un'applicazione iOS utilizzando Amazon Location Service.
Clona i file di progetto da GitHub
Puoi generare risorse Amazon Location Service una volta che il tuo AWS account è pronto. Queste risorse saranno essenziali per eseguire i frammenti di codice forniti.
Nota
Se non hai ancora creato un AWS account, crea un AWS
Per iniziare devi creare un ID del pool di identità di Amazon Cognito, utilizza la seguente procedura:
-
Nella AWS console, accedi al servizio Amazon Cognito, quindi seleziona Pool di identità dal menu a sinistra e seleziona Crea pool di identità.
-
Assicurati che Guest Access sia selezionato e premi Avanti per continuare.
-
Quindi crea un nuovo ruolo IAM o utilizza un ruolo IAM esistente.
-
Inserisci il nome di un pool di identità e assicurati che Identity Pool abbia accesso alle
(geo)risorse di Amazon Location per la mappa e il tracker che creerai nella procedura successiva.
Ora devi creare e definire lo stile di una mappa nella console AWS Amazon Location, utilizza la seguente procedura:
-
Vai alla sezione Mappe
nella console Amazon Location e seleziona Crea mappa per visualizzare in anteprima gli stili di mappa disponibili. -
Assegna un nome e una descrizione alla nuova risorsa cartografica. Registra il nome che assegni alla risorsa cartografica, poiché verrà utilizzato più avanti nel tutorial.
-
Quando scegli uno stile di mappa, considera il fornitore dei dati cartografici. Per maggiori dettagli, consulta la sezione 82 dei termini del AWS servizio
. -
Accetta i termini e le condizioni di Amazon Location
, quindi seleziona Crea mappa. Dopo aver creato la mappa, puoi interagire con essa ingrandendo, rimpicciolendo o spostandola in qualsiasi direzione.
Per creare un tracker utilizzando la console Amazon Location
-
Apri la console Amazon Location Service
. -
Nel riquadro di navigazione a sinistra, scegli Trackers.
-
Scegli Crea tracker.
-
Compila tutti i campi obbligatori.
-
In Filtro di posizione, scegli l'opzione più adatta al modo in cui intendi utilizzare la risorsa del tracker. Se non imposti il filtro di posizione, l'impostazione predefinita è. TimeBased Per ulteriori informazioni, consulta Trackers in questa guida e PositionFiltering nell'Amazon Location Service Trackers API Reference.
-
Scegli Crea tracker per terminare.
Quando si crea una raccolta di geofence, è possibile utilizzare la console, l'API o la CLI. Le seguenti procedure illustrano ciascuna opzione.
Crea una raccolta di geofence utilizzando la console Amazon Location:
-
Apri la console Amazon Location Service all'indirizzo https://console.aws.amazon.com/location/.
-
Nel riquadro di navigazione a sinistra, scegli Geofence Collections.
-
Scegli Crea collezione geofence.
-
Fornisci un nome e una descrizione per la raccolta.
-
In EventBridge rule with CloudWatch as a target, puoi creare una EventBridge regola opzionale per iniziare a reagire agli eventi di geofence. Ciò consente ad Amazon Location di pubblicare eventi su Amazon CloudWatch Logs.
-
Scegli Create geofence collection.
Crea una raccolta di geofence utilizzando Amazon Location: APIs
Usa l' CreateGeofenceCollection operazione di Amazon Location Geofences APIs. L'esempio seguente utilizza una richiesta API per creare una raccolta di geofence chiamata. GOECOLLECTION_NAME
POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GOECOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }
Crea una raccolta di geofence usando i comandi: AWS CLI
Utilizza il comando create-geofence-collection. L'esempio seguente utilizza an AWS CLI per creare una raccolta di geofence chiamata. GOECOLLECTION_NAME
aws location \ create-geofence-collection \ --collection-name "GOECOLLECTION_NAME" \ --description "Shopping center geofence collection" \ --tags Tag1=Value1
Per collegare un tracker a una raccolta di geofence puoi utilizzare la console, l'API o la CLI. Le seguenti procedure illustrano ciascuna opzione.
Collega una risorsa tracker a una raccolta di geofence utilizzando la console Amazon Location Service:
-
Apri la console Amazon Location.
-
Nel riquadro di navigazione a sinistra, scegli Trackers.
-
In Device Trackers, seleziona il link del nome del tracker di destinazione.
-
In Collezioni Geofence collegate, scegli Collega collezione Geofence.
-
Nella finestra Linked Geofence Collection, seleziona una collezione di geofence dal menu a discesa.
-
Scegliere Link (Collegamento).
-
Dopo aver collegato la risorsa tracker, ad essa verrà assegnato uno stato Attivo.
Collega una risorsa tracker a una raccolta di geofence utilizzando Amazon Location: APIs
Usa l'AsssociateTrackerConsumer operazione di Amazon Location Trackers APIs. L'esempio seguente utilizza una richiesta API associata ExampleTracker a una raccolta di geofence utilizzando il relativo Amazon Resource Name (ARN).
POST /tracking/v0/trackers/ExampleTracker/consumers Content-type: application/json { "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" }
Collega una risorsa tracker a una raccolta di geofence utilizzando i comandi: AWS CLI
Utilizza il comando associate-tracker-consumer . L'esempio seguente utilizza an AWS CLI per creare una raccolta di geofence chiamata. GOECOLLECTION_NAME
aws location \ associate-tracker-consumer \ --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \ --tracker-name "ExampleTracker"
Crea una funzione Lambda:
Per creare una connessione tra Amazon Location Service AWS IoT Core e Amazon, è necessaria una AWS Lambda funzione per elaborare i messaggi inoltrati dagli EventBridge CloudWatch eventi. Questa funzione estrarrà tutti i dati di posizione, li formatterà per Amazon Location Service e li invierà tramite l'API Amazon Location Tracker. Puoi creare questa funzione tramite la AWS Lambda console oppure puoi usare AWS Command Line Interface (AWS CLI) o. AWS Lambda APIs Per creare una funzione Lambda che pubblichi aggiornamenti di posizione su Amazon Location utilizzando la console:
-
Apri la AWS Lambda console all'indirizzo. https://console.aws.amazon.com/lambda/
-
Dalla barra di navigazione a sinistra, scegli Funzioni.
-
Scegli Crea funzione e assicurati che sia selezionato Author from zero.
-
Compila le seguenti caselle:
-
a) Nome della funzione
-
per l'opzione Runtime, scegliete Node.js 16.x.
-
-
Scegli Crea funzione.
-
Scegliete la scheda Codice per aprire l'editor.
-
Sovrascrivi il codice segnaposto in index.js con quanto segue:
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 } }); } }); } -
Scegliete Deploy per salvare la funzione aggiornata.
-
Scegli la scheda Configurazione.
-
Nella sezione Trigger, fai clic su Aggiungi trigger.
-
Seleziona EventBridge (CloudWatch Eventi) nel campo Origine.
-
Seleziona l'opzione radio `Regole esistenti`.
-
Inserisci il nome della regola in questo modo `-GEOFENCECOLLECTION_NAME`. AmazonLocationMonitor
-
Fate clic sul pulsante Aggiungi.
-
Verranno inoltre allegate le `dichiarazioni politiche basate sulle risorse` nella scheda delle autorizzazioni
Client di test MQTT
-
Apri la https://console.aws.amazon.com/iot/
. -
Nel riquadro di navigazione a sinistra, scegli MQTT test client.
-
Vedrai una sezione intitolata Client di test MQTT in cui puoi configurare la tua connessione MQTT.
-
Dopo aver configurato le impostazioni necessarie, fare clic sul pulsante Connect per stabilire una connessione al broker MQTT utilizzando i parametri forniti.
-
Prendi nota del valore Endpoint.
Una volta connesso, è possibile abbonarsi agli argomenti MQTT o pubblicare messaggi sugli argomenti utilizzando i rispettivi campi di input forniti nell'interfaccia del client di test MQTT. Successivamente allegherai la politica MQTT:
-
Nel menu a sinistra, sotto Gestisci, espandi l'opzione Sicurezza e fai clic su Politiche.
-
Fai clic sul pulsante Crea politica.
-
Inserire un nome per la policy.
-
In Policy Document seleziona la scheda JSON.
-
Copia e incolla la politica mostrata di seguito, ma assicurati di aggiornare tutti gli elementi con il tuo
eREGION: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" } ] } -
Seleziona il pulsante Crea per terminare.
Per configurare il codice di esempio è necessario che siano installati i seguenti strumenti:
-
Git
-
XCode 15.3 o versione successiva
-
iOS Simulator 16 o versioni successive
Usa questa procedura per configurare il codice dell'app di esempio:
-
Clona il repository git da questo URL: https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking
-. with-geofence-notifications -
Apri il file di progetto
AWSLocationSampleApp.xcodeproj. -
Attendi il processo di risoluzione del pacchetto.
-
Facoltativo: nel menu di navigazione del progetto,
ConfigTemplate.xcconfigrinominareConfig.xcconfige inserire i seguenti valori: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`
Dopo aver impostato il codice di esempio, ora puoi eseguire l'app su un simulatore iOS o su un dispositivo fisico.
-
Crea ed esegui l'app.
-
L'app ti chiederà le autorizzazioni di localizzazione e notifica. Devi consentirli.
-
Tocca il pulsante `Configurazione Cognito`.
-
Se non hai inserito i valori nel file `config.xcconfig`, devi compilare il campo con i valori delle risorse che hai creato in precedenza nella schermata di configurazione.
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` -
Salva la configurazione
-
Ora puoi vedere le opzioni di filtro per tempo, distanza e precisione. Usali secondo le tue necessità.
-
Vai alla scheda `Tracciamento` dell'app e vedrai la mappa e il pulsante `Avvia tracciamento`.
-
Se hai installato l'app su un simulatore, potresti voler simulare i cambiamenti di posizione. Questo può essere fatto nell'opzione del menu Caratteristiche -> Posizione. Ad esempio, seleziona Caratteristiche -> Posizione -> Freeway Drive.
-
Tocca il pulsante `Avvia tracciamento`. Dovresti vedere i punti di tracciamento sulla mappa.
-
L'app monitora anche le posizioni in background. Pertanto, quando sposti l'app in background, ti chiederà l'autorizzazione per continuare il tracciamento in modalità background.
-
Puoi interrompere il tracciamento toccando il pulsante `Stop Tracking`.