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.
- UUID
- Mayor
- 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
- 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!)
}
- 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!)
}
}
- 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