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à.
Creazione di un'applicazione Android
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 l'esecuzione dei 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
-
Fai 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.
-
Annota il valore dell'endpoint.
Una volta connesso, è possibile abbonarsi agli argomenti MQTT o pubblicare messaggi sugli argomenti utilizzando i rispettivi campi di input forniti nell'interfaccia 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" } ] }Nota
Registra il nome della politica e il nome dell'argomento da utilizzare nella procedura successiva.
-
Seleziona il pulsante Crea per terminare.
Dopo aver completato la procedura precedente, ora aggiornerai le autorizzazioni per il ruolo di ospite come segue:
-
Accedi ad Amazon Cognito e apri il tuo pool di identità. Quindi, procedi all'accesso utente e seleziona il ruolo di ospite.
-
Fai clic sulle politiche di autorizzazione per abilitare la modifica.
{ 'Version': '2012-10-17', 'Statement': [ { 'Action': [ 'geo:GetMap*', 'geo:BatchUpdateDevicePosition', 'geo:BatchEvaluateGeofences', 'iot:Subscribe', 'iot:Publish', 'iot:Connect', 'iot:Receive', 'iot:AttachPrincipalPolicy', 'iot:AttachPolicy', 'iot:DetachPrincipalPolicy', 'iot:DetachPolicy' ], 'Resource': [ 'arn:aws:geo:us-east-1:{
USER_ID
}:map/{MAP_NAME
}', 'arn:aws:geo:us-east-1:{USER_ID
}:tracker/{TRACKER_NAME
}', 'arn:aws:geo:us-east-1:{USER_ID
}:geofence-collection/{GEOFENCE_COLLECTION_NAME
}', 'arn:aws:iot:us-east-1:{USER_ID
}:client/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID
}:topic/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID
}:topicfilter/${cognito-identity.amazonaws.com:sub}/*', 'arn:aws:iot:us-east-1:{USER_ID
}:topic/${cognito-identity.amazonaws.com:sub}/tracker' ], 'Effect': 'Allow' }, { 'Condition': { 'StringEquals': { 'cognito-identity.amazonaws.com:sub': '${cognito-identity.amazonaws.com:sub}' } }, 'Action': [ 'iot:AttachPolicy', 'iot:DetachPolicy', 'iot:AttachPrincipalPolicy', 'iot:DetachPrincipalPolicy' ], 'Resource': [ '*' ], 'Effect': 'Allow' } ] } -
Con le modifiche alle policy di cui sopra, tutte le AWS risorse necessarie sono ora configurate in modo appropriato per l'applicazione.
-
Apri Android Studio e seleziona Nuovo e poi Project da Version Control.
-
Vai al menu File nell'angolo in alto a sinistra di Android Studio.
-
Seleziona «Nuovo» dal menu a discesa.
-
Scegli «Project from Version Control».
-
Inserisci l'URL del repository Nella finestra di dialogo che appare, trova il campo contrassegnato con «URL».
-
Decidi la directory in cui vuoi clonare il repository. Usa la directory predefinita o opta per una posizione personalizzata.
-
Dopo aver impostato l'URL del repository e le preferenze della directory, premi il pulsante «Clona». Android Studio procederà a clonare il repository nella posizione specificata.
-
Ora hai clonato l'applicazione sul tuo computer e puoi iniziare a usarla.
Per utilizzare l'esempio segui queste procedure:
-
Crea un
custom.properties
:Per configurare il
custom.properties
file, segui questi passaggi:-
Apri il tuo editor di testo o IDE preferito.
-
Crea un nuovo file.
-
Salva il file con il nome
custom.properties
. -
Aggiorna il file
custom.properties
con il seguente esempio di codice e sostituisci ilMQTT_END_POINT
,POLICY_NAME
GEOFENCE_COLLECTION_NAME
, eTOPIC_TRACKER
con i valori effettivi:MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com POLICY_NAME=xxxxxxxxx GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx TOPIC_TRACKER=xxxxxxxxxx
-
Pulisci e ricostruisci il progetto. Dopodiché, puoi eseguire il progetto.
-
-
Accedi:
Per accedere all'applicazione, procedi nel seguente modo:
-
Premi il pulsante Accedi.
-
Fornisci un ID del pool di identità, un nome del tracker e un nome della mappa.
-
Premi nuovamente Accedi per terminare.
-
-
Gestisci filtri:
Apri la schermata di configurazione ed esegui le seguenti operazioni:
-
Attiva i filtri on/off utilizzando l'interfaccia utente dello switch.
-
Aggiorna i filtri Tempo e Distanza quando necessario.
-
-
Operazioni di tracciamento:
Apri la schermata di tracciamento ed esegui quanto segue:
-
È possibile avviare e interrompere il tracciamento in primo piano, sullo sfondo o in modalità risparmio energetico premendo i rispettivi pulsanti.
-