Création d'une application iOS - Amazon Location Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création d'une application iOS

Suivez ces procédures pour créer une application iOS à l'aide d'Amazon Location Service.

Clonez les fichiers de projet à partir de GitHub.

Vous pouvez générer des ressources Amazon Location Service une fois que votre AWS compte est prêt. Ces ressources seront essentielles pour exécuter les extraits de code fournis.

Note

Si vous n'avez pas encore créé de AWS compte, veuillez en créer un AWS.

Pour commencer, vous devez créer un identifiant de pool d'identités Amazon Cognito, suivez la procédure suivante :

  1. Dans la AWS console, accédez au service Amazon Cognito, puis sélectionnez Groupes d'identités dans le menu de gauche, puis sélectionnez Créer un pool d'identités.

  2. Assurez-vous que l'option Accès invité est cochée, puis appuyez sur Suivant pour continuer.

  3. Créez ensuite un nouveau rôle IAM ou utilisez un rôle IAM existant.

  4. Entrez le nom du pool d'identités et assurez-vous que le pool d'identités a accès aux (geo) ressources Amazon Location pour la carte et le tracker que vous allez créer lors de la procédure suivante.

Vous devez maintenant créer et mettre en forme une carte dans la console AWS Amazon Location, en suivant la procédure suivante :

  1. Accédez à la section Cartes de la console Amazon Location et sélectionnez Create Map pour prévisualiser les styles de carte disponibles.

  2. Donnez un nom et une description à la nouvelle ressource cartographique. Enregistrez le nom que vous attribuez à la ressource cartographique, tel qu'il sera utilisé ultérieurement dans le didacticiel.

  3. Lorsque vous choisissez un style de carte, pensez au fournisseur de données cartographiques. Reportez-vous à la section 82 des conditions de AWS service pour plus de détails.

  4. Acceptez les conditions générales d'Amazon Location, puis sélectionnez Create Map. Une fois la carte créée, vous pouvez interagir avec elle en zoomant, en arrière ou en vous déplaçant dans n'importe quelle direction.

Pour créer un outil de suivi à l'aide de la console Amazon Location

  1. Ouvrez la console Amazon Location Service.

  2. Dans le volet de navigation de gauche, choisissez Trackers.

  3. Choisissez Créer un tracker.

  4. Remplissez tous les champs obligatoires.

  5. Sous Filtrage des positions, choisissez l'option qui correspond le mieux à la manière dont vous avez l'intention d'utiliser votre ressource de suivi. Si vous ne définissez pas le filtrage de position, le paramètre par défaut est TimeBased. Pour plus d'informations, consultez la section Trackers dans ce guide et PositionFiltering dans le manuel Amazon Location Service Trackers API Reference.

  6. Choisissez Créer un tracker pour terminer.

Lorsque vous créez une collection de géofences, vous pouvez utiliser la console, l'API ou la CLI. Les procédures suivantes vous guident à travers chaque option.

Créez une collection de géofences à l'aide de la console Amazon Location :

  1. Ouvrez la console Amazon Location Service à l'adresse https://console.aws.amazon.com/location/.

  2. Dans le volet de navigation de gauche, choisissez Geofence Collections.

  3. Choisissez Créer une collection de géofences.

  4. Saisissez un nom et une description pour la collection.

  5. Dans le cadre d'une EventBridge règle avec CloudWatch comme cible, vous pouvez créer une EventBridge règle facultative pour commencer à réagir aux événements de géofence. Cela permet à Amazon Location de publier des événements sur Amazon CloudWatch Logs.

  6. Choisissez Créer une collection de géofences.

Créez une collection de géofences à l'aide de l'emplacement Amazon : APIs

Utilisez l' CreateGeofenceCollection opération depuis Amazon Location Geofences APIs. L'exemple suivant utilise une demande d'API pour créer une collection de géofences appelée. GOECOLLECTION_NAME

POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GOECOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }

Créez une collection de géofences à l'aide AWS CLI des commandes suivantes :

Utilisez la commande create-geofence-collection. L'exemple suivant utilise an AWS CLI pour créer une collection de géofences appelée. GOECOLLECTION_NAME

aws location \ create-geofence-collection \ --collection-name "GOECOLLECTION_NAME" \ --description "Shopping center geofence collection" \ --tags Tag1=Value1  

Pour lier un tracker à une collection de géofences, vous pouvez utiliser la console, l'API ou la CLI. Les procédures suivantes vous guident à travers chaque option.

Associez une ressource de suivi à une collection de géofences à l'aide de la console Amazon Location Service :

  1. Ouvrez la console Amazon Location.

  2. Dans le volet de navigation de gauche, choisissez Trackers.

  3. Sous Device Trackers, sélectionnez le lien du nom du tracker cible.

  4. Sous Collections Geofence liées, choisissez Link Geofence Collection.

  5. Dans la fenêtre Linked Geofence Collection, sélectionnez une collection de géofences dans le menu déroulant.

  6. Choisissez Lier.

  7. Une fois que vous aurez lié la ressource de suivi, le statut Actif lui sera attribué.

Associez une ressource de suivi à une collection de géofences à l'aide d'Amazon Location : APIs

Utilisez l'AsssociateTrackerConsumer opération des Amazon Location Trackers APIs. L'exemple suivant utilise une demande d'API associée à une collection de géofences à l'aide de son Amazon Resource Name (ARN). ExampleTracker

POST /tracking/v0/trackers/ExampleTracker/consumers Content-type: application/json {    "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" }

Associez une ressource de suivi à une collection de géofences à l'aide AWS CLI des commandes suivantes :

