Buscar..


Parámetros

Parámetros Detalles
gerente Referencia de CLLocationManager
región CLRegion podría ser una región circular (geofence o región de baliza)
balizas Array of CLBeacon contiene todas las balizas a distancia

Observaciones

Las balizas son objetos IOT. Nos centramos en aquellos que cumplen con el protocolo iBeacon un estándar de Apple. Cada baliza es un dispositivo de una sola vía que transmite 3 cosas.

  1. UUID
  2. Mayor
  3. Menor

Podemos escanear iBeacons configurando nuestro objeto de administrador de CLLocation para escanear en busca de balizas para UUID en particular. Todas las balizas con el UUID dado serán escaneadas.

El administrador de CLLocation también proporciona llamadas al entrar y salir de la región de baliza.

Operación básica iBeacon

  1. Configurar balizas de monitoreo
func initiateRegion(ref:BeaconHandler){
    let uuid: NSUUID = NSUUID(UUIDString: "<UUID>")
    let beacon = CLBeaconRegion(proximityUUID: uuid, identifier: "")
    locationManager?.requestAlwaysAuthorization()    //cllocation manager obj.
    beacon?.notifyOnEntry = true
    beacon?.notifyOnExit = true
    beacon?.notifyEntryStateOnDisplay = true
    locationManager?.startMonitoringForRegion(beacon!)
    locationManager?.delegate = self;
    // Check if beacon monitoring is available for this device
    if (!CLLocationManager.isMonitoringAvailableForClass(CLBeaconRegion)) {
        print("error")
    }
    locationManager!.startRangingBeaconsInRegion(self.beacon!)
}
  1. Gerente de localización entrar y salir de la región
func locationManager(manager: CLLocationManager, didEnterRegion region: CLRegion) {
    if(region.isKindOfClass(CLBeaconRegion)) {
        locationManager!.startRangingBeaconsInRegion(self.beacon!)
    }
}
    
func locationManager(manager: CLLocationManager, didExitRegion region: CLRegion) {
    if(region.isKindOfClass(CLBeaconRegion)) {
        locationManager!.stopRangingBeaconsInRegion(self.beacon!)
    }
}
  1. Centro de localización gama baliza
func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) {
    print(beacons.first.major)
}

Escaneando balizas específicas

 beacon = CLBeaconRegion(proximityUUID: <#NSUUID#>, major: <#CLBeaconMajorValue#>, identifier: <#String#>) // listening to all beacons with given UUID and major value
 beacon =    CLBeaconRegion(proximityUUID: <##NSUUID#>, major: <##CLBeaconMajorValue#>, minor: <##CLBeaconMinorValue#>, identifier: <##String#>) // listening to all beacons with given UUID and major and minor value

Alineando iBeacons

Primero, hay que solicitar la autorización de los servicios de localización.

let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
// OR locationManager.requestAlwaysAuthorization()

Entonces puede obtener toda la información de iBeacons dentro de didRangeBeacons

func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) {
    for beacon in beacons {
        print(beacon.major)
        print(beacon.minor)
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow