Aplicación de seguimiento de muestras y geofencing para iOS - Amazon Location Service

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.

Aplicación de seguimiento de muestras y geofencing para iOS

Este tema cubre el tutorial de iOS diseñado para demostrar las características clave del uso de las geovallas y rastreadores de Amazon Location en una aplicación móvil. Las aplicaciones muestran cómo interactúan un rastreador y un geonfence mediante una combinación de funciones de Lambda y AWS IoT Amazon Location.

Crea recursos de Amazon Location para tu aplicación

Para empezar, tendrás que crear los recursos de Amazon Location necesarios. Estos recursos serán esenciales para el funcionamiento de la aplicación y para ejecutar los fragmentos de código proporcionados.

nota

Si no has creado una AWS cuenta, sigue las instrucciones de la guía del usuario de administración de AWS cuentas.

Para empezar, tendrá que crear un ID de grupo de identidades de Amazon Cognito, mediante el siguiente procedimiento:

  1. Abra la consola de Amazon Cognito y seleccione Grupos de identidades en el menú de la izquierda y, a continuación, seleccione Crear grupo de identidades.

  2. Asegúrese de que Guest Access esté marcada y pulse Siguiente para continuar.

  3. A continuación, cree una nueva función de IAM o utilice una función de IAM existente.

  4. Introduzca un nombre de grupo de identidades y asegúrese de que Identity Pool tiene acceso a (geo) los recursos de Amazon Location para el mapa y el rastreador que va a crear en el siguiente procedimiento.

A continuación, debe crear y aplicar estilo a un mapa en la consola de AWS Amazon Location, siguiendo el siguiente procedimiento:

  1. Ve a la sección Mapas de la consola Amazon Location y selecciona Create Map.

  2. Asigna un nombre y una descripción al nuevo mapa. Registre el nombre que le asigne, tal como se utilizará más adelante en el tutorial.

  3. Al elegir un estilo de mapa, tenga en cuenta el proveedor de datos del mapa. Consulte la sección 82 de las condiciones del AWS servicio para obtener más información.

  4. Acepta los términos y condiciones de Amazon Location y, a continuación, selecciona Crear mapa para finalizar el proceso de creación del mapa.

A continuación, debe crear un rastreador en la consola de Amazon Location, mediante el siguiente procedimiento:

  1. Abre la sección Mapas en la consola de Amazon Location.

  2. Seleccione Crear rastreador.

  3. Rellena los campos obligatorios. Anota el nombre del rastreador, ya que aparecerá como referencia a él en este tutorial.

  4. En el campo de filtrado de posición, elige la opción que mejor se adapte a la forma en que piensas utilizar el recurso de tu rastreador. Si no configuras el filtrado de posición, el ajuste predeterminado esTimeBased. Para obtener más información, consulta Empezar a rastrear y PositionFilteringen la referencia de la API de ubicación de Amazon.

  5. Selecciona Crear rastreador para terminar de crear el rastreador.

Crea una colección de Geofence

Ahora crearás una colección de geofence. Puede usar la consola, la API o la CLI. Los siguientes procedimientos le guiarán por cada opción.

  • Crea una colección de geovallas con la consola de Amazon Location:

    1. Abre la sección Colecciones de Geofence de la consola de Amazon Location.

    2. Seleccione Crear colección de geovallas.

    3. Escriba un nombre y una descripción para la colección.

    4. Según la EventBridge regla con Amazon CloudWatch como objetivo, puede crear una EventBridge regla opcional para empezar a reaccionar ante los eventos de geofence. Esto permite a Amazon Location publicar eventos en Amazon CloudWatch Logs.

    5. Pulse el botón Crear colección geofence para terminar de crear la colección.

  • Crea una colección de geovallas mediante la API de Amazon Location:

    Usa la CreateGeofenceCollectionoperación desde las API de Amazon Location Geofences. En el siguiente ejemplo, se utiliza una solicitud de API para crear una colección de geocercas llamada. GEOCOLLECTION_NAME

    POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GEOCOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }
  • Cree una colección de geocercas mediante los comandos de la AWS CLI:

    Utilice el comando create-geofence-collection. El siguiente ejemplo utiliza una AWS CLI para crear una colección de geocercas llamada. GEOCOLLECTION_NAME Para obtener más información sobre el uso de la AWS CLI, consulte la documentación de la interfaz de línea de AWS comandos.

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

Vincule un recurso de rastreo a una colección de geovallas mediante la consola de Amazon Location Service:

  1. Abre la consola de Amazon Location.

  2. En el panel de navegación izquierdo, elija Rastreadores.

  3. En Device Trackers, selecciona el enlace con el nombre del rastreador objetivo.

  4. En Colecciones de geovallas vinculadas, elija Vincular colección de geovallas.

  5. En la ventana Colección de geovallas vinculadas, seleccione una colección de geovallas en el menú desplegable.

  6. Elija Vincular.

  7. Tras vincular el recurso de rastreador, se le asignará el estado Activo.

Vincula un recurso de rastreo a una colección de geovallas mediante las API de ubicación de Amazon:

Use la operación AsssociateTrackerConsumer de las API de Amazon Location Trackers. En el siguiente ejemplo, se utiliza una solicitud de API que se ExampleTracker asocia a una colección de geovallas 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/GEOCOLLECTION_NAME" }

