Esempio di applicazione di tracciamento e geofencing per iOS - 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à.

Esempio di applicazione di tracciamento e geofencing per iOS

Questo argomento tratta il tutorial iOS progettato per dimostrare le caratteristiche principali dell'uso dei geofence e dei tracker di Amazon Location in un'applicazione mobile. Le applicazioni dimostrano come interagiscono un tracker e un geonfence utilizzando una combinazione di funzionalità Lambda AWS IoT e Amazon Location.

Crea risorse Amazon Location per la tua app

Per iniziare, dovrai creare le risorse Amazon Location richieste. Queste risorse saranno essenziali per la funzionalità dell'applicazione e l'esecuzione dei frammenti di codice forniti.

Nota

Se non hai ancora creato un AWS account, segui le istruzioni nella guida per l'utente di gestione AWS dell'account.

Per iniziare devi creare un ID del pool di identità di Amazon Cognito, utilizza la seguente procedura:

  1. Apri la console Amazon Cognito e seleziona Pool di identità dal menu a sinistra, quindi seleziona Crea pool di identità.

  2. Assicurati che Guest Access sia selezionato e premi Avanti per continuare.

  3. Quindi crea un nuovo ruolo IAM o utilizza un ruolo IAM esistente.

  4. 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.

Successivamente devi creare e definire lo stile di una mappa nella console AWS Amazon Location, utilizza la seguente procedura:

  1. Vai alla sezione Mappe della console Amazon Location e seleziona Crea mappa.

  2. Assegna un nome e una descrizione alla nuova mappa. Registra il nome che assegni, così come verrà usato più avanti nel tutorial.

  3. Quando scegli uno stile di mappa, considera il fornitore dei dati cartografici. Per maggiori dettagli, consulta la sezione 82 dei termini del AWS servizio.

  4. Accetta i Termini e condizioni di Amazon Location, quindi seleziona Crea mappa per completare il processo di creazione della mappa.

Successivamente devi creare un tracker nella console Amazon Location, utilizza la seguente procedura:

  1. Apri la sezione Mappe nella console Amazon Location.

  2. Scegli Crea tracker.

  3. Compila i campi obbligatori. Prendi nota del nome del tracker poiché verrà utilizzato come riferimento nel corso di questo tutorial.

  4. Nel campo Filtro della posizione, scegli l'opzione più adatta a come intendi utilizzare la risorsa del tracker. Se non imposti il filtro di posizione, l'impostazione predefinita è. TimeBased Per ulteriori informazioni, consulta Start tracking e PositionFilteringnell'Amazon Location API Reference.

  5. Scegli Crea tracker per completare la creazione del tracker.

Crea una collezione Geofence

Ora creerai una collezione di geofence. Puoi utilizzare la console, l'API o la CLI. Le seguenti procedure illustrano ciascuna opzione.

  • Crea una raccolta di geofence utilizzando la console Amazon Location:

    1. Apri la sezione Geofence Collections della console Amazon Location.

    2. Scegli Crea una collezione di geofence.

    3. Fornisci un nome e una descrizione per la raccolta.

    4. In base alla EventBridge regola con Amazon CloudWatch come obiettivo, 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.

    5. Premi la raccolta Create geofence per completare la creazione della raccolta.

  • Crea una raccolta di geofence utilizzando l'API Amazon Location:

    Usa l'CreateGeofenceCollectionoperazione dalle API Amazon Location Geofences. L'esempio seguente utilizza una richiesta API per creare una raccolta di geofence chiamata. GEOCOLLECTION_NAME

    POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GEOCOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }
  • Crea una raccolta di geofence utilizzando i comandi CLI: AWS

    Utilizza il comando create-geofence-collection. L'esempio seguente utilizza una AWS CLI per creare una raccolta di geofence chiamata. GEOCOLLECTION_NAME Per ulteriori informazioni sull'uso della AWS CLI, consulta la documentazione dell'interfaccia a riga di AWS comando.

    aws location \ create-geofence-collection \ --collection-name "ExampleGeofenceCollection" \ --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:

  1. Apri la console Amazon Location.

  2. Nel riquadro di navigazione a sinistra, scegli Trackers.

  3. In Device Trackers, seleziona il link del nome del tracker di destinazione.

  4. In Collezioni Geofence collegate, scegli Collega collezione Geofence.

  5. Nella finestra Linked Geofence Collection, seleziona una collezione di geofence dal menu a discesa.

  6. Scegliere Link (Collegamento).

  7. Dopo aver collegato la risorsa tracker, ad essa verrà assegnato uno stato Attivo.

Collega una risorsa tracker a una raccolta di geofence utilizzando le API di localizzazione di Amazon:

Usa l'AsssociateTrackerConsumeroperazione dalle API di Amazon Location Trackers. 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/GEOCOLLECTION_NAME" }

