Como criar e localizar âncoras com a relocalização grosseira no Swift

As Âncoras Espaciais do Azure podem associar dados do sensor no dispositivo ao posicionamento das âncoras que criar. Estes dados também podem ser utilizados para determinar rapidamente se existem âncoras nas proximidades do seu dispositivo. Para obter mais informações, veja Relocalização conjunta.

Pré-requisitos

Para concluir este guia, certifique-se de que tem:

Configurar o fornecedor de impressões digitais do sensor

Vamos começar por criar e configurar um fornecedor de impressões digitais do sensor. O fornecedor de impressões digitais do sensor tratará da leitura dos sensores específicos da plataforma no seu dispositivo e da conversão das respetivas leituras numa representação comum consumida pela sessão de âncora espacial na cloud.

Importante

Certifique-se de que verifica aqui se os sensores que está a ativar estão disponíveis na sua 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

Configurar a sessão de âncora espacial na cloud

Vamos tratar da configuração da sessão de âncora espacial na cloud em seguida. Na primeira linha, definimos o fornecedor de sensores na sessão. A partir de agora, qualquer âncora que criarmos durante a sessão será associada a um conjunto de leituras de sensores. Em seguida, instanciamos um critério de localização quase do dispositivo e inicializámo-lo para corresponder aos requisitos da aplicação. Por fim, instruímos a sessão a utilizar dados de sensores ao localizar âncoras ao criar um observador a partir dos nossos critérios de quase dispositivo.

// 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)

Após a criação do observador, o AnchorLocated evento será acionado para cada âncora pedida. Este evento é acionado quando uma âncora está localizada ou se não é possível localizar a âncora. Se esta situação acontecer, o motivo será indicado no estado. Depois de todas as âncoras de um observador serem processadas, encontradas ou não encontradas, o LocateAnchorsCompleted evento será acionado. Existe um limite de 35 identificadores por observador.

Passos seguintes

Neste guia, aprendeu a criar e localizar âncoras com sensores no dispositivo. Para saber mais sobre a relocalização grosseira, avance para o guia seguinte.