Utilisez la commande associate-tracker-consumer . L'exemple suivant utilise an AWS CLI pour créer une collection de géofences appelée. GOECOLLECTION_NAME

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

Création d’une fonction Lambda.

Pour créer une connexion entre Amazon Location Service AWS IoT Core et Amazon, vous avez besoin d'une AWS Lambda fonction permettant de traiter les messages transférés par des EventBridge CloudWatch événements. Cette fonction permet d'extraire toutes les données de position, de les formater pour Amazon Location Service et de les envoyer via l'API Amazon Location Tracker. Vous pouvez créer cette fonction via la AWS Lambda console, ou vous pouvez utiliser le AWS Command Line Interface (AWS CLI) ou le AWS Lambda APIs. Pour créer une fonction Lambda qui publie des mises à jour de position sur Amazon Location à l'aide de la console :

  1. Ouvrez la AWS Lambda console à l'adresse https://console.aws.amazon.com/lambda/.

  2. Dans le menu de navigation de gauche, choisissez Functions.

  3. Choisissez Créer une fonction et assurez-vous que l'option Auteur à partir de zéro est sélectionnée.

  4. Remplissez les cases suivantes :

    • un nom de fonction

    • pour l'option Runtime, choisissez Node.js 16.x.

  5. Choisissez Créer une fonction.

  6. Cliquez sur l'onglet Code pour ouvrir l'éditeur.

  7. Remplacez le code de l'espace réservé dans le fichier index.js par le code suivant :

    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. Choisissez Déployer pour enregistrer la fonction mise à jour.

  9. Cliquez sur l’onglet Configuration.

  10. Dans la section Déclencheurs, cliquez sur Ajouter un déclencheur.

  11. Sélectionnez EventBridge (CloudWatch Événements) dans le champ Source.

  12. Sélectionnez l'option radio « Règles existantes ».

  13. Entrez le nom de la règle comme suit `AmazonLocationMonitor-GEOFENCECOLLECTION_NAME`.

  14. Cliquez sur le bouton Ajouter.

  15. Cela ajoutera également des « déclarations de politique basées sur les ressources » dans l'onglet des autorisations

Client de test MQTT

  1. Ouvrez la https://console.aws.amazon.com/iot/.

  2. Dans le volet de navigation de gauche, choisissez le client de test MQTT.

  3. Vous verrez une section intitulée Client de test MQTT dans laquelle vous pouvez configurer votre connexion MQTT.

  4. Après avoir configuré les paramètres nécessaires, cliquez sur le bouton Connect pour établir une connexion avec le broker MQTT à l'aide des paramètres fournis.

  5. Prenez note de la valeur du point de terminaison.

Une fois connecté, vous pouvez vous abonner à des sujets MQTT ou publier des messages sur des sujets en utilisant les champs de saisie correspondants fournis dans l'interface client de test MQTT. Ensuite, vous allez joindre la politique MQTT :

  1. Dans le menu de gauche, sous Gérer, développez l'option de sécurité et cliquez sur Politiques.

  2. Cliquez sur le bouton Créer une politique.

  3. Entrez un nom de stratégie.

  4. Dans le document de politique, sélectionnez l'onglet JSON.

  5. Copiez-collez la politique ci-dessous, mais assurez-vous de mettre à jour tous les éléments avec votre REGION et 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" } ] }
  6. Cliquez sur le bouton Créer pour terminer.

Pour configurer l'exemple de code, les outils suivants doivent être installés :

  • Git

  • XCode 15.3 ou version ultérieure

  • iOS Simulator 16 ou version ultérieure

Utilisez cette procédure pour configurer l'exemple de code d'application :

  1. Clonez le dépôt git à partir de cette URL : https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking- with-geofence-notifications.

  2. Ouvrez le fichier de projet AWSLocationSampleApp.xcodeproj.

  3. Attendez le processus de résolution du package.

  4. Facultatif : Dans le menu de navigation du projet, renommez ConfigTemplate.xcconfig Config.xcconfig et renseignez les valeurs suivantes :

    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`

Après avoir configuré l'exemple de code, vous pouvez désormais exécuter l'application sur un simulateur iOS ou un appareil physique.

  1. Créez et exécutez l'application.

  2. L'application vous demandera des autorisations de localisation et de notification. Tu dois les autoriser.

  3. Appuyez sur le bouton « Configuration Cognito ».

  4. Si vous n'avez pas renseigné les valeurs du fichier `Config.xcConfig`, vous devez remplir le champ avec les valeurs de ressources que vous avez créées précédemment dans l'écran de configuration.

    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`
  5. Enregistrez la configuration

  6. Vous pouvez désormais voir les options de filtre pour le temps, la distance et la précision. Utilisez-les selon vos besoins.

  7. Accédez à l'onglet « Suivi » de l'application et vous verrez la carte et le bouton « Démarrer le suivi ».

  8. Si vous avez installé l'application sur un simulateur, vous souhaiterez peut-être simuler des changements de position. Cela peut être fait dans l'option du menu Fonctionnalités -> Emplacement. Par exemple, sélectionnez Fonctionnalités -> Emplacement -> Freeway Drive.

  9. Appuyez sur le bouton « Démarrer le suivi ». Vous devriez voir les points de suivi sur la carte.

  10. L'application suit également les emplacements en arrière-plan. Ainsi, lorsque vous déplacez l'application en arrière-plan, elle vous demandera l'autorisation de poursuivre le suivi en mode arrière-plan.

  11. Vous pouvez arrêter le suivi en appuyant sur le bouton « Arrêter le suivi ».