Suivi mobile iOS SDK - 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.

Suivi mobile iOS SDK

Le suivi mobile Amazon Location SDK fournit des utilitaires qui permettent d'authentifier, de capturer les positions des appareils et d'envoyer des mises à jour de position à Amazon Location Trackers en toute simplicité. Il SDK prend en charge le filtrage local des mises à jour de localisation avec des intervalles de mise à jour configurables. Cela permet de réduire les coûts de données et d'optimiser la connectivité intermittente pour vos applications iOS.

Le suivi iOS SDK est disponible sur GitHub : Amazon Location Mobile Tracking SDK pour iOS.

Cette section couvre les sujets suivants relatifs au suivi mobile d'Amazon Location pour iOS SDK :

Installation

Pour installer le suivi mobile SDK pour iOS, procédez comme suit :

  1. Dans votre projet Xcode, accédez à Fichier et sélectionnez Ajouter des dépendances de package.

  2. Tapez le code suivant URL : https://github.com/aws-geospatial/amazon-location-mobile-tracking-sdk-ios/ dans la barre de recherche et appuyez sur la touche Entrée.

  3. Sélectionnez le amazon-location-mobile-tracking-sdk-ios package et cliquez sur Ajouter un package.

  4. Sélectionnez le produit AmazonLocationiOSTrackingSDK du package et cliquez sur Ajouter un package.

Utilisation

La procédure suivante explique comment créer un assistant d'authentification à l'aide des informations d'identification de Cognito.

  1. Après avoir installé la bibliothèque, vous devez ajouter l'une des descriptions ou les deux dans votre info.plist fichier :

    Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description
  2. Importez ensuite le AuthHelper dans votre classe :

    import AmazonLocationiOSAuthSDKimport AmazonLocationiOSTrackingSDK
  3. Vous allez ensuite créer un AuthHelper objet et l'utiliser avec le AWS SDK, en créant un assistant d'authentification à l'aide des informations d'identification d'Amazon Cognito.

    let authHelper = AuthHelper() let locationCredentialsProvider = authHelper.authenticateWithCognitoUserPool(identityPoolId: "My-Cognito-Identity-Pool-Id", region: "My-region") //example: us-east-1 let locationTracker = LocationTracker(provider: locationCredentialsProvider, trackerName: "My-tracker-name") // Optionally you can set ClientConfig with your own values in either initialize or in a separate function // let trackerConfig = LocationTrackerConfig(locationFilters: [TimeLocationFilter(), DistanceLocationFilter()], trackingDistanceInterval: 30, trackingTimeInterval: 30, logLevel: .debug) // locationTracker = LocationTracker(provider: credentialsProvider, trackerName: "My-tracker-name",config: trackerConfig) // locationTracker.setConfig(config: trackerConfig)

Filtres

L'iOS de suivi mobile Amazon Location SDK intègre trois filtres de localisation.

  • TimeLocationFilter: filtre l'emplacement actuel à télécharger en fonction d'un intervalle de temps défini.

  • DistanceLocationFilter: filtre les mises à jour de localisation en fonction d'un seuil de distance spécifié.

  • AccuracyLocationFilter: filtre les mises à jour de localisation en comparant la distance parcourue depuis la dernière mise à jour avec la précision de la position actuelle.

Cet exemple ajoute des filtres LocationTracker au moment de la création :

val config = LocationTrackerConfig( trackerName = "MY-TRACKER-NAME", logLevel = TrackingSdkLogLevel.DEBUG, accuracy = Priority.PRIORITY_HIGH_ACCURACY, latency = 1000, frequency = 5000, waitForAccurateLocation = false, minUpdateIntervalMillis = 5000, locationFilters = mutableListOf(TimeLocationFilter(), DistanceLocationFilter(), AccuracyLocationFilter()) ) locationTracker = LocationTracker( applicationContext, locationCredentialsProvider, config, )

Cet exemple active et désactive le filtre lors de l'exécution avec LocationTracker :

// To enable the filter locationTracker?.enableFilter(TimeLocationFilter()) // To disable the filter locationTracker?.disableFilter(TimeLocationFilter())

Fonctions de SDK suivi iOS Mobile

