Creación y localización de anclajes mediante relocalización general en Swift

Azure Spatial Anchors puede asociar los datos del sensor de posicionamiento del dispositivo con los anclajes que cree. Estos datos también se pueden usar para determinar rápidamente si hay algún anclaje cerca del dispositivo. Para más información, consulte Relocalización general.

Requisitos previos

Para completar esta guía, asegúrese de tener:

Configuración del proveedor de huellas digitales del sensor

Para empezar, es preciso crear y configurar un proveedor de huellas digitales del sensor. Este proveedor de huella digital del sensor se encargará de leer los sensores específicos de la plataforma en el dispositivo y de convertir sus lecturas en una representación común, que es la que usa la sesión del anclaje espacial en la nube.

Importante

Asegúrese de comprobar aquí si los sensores que está habilitando están disponibles en la plataforma.

// Create the sensor fingerprint provider
var sensorProvider: ASAPlatformLocationProvider?
sensorProvider = ASAPlatformLocationProvider()

// Allow GPS
let sensors = locationProvider?.sensors
sensors.geoLocationEnabled = true

// Allow WiFi scanning
sensors.wifiEnabled = true

// Populate the set of known BLE beacons' UUIDs
let uuids = [String]()
uuids.append("22e38f1a-c1b3-452b-b5ce-fdb0f39535c1")
uuids.append("a63819b9-8b7b-436d-88ec-ea5d8db2acb0")

// Allow the set of known BLE beacons
sensors.bluetoothEnabled = true
sensors.knownBeaconProximityUuids = uuids

Configuración de la sesión de anclaje espacial en la nube

A continuación, vamos a configurar la sesión de anclaje espacial en la nube. En la primera línea, se establece el proveedor del sensor en la sesión. A partir de ahora, todos los delimitadores que se creen en la sesión se asociarán a un conjunto de lecturas del sensor. A continuación, se instancian los criterios de búsqueda de dispositivos cercanos y se inicializan para que coincidan con los requisitos de la aplicación. Por último, se indica a la sesión que use los datos del sensor al localizar los delimitadores mediante la creación de un monitor a partir de nuestros criterios de dispositivos cercanos.

// Set the session's sensor fingerprint provider
cloudSpatialAnchorSession!.locationProvider = sensorProvider

// Configure the near-device criteria
let nearDeviceCriteria = ASANearDeviceCriteria()!
nearDeviceCriteria.distanceInMeters = 5.0
nearDeviceCriteria.maxResultCount = 25

// Set the session's locate criteria
let anchorLocateCriteria = ASAAnchorLocateCriteria()!
anchorLocateCriteria.nearDevice = nearDeviceCriteria
cloudSpatialAnchorSession!.createWatcher(anchorLocateCriteria)

Una vez creado el monitor, se desencadenará el evento AnchorLocated para cada delimitador solicitado. Este evento se desencadena cuando se encuentra un delimitador o si no puede encontrarse. Si se produce esta situación, el motivo se incluirá en el estado. Una vez procesados todos los delimitadores de un monitor, tanto si se encuentran como si no, se desencadenará el evento LocateAnchorsCompleted. Hay un límite de 35 identificadores por monitor.

Pasos siguientes

En esta guía, ha aprendido a crear y buscar delimitadores mediante los sensores de los dispositivos. Para más información sobre la relocalización general, vaya a la guía siguiente.