Collega una risorsa tracker a una raccolta di geofence utilizzando i comandi CLI di AWS:

Utilizza il comando associate-tracker-consumer . L'esempio seguente utilizza una CLI AWS per creare una raccolta di geofence chiamata. GEOCOLLECTION_NAME

aws location \     associate-tracker-consumer \         --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GEOCOLLECTION_NAME" \     --tracker-name "ExampleTracker"

Usare AWS Lambda con MQTT

Per creare una connessione tra Amazon Location AWS IoT e Amazon, è necessaria una funzione Lambda per elaborare i messaggi inoltrati dagli eventi. EventBridge CloudWatch Questa funzione estrarrà tutti i dati di posizione, li formatterà per Amazon Location e li invierà tramite l'API Amazon Location Tracker.

La procedura seguente mostra come creare questa funzione tramite la console Lambda:

  1. Apri la console.

  2. Dalla barra di navigazione a sinistra, scegli Funzioni.

  3. Quindi scegli Crea funzione e assicurati che sia selezionata l'opzione Autore da zero.

  4. fornite un nome per la funzione e, per l'opzione Runtime, scegliete Node.js 16.x.

  5. Scegli Crea funzione.

  6. Aprite la scheda Codice per accedere all'editor.

  7. Sovrascrivi il codice segnaposto nel index.js file 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           }       });     }   }); }
  8. Premete Deploy per salvare la funzione aggiornata.

  9. Quindi apri la scheda Configurazione.

  10. Nella sezione Trigger, premi il pulsante Aggiungi trigger.

  11. Seleziona EventBridge (CloudWatch Eventi) nel campo Origine.

  12. Seleziona l'opzione Regole esistenti.

  13. Inserisci il nome della regola, ad esempioAmazonLocationMonitor-GEOFENCECOLLECTION_NAME.

  14. Premi il pulsante Aggiungi.

  15. Verranno inoltre allegate dichiarazioni politiche basate sulle risorse nella scheda delle autorizzazioni

Ora configurerai il AWS IoT MQTT Test Client, usa la seguente procedura:

  1. Apri https://console.aws.amazon.com/iot/.

  2. Nel riquadro di navigazione a sinistra, selezionate il client di test MQTT.

  3. Verrà visualizzata una sezione intitolata Client di test MQTT in cui è possibile configurare la connessione MQTT.

  4. Dopo aver configurato le impostazioni necessarie, fare clic sul pulsante Connect per stabilire una connessione al broker MQTT utilizzando i parametri forniti.

  5. Registra l'endpoint, così come verrà utilizzato più avanti nel tutorial.

    Una volta connessi al client di test, è 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 creerai una AWS IoT politica.

  6. Nel menu a sinistra, in Gestione, espandi l'opzione Sicurezza e fai clic su Politiche.

  7. Fai clic sul pulsante Crea politica.

  8. Inserire un nome per la policy.

  9. In Policy Document seleziona la scheda JSON.

  10. Copia e incolla la politica mostrata di seguito, ma assicurati di aggiornare tutti gli elementi con il tuo REGION eACCOUNT_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" } ] }
  11. Seleziona il pulsante Crea per terminare.

Configurazione di un codice di esempio per l'app

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:

  1. Clona il repository git da questo URL: https://github.com/aws-geospatial/ amazon-location-samples-ios /tree/main/. tracking-with-geofence-notifications

  2. Apri il file di progetto AWSLocationSampleApp.xcodeproj.

  3. Attendi il completamento del processo di risoluzione dei pacchetti.

  4. Nel menu di navigazione del progetto, ConfigTemplate.xcconfig rinominate Config.xcconfig e inserite 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`

Utilizzando l'app di esempio

Dopo aver impostato il codice di esempio, ora puoi eseguire l'app su un simulatore iOS o su un dispositivo fisico.

  1. Crea ed esegui l'app.

  2. L'app ti chiederà le autorizzazioni di localizzazione e notifica. Devi consentirli.

  3. Premi il pulsante Configurazione Cognito.

  4. Salvare la configurazione.

  5. Ora puoi visualizzare le opzioni di filtro per tempo, distanza e precisione. Usali secondo le tue necessità.

  6. Vai alla scheda Tracciamento dell'app e vedrai la mappa e il pulsante Avvia tracciamento.

  7. Se hai installato l'app su un simulatore, potresti voler simulare i cambiamenti di posizione. Questo può essere fatto in Funzionalità nell'opzione del menu Posizione. Ad esempio, seleziona Caratteristiche, poi Posizione, quindi Freeway Drive.

  8. Premi il pulsante Avvia tracciamento. Dovresti vedere i punti di tracciamento sulla mappa.

  9. 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.

  10. Puoi interrompere il tracciamento toccando il pulsante Stop Tracking.