Recherche…
Paramètres
Paramètres | Détails |
---|---|
directeur | Référence CLLocationManager |
Région | CLRegion pourrait être une région circulaire (géofence ou région de balise) |
balises | Tableau de CLBeacon contient toutes les balises à distance |
Remarques
Les balises sont des objets IOT. Nous nous concentrons sur ceux qui sont conformes au protocole iBeacon et à la norme Apple. Chaque balise est un dispositif à sens unique qui transmet 3 choses
- UUID
- Majeur
- Mineur
Nous pouvons analyser les balises iBeacons en configurant notre objet gestionnaire CLLocation pour rechercher les balises correspondant à un UUID particulier. Toutes les balises avec l'UUID donné seront analysées.
CLLocation manager donne également un appel sur l’entrée et la sortie de la région de balise.
Fonctionnement de base d'iBeacon
- Configuration des balises de surveillance
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!)
}
- Le gestionnaire d'emplacement entre et sort de la région
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!)
}
}
- Balise de distance de gestionnaire de localisation
func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) {
print(beacons.first.major)
}
Numérisation de balises spécifiques
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
Rangement des iBeacons
Tout d'abord, vous devez demander l'autorisation des services de localisation
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
// OR locationManager.requestAlwaysAuthorization()
Vous pouvez ensuite obtenir toutes les informations sur les didRangeBeacons
dans 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow