iOS 10中的测距信标

在我的应用程序中,我在CoreLocation中使用Beacon Region Monitoring.
该应用将2个proximityUUID设置为区域(它们具有不同的ID),
并开始如下所示.
#pragma mark - CLLocationManagerDelegate

(void)locationManager:(CLLocationManager *)manager
didEnterRegion:(CLRegion *)region {
     [self.locationManager requestStateForRegion:(CLBeaconRegion *)region];
}

- (void)locationManager:(CLLocationManager *)manager 
didExitRegion:(CLRegion *)region {
     [self.locationManager stopRangingBeaconsInRegion:(CLBeaconRegion *)region]; 
}

- (void)locationManager:(CLLocationManager *)manager
didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region{ 
    for(CLBeacon* b in beacons){
         //output only prevIoUs beacon if it's before regionout to prevIoUs region
         NSLog(@"%@",b);
    }
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
     //error
}

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region{ 
   if(state == CLRegionStateInside){
        if ([region isMemberOfClass:[CLBeaconRegion class]] && [CLLocationManager isRangingAvailable]){
            [self.locationManager startRangingBeaconsInRegion:(CLBeaconRegion *)region];
        }
  }
}

它适用于iOS 8和iOS 9,但在iOS 10中不起作用.

[在iOS 8 / iOS 9中]

1.broadcast beacon1

2.[app]didRangeBeacons (beacon1)

3.stop beacon1 and broadcast beacon2

4.[app]didRangeBeacons (beacon2)

[iOS 10]

1.broadcast beacon1

2.[app]didRangeBeacons (beacon1)

3.stop beacon1 and broadcast beacon2

4.[app]didRangeBeacons (**beacon1**)

这是iOS 10的错误吗?

解决方法

好吧,我在Swift 3中遇到了同样的问题,但我解决了它.

似乎有两件事(可能直接相关):

>对于iOS10,信标的广告间隔可能设置得太高(将其设置为大约200毫秒,然后它应该适用于9和10,正如Macrumors上的dantastic所建议的那样)>我是如何重新开始工作的:我在iOS 9.3.5的iPad上进行了测试,需要将部署目标更改为9.3.这表明它在我的iPad上再次使用iOS 9,但是……也在我的iOS 10设备上解决了它.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...