Vincule un recurso de seguimiento a una colección de geovallas mediante los comandos de la AWS CLI:

Utilice el comando associate-tracker-consumer . En el siguiente ejemplo, se utiliza una CLI de AWS para crear una colección de geocercas llamada. GEOCOLLECTION_NAME

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

Uso de AWS Lambda con MQTT

Para crear una conexión entre AWS IoT una ubicación de Amazon, necesitas una función Lambda para procesar los mensajes reenviados por EventBridge CloudWatch eventos. Esta función extraerá todos los datos posicionales, los formateará para Amazon Location y los enviará a través de la API Amazon Location Tracker.

El siguiente procedimiento muestra cómo crear esta función a través de la consola Lambda:

  1. Abra la consola de .

  2. En el panel de navegación izquierdo, elija Funciones.

  3. A continuación, elija Crear función y asegúrese de que esté seleccionada la opción Autor desde cero.

  4. proporcione un nombre de función y, para la opción Runtime, elija Node.js 16.x.

  5. Elija Crear función.

  6. Abra la pestaña Código para acceder al editor.

  7. Sobrescribe el código marcador de posición del index.js archivo 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           }       });     }   }); }
  8. Pulse el botón Implementar para guardar la función actualizada.

  9. A continuación, abra la pestaña Configuración.

  10. En la sección Activadores, pulse el botón Añadir disparador.

  11. Seleccione EventBridge (CloudWatch Eventos) en el campo Fuente.

  12. Seleccione la opción Reglas existentes.

  13. Introduzca el nombre de la regla, por ejemploAmazonLocationMonitor-GEOFENCECOLLECTION_NAME.

  14. Pulse el botón Añadir.

  15. Esto también adjuntará las declaraciones de política basadas en los recursos en la pestaña de permisos

Ahora va a configurar el cliente de pruebas de AWS IoT MQTT; utilice el siguiente procedimiento:

  1. Abra el https://console.aws.amazon.com/iot/.

  2. En el panel de navegación izquierdo, seleccione el cliente de prueba MQTT.

  3. Verá una sección titulada Cliente de prueba MQTT en la que puede configurar su conexión MQTT.

  4. Después de configurar los ajustes necesarios, haga clic en el botón Connect para establecer una conexión con el corredor MQTT utilizando los parámetros proporcionados.

  5. Registre el punto final, tal como se utiliza más adelante en el tutorial.

    Una vez conectado al cliente de prueba, puede suscribirse a los temas de MQTT o publicar mensajes sobre los temas utilizando los campos de entrada correspondientes que se proporcionan en la interfaz del cliente de prueba de MQTT. A continuación, creará una AWS IoT política.

  6. En el menú de la izquierda, en Administrar, expanda la opción Seguridad y haga clic en Políticas.

  7. Haga clic en el botón Crear política.

  8. Escriba un nombre para la política.

  9. En el documento de política, seleccione la pestaña JSON.

  10. Copia y pega la política que se muestra a continuación, pero asegúrate de actualizar todos los elementos con tu REGION manoACCOUNT_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. Selecciona el botón Crear para terminar.

Configurar un ejemplo de código de aplicación

Para configurar el código de ejemplo, debes tener instaladas las siguientes herramientas:

  • Git

  • XCode 15.3 o posterior

  • Simulador de iOS 16 o posterior

Utilice este procedimiento para configurar el código de la aplicación de ejemplo:

  1. Clona el repositorio de git desde esta URL: https://github.com/aws-geospatial/ amazon-location-samples-ios /tree/main/ tracking-with-geofence-notifications.

  2. Abra el archivo de proyecto AWSLocationSampleApp.xcodeproj.

  3. Espera a que finalice el proceso de resolución del paquete.

  4. En el menú de navegación del proyecto, cambie el nombre ConfigTemplate.xcconfig a los siguientes valores Config.xcconfig y rellénelos:

    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`

Uso de la aplicación de ejemplo

Tras configurar el código de muestra, ahora puedes ejecutar la aplicación en un simulador de iOS o en un dispositivo físico.

  1. Crea y ejecuta la aplicación.

  2. La aplicación te pedirá permisos de ubicación y notificación. Tienes que permitirlos.

  3. Pulse el botón de configuración de Cognito.

  4. Guarde la configuración.

  5. Ahora puede ver las opciones de filtro para ver el tiempo, la distancia y la precisión. Úselos según sus necesidades.

  6. Vaya a la pestaña de seguimiento de la aplicación y verá el mapa y el botón Iniciar seguimiento.

  7. Si ha instalado la aplicación en un simulador, es posible que desee simular los cambios de ubicación. Esto se puede hacer en Características, en la opción del menú Ubicación. Por ejemplo, selecciona Características, Ubicación y, por último, Freeway Drive.

  8. Pulsa el botón Iniciar seguimiento. Deberías ver los puntos de rastreo en el mapa.

  9. La aplicación también rastrea las ubicaciones en segundo plano. Por lo tanto, cuando muevas la aplicación en segundo plano, te pedirá permiso para continuar rastreando en segundo plano.

  10. Puede detener el seguimiento pulsando el botón Detener seguimiento.