Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cree una aplicación Android
Siga estos procedimientos para crear una aplicación de iOS mediante Amazon Location Service.
Clone los archivos del proyecto desde GitHub
Puede generar recursos de Amazon Location Service una vez que la cuenta de AWS esté lista. Estos recursos serán esenciales para ejecutar los fragmentos de código proporcionados.
nota
Si aún no ha creado una cuenta de AWS, cree una cuenta de AWS
Para empezar, tendrá que crear un ID de grupo de identidades de Amazon Cognito mediante el siguiente procedimiento:
-
En la consola de AWS, vaya al servicio de Amazon Cognito y, a continuación, seleccione Grupos de identidades en el menú de la izquierda y seleccione Crear grupo de identidades.
-
Asegúrese de que está marcado el Acceso de invitados y pulse Siguiente para continuar.
-
A continuación, cree un nuevo rol de IAM o use uno existente.
-
Ingrese un nombre de grupo de identidades y asegúrese de que el grupo de identidades tiene acceso a los recursos de Amazon Location
(geo)para el mapa y el rastreador que va a crear en el siguiente procedimiento.
Ahora debe crear y aplicar estilo a un mapa en la consola de AWS Amazon Location con el siguiente procedimiento:
-
Vaya a la sección de mapas
de la consola de Amazon Location y seleccione Crear mapa para previsualizar estilos de mapas disponibles. -
Asigne un Nombre y una Descripción al nuevo recurso de mapa. Registre el nombre que asigne al recurso del mapa, ya que se usará más adelante en el tutorial.
-
Al elegir un estilo de mapa, tenga en cuenta el proveedor de datos del mapa. Consulte la sección 82 de los Términos de servicio de AWS
para obtener más detalles. -
Acepte los términos y condiciones de Amazon Location
y, a continuación, seleccione Crear mapa. Una vez creado el mapa, puede interactuar con él acercándolo, alejándolo o desplazándose en cualquier dirección.
Para crear un rastreador mediante la consola de Amazon Location
-
Abra la consola de Amazon Location Service
. -
En el panel de navegación izquierdo, elija Rastreadores.
-
Seleccione Crear rastreador.
-
Rellene todos los campos obligatorios:
-
En Filtrado de posición, elija la opción que mejor se adapte a la forma en que piensa utilizar el recurso de rastreo. Si no configura el Filtrado de posición, la configuración predeterminada es TimeBased. Para obtener más información, consulte Rastreadores en esta guía y PositionFiltering en la referencia de la API de Rastreadores de Amazon Location Service.
-
Seleccione Crear rastreador para terminar.
Al crear una recopilación de geocercas, puede usar la consola, la API o la CLI. Los siguientes procedimientos le guiarán por cada opción.
Crear una colección de geovallas mediante la consola de Amazon Location:
-
Abra la consola de Amazon Location Service en https://console.aws.amazon.com/location/.
-
En el panel de navegación izquierdo, elija Recopilaciones de geocercas.
-
Seleccione Crear colección de geocercas.
-
Escriba un nombre y una descripción para la colección.
-
En regla de EventBridge con CloudWatch como objetivo, puede crear una regla de EventBridge opcional para empezar a reaccionar ante los eventos de geocerca. Esto permite a Amazon Location publicar eventos en Registros de Amazon CloudWatch.
-
Seleccione Crear colección de geocercas.
Cree una recopilación de geocercas mediante las API de Amazon Location:
Utilice la operación CreateGeofenceCollection desde las API de Amazon Location Geofences. En el siguiente ejemplo, se utiliza una solicitud de API para crear una colección de geovallas llamada .GOECOLLECTION_NAME
POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GOECOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }
Cree una recopilación de geocercas mediante comandos de la AWS CLI:
Use el comando create-geofence-collection. En el siguiente ejemplo, se utiliza una AWS CLI para crear una recopilación de geocercas llamada .GOECOLLECTION_NAME
aws location \ create-geofence-collection \ --collection-name "GOECOLLECTION_NAME" \ --description "Shopping center geofence collection" \ --tags Tag1=Value1
Para vincular un rastreador a una colección de geovallas, puede usar la consola, la API o la CLI. Los siguientes procedimientos le guiarán por cada opción.
Vincular un recurso de rastreo a una colección de geovallas mediante la consola de Amazon Location Service:
-
Abra la consola de Amazon Location.
-
En el panel de navegación izquierdo, elija Rastreadores.
-
En Rastreadores de dispositivos, seleccione el enlace con el nombre del rastreador objetivo.
-
En Colecciones de geocercas vinculadas, elija Vincular colección de geocercas.
-
En la ventana Colección de geocercas vinculadas, seleccione una colección de geocercas en el menú desplegable.
-
Elija Vincular.
-
Tras vincular el recurso de rastreador, se le asignará el estado Activo.
Vincular un recurso de rastreador a una colección de geovallas mediante las API de Amazon Location:
Use la operación AsssociateTrackerConsumer de las API de Rastreadores de ubicaciones de Amazon. En el siguiente ejemplo, se utiliza una solicitud de API que asocia ExampleTracker a una colección de geocercas mediante su Nombre de recurso de Amazon (ARN).
POST /tracking/v0/trackers/ExampleTracker/consumers Content-type: application/json { "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" }
Enlace un recurso de rastreo a una recopilación de geocercas mediante comandos de la AWS CLI:
Utilice el comando associate-tracker-consumer . En el siguiente ejemplo, se utiliza una AWS CLI para crear una recopilación de geocercas llamada .GOECOLLECTION_NAME
aws location \ associate-tracker-consumer \ --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \ --tracker-name "ExampleTracker"
Cree una función de Lambda:
Para crear una conexión entre AWS IoT Core y Amazon Location Service, necesita una función de AWS Lambda que procese los mensajes reenviados por eventos de EventBridge CloudWatch. Esta función extraerá todos los datos posicionales, los formateará para Amazon Location Service y los enviará a través de la API de Amazon Location Tracker. Puede crear esta función a través de la consola de AWS Lambda o puede usar la AWS Command Line Interface (AWS CLI) o las API de AWS Lambda. Para crear una función de Lambda que publique actualizaciones de posición en Amazon Location mediante la consola:
-
Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.
-
En el panel de navegación izquierdo, elija Funciones.
-
Elija Crear función y asegúrese de que esté seleccionada la opción Autor desde cero.
-
Complete las casillas siguientes:
-
un nombre de función
-
para la opción de Tiempo de ejecución, elija Node.js 16.x.
-
-
Elija Create function (Crear función).
-
Elija la pestaña Código para abrir el editor.
-
Sobrescriba el código del marcador de posición en index.js con lo siguiente:
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 } }); } }); } -
Seleccione Implementar para almacenar la función actualizada.
-
Elija la pestaña Configuración.
-
En la sección Desencadenadores, haga clic en Agregar desencadenador.
-
Seleccione EventBridge (CloudWatch Events) en el campo Origen.
-
Seleccione la opción de radio “Reglas existentes”.
-
Ingrese el nombre de la regla de este modo “AmazonLocationMonitor-GEOFENCECOLLECTION_NAME”.
-
Haga clic en el botón Agregar.
-
Esto también adjuntará las “Instrucciones de políticas basadas en recursos” en la pestaña de permisos
Cliente de prueba de MQTT
-
Abra https://console.aws.amazon.com/iot/
. -
En el panel de navegación izquierdo, elija el cliente de pruebas de MQTT.
-
Verá una sección titulada Cliente de prueba MQTT en la que puede configurar su conexión MQTT.
-
Después de configurar los ajustes necesarios, haga clic en el botón Conectar para establecer una conexión con el intermediario MQTT utilizando los parámetros proporcionados.
-
Anote el valor del punto de conexión.
Una vez conectado, puede suscribirse a los temas de MQTT o publicar mensajes sobre los temas con los campos de entrada correspondientes que se proporcionan en la interfaz del cliente de pruebas de MQTT. A continuación, adjuntará la política de MQTT:
-
En el menú de la izquierda, en Administrar, expanda la opción Seguridad y haga clic en Políticas.
-
Haga clic en el botón Crear política.
-
Escriba un nombre para la política.
-
En el documento de política, seleccione la pestaña JSON.
-
Copie y pegue la política que se muestra a continuación, pero asegúrese de actualizar todos los elementos con su
yREGION: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
Registre el nombre de la política y el nombre del tema para usarlos en el procedimiento siguiente.
-
Seleccione el botón Crear para terminar.
Tras completar el procedimiento anterior, actualizará los permisos del rol de invitado como sigue:
-
Vaya a Amazon Cognito y abra su grupo de identidades. A continuación, vaya al acceso de usuario y seleccione el rol de invitado.
-
Haga clic en las políticas de permisos para habilitar la edición.
{ '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 los cambios de política anteriores, todos los recursos de AWS necesarios ahora están configurados correctamente para la aplicación.
-
Abra Android Studio y seleccione Nuevo y, a continuación, Proyectar desde el control de versiones.
-
Vaya al menú Archivo en la esquina superior izquierda de Android Studio.
-
Seleccione “Nuevo” en el menú desplegable.
-
Elija “Proyectar desde el control de versiones”.
-
Ingrese la URL del repositorio En el cuadro de diálogo que aparece, busque el campo marcado como “URL”.
-
Copie y pegue la siguiente URL de la aplicación de ejemplo en este campo: https://github.com/aws-geospatial/amazon-location-samples-android.git
-
Decida el directorio en el que desee clonar el repositorio. Utilice el directorio predeterminado u opte por una ubicación personalizada.
-
Tras configurar la URL del repositorio y las preferencias del directorio, pulse el botón “Clonar”. Android Studio procederá a clonar el repositorio en la ubicación especificada.
-
Ahora ha clonado la aplicación en la máquina y puede empezar a usarla.
Para usar el ejemplo, siga estos procedimientos:
-
Cree un
custom.properties:Para configurar el archivo
custom.properties, siga estos pasos:-
Abra el editor de texto o IDE que desee.
-
Cree un archivo nuevo.
-
Guarde el archivo con el nombre
custom.properties. -
Actualice
custom.propertiescon el siguiente código de ejemplo y reemplaceMQTT_END_POINT,POLICY_NAME,GEOFENCE_COLLECTION_NAMEyTOPIC_TRACKERpor los valores reales:MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com POLICY_NAME=xxxxxxxxx GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx TOPIC_TRACKER=xxxxxxxxxx -
Limpie y vuelva a crear el proyecto. Después de esto, puede ejecutar el proyecto.
-
-
Iniciar sesión:
Para iniciar sesión en la aplicación, siga los pasos que se indican a continuación:
-
Pulse el botón de inicio de sesión.
-
Proporcione un ID del grupo de identidades, un Nombre del rastreador y un Nombre del mapa.
-
Vuelva a pulsar el botón Inicio de sesión para terminar.
-
-
Administrar filtros:
Abra la pantalla de configuración y realice lo siguiente:
-
Active o desactive los filtros mediante la interfaz de usuario de conmutador.
-
Actualice los filtros de tiempo y distancia cuando sea necesario.
-
-
Operaciones de rastreo:
Abra la pantalla de rastreo y realice lo siguiente:
-
Puede iniciar y detener el rastreo en primer plano, en segundo plano o en modo de ahorro de batería pulsando los botones correspondientes.
-