Estimote: обнаружение нескольких маяков с помощью ESTBeaconRegion и startRangingBeaconsInRegion?

Вопрос начинающего Estimote: каков правильный подход к добавлению нескольких маяков Estimote с их соответствующими основными/второстепенными, чтобы все маяки можно было обнаружить отдельно с помощью startRangingBeaconsInRegion?

Этот код отлично работает для одного маяка:

// Single Beacon Region
ESTBeaconRegion* beaconRegion = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID
                                                                    major:11111 minor:11111
                                                                    identifier: @"EstimoteSampleRegion"];
// Start ranging beacons
[self.beaconManager startRangingBeaconsInRegion:beaconRegion];

Однако этот код не работает для нескольких маяков:

// Beacon 1 Region
ESTBeaconRegion* beacon1Region = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID
                                                                    major:11111 minor:11111
                                                                    identifier: @"EstimoteSampleRegion"];
// Beacon 2 Region
ESTBeaconRegion* beacon2Region = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID
                                                                    major:22222 minor:22222
                                                                    identifier: @"EstimoteSampleRegion"];
// Beacon 3 Region
ESTBeaconRegion* beacon3Region = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID
                                                                    major:33333 minor:33333
                                                                    identifier: @"EstimoteSampleRegion"];
// Start ranging beacons
[self.beaconManager startRangingBeaconsInRegion:beacon1Region];
[self.beaconManager startRangingBeaconsInRegion:beacon2Region];
[self.beaconManager startRangingBeaconsInRegion:beacon3Region];

С этим кодом обнаруживается только последний маяк. (Так что в этом случае обнаруживается только beacon3Region).

Если вы знаете, как добавлять и обнаруживать несколько маяков с помощью ESTBeaconRegion и startRangingBeaconsInRegion, я был бы признателен за пример кода, объясняющий, как это сделать.


person jamesnik    schedule 11.03.2014    source источник


Ответы (1)


Легко исправить! Ваш identifier: @"EstimoteSampleRegion"] должен использовать разные строки для всех трех регионов.

Это верно как при использовании Estimote SDK, так и при использовании стандартных CoreLocation API iOS, вокруг которых Estimote SDK является лишь тонкой оболочкой. CoreLocation отслеживает несколько регионов, используя этот строковый идентификатор в качестве ключа. Если вы используете одну и ту же строку более одного раза, вы фактически указываете CoreLocation заменить один регион другим регионом.

Бессовестный плагин: если вы используете структуру ProximityKit моей компании, вам вообще не нужно управлять своими областями-маяками в коде — вы может делать это динамически в облаке. После этого вам больше не придется беспокоиться о сохранении уникальности этого идентификатора. Он совместим с маяками Estimote, а также со всеми стандартными iBeacons.

person davidgyoung    schedule 11.03.2014