Как объявить массив Estimote для многих маяков
Я вижу этот вопрос Estimote: обнаружение нескольких маяков с помощью ESTBeaconRegion и startRangingBeaconsInRegion?
Я пробую этот ответ при условии, но когда я сделал три региона (например: из этого примера кода beacon1Region, beacon2Region, beacon3Region) и включаю этот "EstimoteSampleRegion" для каждого (например, EstimoteSampleRegion1, EstimoteSampleRegion2, EstimoteSampleRegion3), я могу получить только первый результат в индексе 0), когда я начинаю RangingBeaconsInRegion.
Как я могу заставить это работать? Должен ли я перечислить три образца областей оценки в одном массиве, который предназначен для одной области (например, "beaconRegion"), а затем искать в этой одной области три маяка с помощью [self.beaconManager startRangingBeaconsInRegion:beaconRegion]?
Если да, что такое код, который показывает, объявляет этот массив с множеством маяков для одного региона?
Или я должен сделать три экземпляра beaconManager, и у каждого маяка есть свой регион? Проблема, когда я делаю это, я вижу только первый маяк. не три.
1 ответ
Причина, по которой вы получаете только первый маяк, заключается в том, что вы выбираете разные регионы, и именно так iOS распознает то, что вы ищете. Даже используя CoreLocation и один CLLocationManager, вы получите один маяк в массиве в методе делегата.
Вы можете добавить дальний маяк в свой собственный массив, который, например, может быть свойством вашей модели.
Или я должен сделать три экземпляра beaconManager, и у каждого маяка есть свой регион? Проблема, когда я делаю это, я вижу только первый маяк. не три.
Да, это можно сделать таким образом. Затем вы реализуете
- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region
и этот метод будет вызываться один раз для каждого менеджера радиобуя каждые 1 секунду. В течении beacons
В массиве будет только один объект, но в конце концов вы получите все свои маяки. И так же, как и выше, вы можете добавить дальний маяк в свой собственный массив, который, например, может быть свойством вашей модели.
Если ваши маяки имеют одинаковые старшие номера (и разные младшие номера), вы можете использовать этот метод:
[self.manager startRangingBeaconsInRegion:[[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID major:713 identifier:@"Multiple Beacons"]];
после этого в
- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region
вы получите массив с более чем одним маяком (конечно, если у вас есть их рядом с вашим устройством iOS).