Configurar el código inicial para Amazon Location
En esta página se proporciona el código inicial de un ejemplo de aplicación iOS que se integra con Amazon Location Service. Con este código como punto de partida, puede crear aplicaciones iOS con reconocimiento de ubicación y usar características como los mapas, la geocodificación, el geovallado, el rastreo y el enrutamiento.
Habilitar los permisos de ubicación en su aplicación
Abra el proyecto de Xcode.
Localice el archivo
Info.plist
del proyecto.Agregue las claves necesarias para los permisos de ubicación en función de los requisitos de su aplicación. Estas son las claves:
NSLocationWhenInUseUsageDescription
: descripción de por qué su aplicación necesita acceso a la ubicación cuando está en uso.NSLocationAlwaysAndWhenInUseUsageDescription
: descripción de por qué su aplicación necesita un acceso continuo a la ubicación.
Ahora tendrá que configurar los valores de los recursos en su aplicación. Agregue un nuevo archivo con el nombre Config.xcconfig
y rellene los valores que creó anteriormente en la consola de Amazon.
REGION = INDEX_NAME = MAP_NAME = IDENTITY_POOL_ID = TRACKER_NAME =
En la sección del navegador del lado izquierdo, seleccione el proyecto.
En la sección de objetivos, seleccione su aplicación y haga clic en la pestaña de información.
Agregue propiedades de información con valores como los siguientes:
Agregue el archivo
Config.swift
con el contenido siguiente, que leerá los valores de configuración del archivo de información del paquete.import Foundation enum Config { static let region = Bundle.main.object(forInfoDictionaryKey: "Region") as! String static let mapName = Bundle.main.object(forInfoDictionaryKey: "MapName") as! String static let indexName = Bundle.main.object(forInfoDictionaryKey: "IndexName") as! String static let identityPoolId = Bundle.main.object(forInfoDictionaryKey: "IdentityPoolId") as! String static let trackerName = Bundle.main.object(forInfoDictionaryKey: "TrackerName") as! String }
Cree una nueva carpeta con el nombre
ViewModel
y agregue un archivoTrackingViewModel.swift
en su interior.import SwiftUI import AmazonLocationiOSAuthSDK import MapLibre final class TrackingViewModel : ObservableObject { @Published var trackingButtonText = NSLocalizedString("StartTrackingLabel", comment: "") @Published var trackingButtonColor = Color.blue @Published var trackingButtonIcon = "play.circle" @Published var region : String @Published var mapName : String @Published var indexName : String @Published var identityPoolId : String @Published var trackerName : String @Published var showAlert = false @Published var alertTitle = "" @Published var alertMessage = "" @Published var centerLabel = "" var clientIntialised: Bool var client: LocationTracker! var authHelper: AuthHelper var credentialsProvider: LocationCredentialsProvider? var mlnMapView: MLNMapView? var mapViewDelegate: MapViewDelegate? var lastGetTrackingTime: Date? var trackingActive: Bool init(region: String, mapName: String, indexName: String, identityPoolId: String, trackerName: String) { self.region = region self.mapName = mapName self.indexName = indexName self.identityPoolId = identityPoolId self.trackerName = trackerName self.authHelper = AuthHelper() self.trackingActive = false self.clientIntialised = false } func authWithCognito(identityPoolId: String?) { guard let identityPoolId = identityPoolId?.trimmingCharacters(in: .whitespacesAndNewlines) else { alertTitle = NSLocalizedString("Error", comment: "") alertMessage = NSLocalizedString("NotAllFieldsAreConfigured", comment: "") showAlert = true return } credentialsProvider = authHelper.authenticateWithCognitoUserPool(identityPoolId: identityPoolId) initializeClient() } func initializeClient() { client = LocationTracker(provider: credentialsProvider!, trackerName: trackerName) clientIntialised = true } }