2015-09-18 2 views
0

У меня есть 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; 
} 

Я пропускаю что-то?

ответ

0

Мониторинг территории основан на UUID, так как ваш UUID такой же, как и didEnterRegion:, и didExitRegion: будет называться один раз. Тем не менее, диапазон радиомаяков возвратит вам все разновидности маяков с этим UUID (различные основные значения &).

Если у вас есть три маяка в непосредственной близости (как вы упомянули все 3 сидения на вашем столе), транслирующих тот же UUID, то слушатель получит обратный вызов только один раз в didEnterRegion. Вы можете попробовать, держа трех маяков далеко, а затем переместите слушателя. Вы должны увидеть, что didEnterRegion вызывается 3 раза при условии, что didExitRegion: на предыдущем вызывается до того, как вы снова войдете в ту же область.

+0

Я не спрашиваю, почему 'didEnterRegion' и' didExitRegion' вызывается один раз, я спрашиваю, почему все три из моих маяковых устройств не реагируют на didEnterRegion и didExitRegion? – Zhang

+0

Что значит не реагировать на 'didEnterRegion'? Я добавил больше объяснений в свой пост. – Abhinav

+0

Я попытался переместить два других маяка в угол моего дома, чтобы они были на расстоянии более 10 метров друг от друга. Только один маяк реагирует на мой iPhone, другие два не реагируют. Они являются маяками Kontakt, и я загрузил приложение Kontakt, оно показывает, что все три маяка имеют около 90% заряда батареи. – Zhang

Смежные вопросы