gpt4 book ai didi

ios - 即使调用了 didDetermineState,也未调用 dirangebeacons

转载 作者:行者123 更新时间:2023-11-29 12:23:18 24 4
gpt4 key购买 nike

我有一套 Estimote 信标。当我使用 estimote sdk 时,我可以为信标测距并使用它。但问题是,当我使用 iOS SDK 进行监控和测距时,根本没有调用 didRangeBeacons。

我已经开始测距,如下图所示。当我使用断点检查时,该函数被调用。

- (void) locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
switch (state) {
case CLRegionStateInside:
[self.beaconManager startRangingBeaconsInRegion:self.beaconRegion];
NSLog(@"Region CLRegionStateInside");

最佳答案

请确保您已完成以下检查 list :

  1. 您已经在您的 info.plist 中输入了 NSLocationAlwaysUsageDescription

  2. 您的属性 self.beaconRegion 是一个 CLBeacon 区域,其 UUID 与您要检测的 UUID 匹配。

  3. 您的设备是 iPhone 4S 或更新版本,运行 iOS 7 或更高版本,并且已打开蓝牙

我会将代码更改为如下所示:

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(nonnull CLRegion *)region {
CLBeaconRegion *beaconRegion = (CLBeaconRegion *)region;
if (beaconRegion.major && beaconRegion.minor) {
} else {
switch (state) {
case CLRegionStateUnknown:
// Handle this case when bluetooth is off.
break;
case CLRegionStateInside:
NSLog(@"Inside %@", region);
if (![self.locationManager.rangedRegions containsObject:beaconRegion]) {
[self.locationManager startRangingBeaconsInRegion:[[CLBeaconRegion alloc] initWithProximityUUID:beaconRegion.proximityUUID identifier:beaconRegion.proximityUUID.UUIDString]];
}
break;
case CLRegionStateOutside:
NSLog(@"Outside %@", region);
break;
}
}
}

您只需要在 UUID 上进行测距,因为这将拾取与该 UUID 匹配的所有信标,无论主要还是次要。另请注意,如果您尚未进行测距以避免额外的函数调用,则应仅尝试开始测距

关于ios - 即使调用了 didDetermineState,也未调用 dirangebeacons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com