由 startMonitoringForRegion 触发的第三个 Estimote 信标没有收到 didEnterRegion 或 didExitRegion
Third Estimote beacon triggered by startMonitoringForRegion does not receive didEnterRegion or didExitRegion
在我的应用委托中,我正在注册以接收 didEnterRegion 和 didExitRegion 的更新。具体来说,在 didFinishLaunchingWithOptions
中,我像这样声明并注册到信标:
//Setup the beacon monitoring
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate=self;
for(CLRegion *r in locationManager.monitoredRegions){
[locationManager stopMonitoringForRegion:r];
}
self.beaconManager = [[ESTBeaconManager alloc] init];
self.beaconManager.delegate = self;
[self.beaconManager requestAlwaysAuthorization];
//Build the beacons
self.beaconRegion_1=[[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:target_UUID_1]
major:target_Major_1
minor:target_Minor_1
identifier:@"BridgeRegion_1"];
self.beaconRegion_2=[[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:target_UUID_2]
major:target_Major_2
minor:target_Minor_2
identifier:@"BridgeRegion_2"];
self.beaconRegion_3=[[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:target_UUID_3]
major:target_Major_3
minor:target_Minor_3
identifier:@"BridgeRegion_3"];
self.beaconRegion_4=[[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"73F2C305-CE97-410E-B0DF-11D5B4021A2E"]
major:1641
minor:55555
identifier:@"BridgeRegion_4"];
//Start the monitoring
self.beaconRegion_1.notifyOnEntry = YES;
self.beaconRegion_1.notifyOnExit = YES;
self.beaconRegion_1.notifyEntryStateOnDisplay = YES;
self.beaconRegion_2.notifyOnEntry = YES;
self.beaconRegion_2.notifyOnExit = YES;
self.beaconRegion_2.notifyEntryStateOnDisplay = YES;
self.beaconRegion_3.notifyOnEntry = YES;
self.beaconRegion_3.notifyOnExit = YES;
self.beaconRegion_3.notifyEntryStateOnDisplay = YES;
/*self.beaconRegion_4.notifyOnEntry = YES;
self.beaconRegion_4.notifyOnExit = YES;
self.beaconRegion_4.notifyEntryStateOnDisplay = YES;*/
[self.beaconManager startMonitoringForRegion:self.beaconRegion_1];
[self.beaconManager startMonitoringForRegion:self.beaconRegion_2];
[self.beaconManager startMonitoringForRegion:self.beaconRegion_3];
我遇到的问题是这样的,曾经有 startMonitoringForRegion
第三次调用它的信标永远不会触发任何 didEnterRegion 或 didExitRegion 调用。我调换了调用的顺序,无论哪个物理信标被称为第三个,这个规则都是不变的。
我已经实现了 ESTBeaconManager 的所有委托函数,没有任何异常触发。任何帮助将不胜感激。
问题本质上是特定设备配置的限制,我在干净的设备 (iPod 5-Gen) 上测试了相同的代码并且它表现完美。作为记录,有问题的设备是 iPhone 4s 运行 iOS8.3(12f70).
不确定这种经历是否会对以后的任何人有所帮助,但我希望它能。
在我的应用委托中,我正在注册以接收 didEnterRegion 和 didExitRegion 的更新。具体来说,在 didFinishLaunchingWithOptions
中,我像这样声明并注册到信标:
//Setup the beacon monitoring
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate=self;
for(CLRegion *r in locationManager.monitoredRegions){
[locationManager stopMonitoringForRegion:r];
}
self.beaconManager = [[ESTBeaconManager alloc] init];
self.beaconManager.delegate = self;
[self.beaconManager requestAlwaysAuthorization];
//Build the beacons
self.beaconRegion_1=[[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:target_UUID_1]
major:target_Major_1
minor:target_Minor_1
identifier:@"BridgeRegion_1"];
self.beaconRegion_2=[[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:target_UUID_2]
major:target_Major_2
minor:target_Minor_2
identifier:@"BridgeRegion_2"];
self.beaconRegion_3=[[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:target_UUID_3]
major:target_Major_3
minor:target_Minor_3
identifier:@"BridgeRegion_3"];
self.beaconRegion_4=[[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"73F2C305-CE97-410E-B0DF-11D5B4021A2E"]
major:1641
minor:55555
identifier:@"BridgeRegion_4"];
//Start the monitoring
self.beaconRegion_1.notifyOnEntry = YES;
self.beaconRegion_1.notifyOnExit = YES;
self.beaconRegion_1.notifyEntryStateOnDisplay = YES;
self.beaconRegion_2.notifyOnEntry = YES;
self.beaconRegion_2.notifyOnExit = YES;
self.beaconRegion_2.notifyEntryStateOnDisplay = YES;
self.beaconRegion_3.notifyOnEntry = YES;
self.beaconRegion_3.notifyOnExit = YES;
self.beaconRegion_3.notifyEntryStateOnDisplay = YES;
/*self.beaconRegion_4.notifyOnEntry = YES;
self.beaconRegion_4.notifyOnExit = YES;
self.beaconRegion_4.notifyEntryStateOnDisplay = YES;*/
[self.beaconManager startMonitoringForRegion:self.beaconRegion_1];
[self.beaconManager startMonitoringForRegion:self.beaconRegion_2];
[self.beaconManager startMonitoringForRegion:self.beaconRegion_3];
我遇到的问题是这样的,曾经有 startMonitoringForRegion
第三次调用它的信标永远不会触发任何 didEnterRegion 或 didExitRegion 调用。我调换了调用的顺序,无论哪个物理信标被称为第三个,这个规则都是不变的。
我已经实现了 ESTBeaconManager 的所有委托函数,没有任何异常触发。任何帮助将不胜感激。
问题本质上是特定设备配置的限制,我在干净的设备 (iPod 5-Gen) 上测试了相同的代码并且它表现完美。作为记录,有问题的设备是 iPhone 4s 运行 iOS8.3(12f70).
不确定这种经历是否会对以后的任何人有所帮助,但我希望它能。