Le suivi mobile Amazon Location SDK pour iOS inclut les fonctions suivantes :

  • Classe : LocationTracker

    init(provider: LocationCredentialsProvider, trackerName: String, config: LocationTrackerConfig? = nil)

    Il s'agit d'une fonction d'initialisation permettant de créer un LocationTracker objet. Il nécessite des instances deLocationCredentialsProvider, trackerName et éventuellement une instance deLocationTrackingConfig. Si la configuration n'est pas fournie, elle sera initialisée avec les valeurs par défaut.

  • Classe : LocationTracker

    setTrackerConfig(config: LocationTrackerConfig)

    Cela permet à la configuration de Tracker de prendre effet à tout moment après l'initialisation du suivi de localisation

  • Classe : LocationTracker

    getTrackerConfig()

    Cela permet d'obtenir la configuration de suivi de localisation à utiliser ou à modifier dans votre application.

    Retours : LocationTrackerConfig

  • Classe : LocationTracker

    getDeviceId()

    Obtient l'identifiant de l'appareil généré par le traqueur de localisation.

    Retours : String?

  • Classe : LocationTracker

    startTracking()

    Lance le processus d'accès à la position de l'utilisateur et d'envoi de celle-ci au AWS tracker.

  • Classe : LocationTracker

    resumeTracking()

    Reprend le processus d'accès à la position de l'utilisateur et d'envoi de celle-ci au AWS traceur.

  • Classe : LocationTracker

    stopTracking()

    Arrête le processus de suivi de la position de l'utilisateur.

  • Classe : LocationTracker

    startBackgroundTracking(mode: BackgroundTrackingMode)

    Lance le processus d'accès à la position de l'utilisateur et de son envoi au AWS tracker alors que l'application est en arrière-plan. BackgroundTrackingModepropose les options suivantes :

    • Active:Cette option n'interrompt pas automatiquement les mises à jour de localisation.

    • BatterySaving:Cette option suspend automatiquement les mises à jour de localisation

    • None:Cette option désactive globalement les mises à jour de localisation en arrière-plan

  • Classe : LocationTracker

    resumeBackgroundTracking(mode: BackgroundTrackingMode)

    Reprend le processus d'accès à la position de l'utilisateur et d'envoi de celle-ci au AWS tracker alors que l'application est en arrière-plan.

  • Classe : LocationTracker

    stopBackgroundTracking()

    Arrête le processus d'accès à la position de l'utilisateur et d'envoi de celle-ci au AWS tracker alors que l'application est en arrière-plan.

  • Classe : LocationTracker

    getTrackerDeviceLocation(nextToken: String?, startTime: Date? = nil, endTime: Date? = nil, completion: @escaping (Result<GetLocationResponse, Error>)

    Récupère les emplacements de suivi téléchargés pour l'appareil de l'utilisateur entre la date et l'heure de début et de fin.

    Retours : Void

  • Classe : LocationTrackerConfig

    init()

    Cela initialise le LocationTrackerConfig avec les valeurs par défaut.

  • Classe : LocationTrackerConfig

    init(locationFilters: [LocationFilter]? = nil, trackingDistanceInterval: Double? = nil, trackingTimeInterval: Double? = nil, trackingAccuracyLevel: Double? = nil, uploadFrequency: Double? = nil, desiredAccuracy: CLLocationAccuracy? = nil, activityType: CLActivityType? = nil, logLevel: LogLevel? = nil)

    Cela initialise le LocationTrackerConfig avec des valeurs de paramètres définies par l'utilisateur. Si aucune valeur de paramètre n'est fournie, elle sera définie sur une valeur par défaut.

  • Classe : LocationFilter

    shouldUpload(currentLocation: LocationEntity, previousLocation: LocationEntity?, trackerConfig: LocationTrackerConfig)

    LocationFilterIl s'agit d'un protocole que les utilisateurs peuvent implémenter pour implémenter leur filtre personnalisé. Un utilisateur devra implémenter une shouldUpload fonction pour comparer l'emplacement précédent et actuel et revenir si l'emplacement actuel doit être téléchargé.

Exemples

Cette section présente des exemples d'utilisation du service de suivi mobile Amazon Location SDK pour iOS.

Note

Assurez-vous que les autorisations nécessaires sont définies dans le info.plist fichier. Il s'agit des mêmes autorisations que celles répertoriées dans la Utilisation section.

L'exemple suivant illustre les fonctionnalités permettant de suivre la position des appareils et de récupérer les positions suivies :

Privacy - Location When In Use Usage Description Privacy - Location Always and When In Use Usage Description

Commencez à suivre la position :

do { try locationTracker.startTracking() } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

Reprenez le suivi de la localisation :

do { try locationTracker.resumeTracking() } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

Arrêtez de suivre la position :

locationTracker.stopTracking()

Démarrez le suivi en arrière-plan :

do { locationTracker.startBackgroundTracking(mode: .Active) // .Active, .BatterySaving, .None } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

Suivi des antécédents du CV :

do { locationTracker.resumeBackgroundTracking(mode: .Active) } catch TrackingLocationError.permissionDenied { // Handle permissionDenied by showing the alert message or opening the app settings }

Pour arrêter le suivi en arrière-plan, procédez comme suit :

locationTracker.stopBackgroundTracking()

Récupérez les positions suivies de l'appareil à partir du tracker :

func getTrackingPoints(nextToken: String? = nil) { let startTime: Date = Date().addingTimeInterval(-86400) // Yesterday's day date and time let endTime: Date = Date() locationTracker.getTrackerDeviceLocation(nextToken: nextToken, startTime: startTime, endTime: endTime, completion: { [weak self] result in switch result { case .success(let response): let positions = response.devicePositions // You can draw positions on map or use it further as per your requirement // If nextToken is available, recursively call to get more data if let nextToken = response.nextToken { self?.getTrackingPoints(nextToken: nextToken) } case .failure(let error): print(error) } }) }