Szukaj…


Parametry

Parametry Detale
menedżer Odwołanie do CLLocationManager
region Region CLR może być regionem kołowym (region geofence lub region nawigacyjny)
lampy ostrzegawcze Tablica CLBeacon zawiera wszystkie sygnalizatory dystansowe

Uwagi

Sygnały nawigacyjne są obiektami IOT. Koncentrujemy się na tych, które są zgodne ze standardem Apple iBeacon. Każdy sygnał nawigacyjny jest urządzeniem jednokierunkowym, które przesyła 3 rzeczy

  1. UUID
  2. Poważny
  3. Mniejszy

Możemy skanować iBeacons, konfigurując nasz obiekt CLLocation manager do skanowania w poszukiwaniu sygnałów nawigacyjnych dla określonego UUID. Wszystkie sygnały nawigacyjne o danym UUID zostaną przeskanowane.

Menedżer lokalizacji CLL również wywołuje połączenie przy wejściu i wyjściu z regionu nawigacyjnego.

Podstawowa obsługa iBeacon

  1. Skonfiguruj sygnały nawigacyjne
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. Menedżer lokalizacji wchodzi i wychodzi z regionu
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. Sygnał zasięgu menedżera lokalizacji
func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) {
    print(beacons.first.major)
}

Skanowanie określonych sygnałów nawigacyjnych

 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

Zasięg iBeacons

Najpierw musisz poprosić o autoryzację usług lokalizacyjnych

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

Następnie możesz uzyskać wszystkie informacje didRangeBeacons w 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow