У меня есть 3 маяка на моем столе, все три имеют одинаковый UUID, но разные основные и второстепенные номера. Я ожидаю увидеть 3 маяковых входа и выхода, но только один показывает.Swift iBeacon контролируется только одним маяком
У меня уже был выход и я сделал область, и я до сих пор вижу только 1 маяк, тот же маяк получает уведомление, когда я вхожу и выхожу из диапазона маяков.
Список данных радиомаяков загружаются из нашего Разбор счета и я пробегаем по всем из них и говорить IOS контролировать маяк:
func downloadBeacons()
{
var query:PFQuery = PFQuery(className: "Beacon");
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
NSLog("Beacons = ", objects!);
if let objects = objects as? [PFObject] {
for beacon in objects {
NSLog("------------------------");
NSLog("Beacon UUID = %@", beacon["UUID"] as! NSString);
NSLog("Beacon major number = %@", beacon["major"] as! NSString);
NSLog("Beacon minor number = %@", beacon["minor"] as! NSString);
NSLog("Beacon manufactureID = %@", beacon["manufacturerId"] as! NSString);
NSLog("Beacon manufacture = %@", beacon["manufacturer"] as! NSString);
var uuid:NSUUID = NSUUID(UUIDString: beacon["UUID"] as! String)!;
var majorValue:UInt16 = self.stringToUnsignedInt16(beacon["major"] as! String);
var minorValue:UInt16 = self.stringToUnsignedInt16(beacon["minor"] as! String);
// start monitoring each beacon?
var beaconObj = BeaconModel(name: beacon["manufacturerId"] as! NSString,
uuid: uuid,
majorValue: majorValue,
minorValue: minorValue,
manufacturer: beacon["manufacturer"] as! NSString);
self.startMonitoringBeaconObj(beaconObj);
}
}
}
else {
NSLog("Error: \(error!) \(error!.userInfo!)");
}
}
}
Мой метод startMonitoringBeacon ниже:
func startMonitoringBeaconObj(beaconObj:BeaconModel) {
var beaconRegion:CLBeaconRegion = self.beaconRegionWithBeaconObj(beaconObj);
LocationManager.sharedInstance.manager.startMonitoringForRegion(beaconRegion);
LocationManager.sharedInstance.manager.startRangingBeaconsInRegion(beaconRegion);
}
Это мой вспомогательный метод:
func beaconRegionWithBeaconObj(beaconObj:BeaconModel) -> CLBeaconRegion {
var beaconRegion:CLBeaconRegion = CLBeaconRegion(proximityUUID: beaconObj.uuid, major: beaconObj.majorValue, minor: beaconObj.minorValue, identifier: beaconObj.manufacturer as! String);
beaconRegion.notifyOnEntry = true;
beaconRegion.notifyOnExit = true;
return beaconRegion;
}
Я пропускаю что-то?
Я не спрашиваю, почему 'didEnterRegion' и' didExitRegion' вызывается один раз, я спрашиваю, почему все три из моих маяковых устройств не реагируют на didEnterRegion и didExitRegion? – Zhang
Что значит не реагировать на 'didEnterRegion'? Я добавил больше объяснений в свой пост. – Abhinav
Я попытался переместить два других маяка в угол моего дома, чтобы они были на расстоянии более 10 метров друг от друга. Только один маяк реагирует на мой iPhone, другие два не реагируют. Они являются маяками Kontakt, и я загрузил приложение Kontakt, оно показывает, что все три маяка имеют около 90% заряда батареи. – Zhang