Swift didRequestRegionState在iOS 13上失败

Swift didRequestRegionState在iOS 13上失败,swift,core-location,core-bluetooth,ios13,ios-bluetooth,Swift,Core Location,Core Bluetooth,Ios13,Ios Bluetooth,我一直在开发一个应用程序,该应用程序注册一个具有核心位置的区域进行监控 self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:proximtyId] identifier:@"com.hospitalintegration.region" ]; if(self.beaconRegion){ [self.loca

我一直在开发一个应用程序,该应用程序注册一个具有核心位置的区域进行监控

self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:proximtyId] identifier:@"com.hospitalintegration.region" ];
        if(self.beaconRegion){
            [self.locationManager startMonitoringForRegion:self.beaconRegion];
            [self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
        }
        [self.locationManager startUpdatingLocation];
然后调用didStartMonitoringForRegion,并在此方法中请求区域状态:

- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
    if(self.beaconRegion){
        [self.locationManager requestStateForRegion:self.beaconRegion];
        [self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
    }
}
在iOS 12中,这似乎工作得非常好,调用了DidEstate,我得到了我想要的结果。但在iOS 13上,不会调用DidDetermingEstate,并且始终使用error.domain==kCLErrorDomain和error.code==5调用monitoringDidFailForRegion

苹果的文件说:

如果应用程序超过了可同时监视的最大区域数,则监视可能会失败。如果区域的半径距离太大,监控也可能失败


我查过了,这里没有问题。该区域很小,因为它在iOS 12上工作,我只监视1个区域。我检查了监视区域计数,它是1。所以,我不明白这里出了什么问题

代码5表示KClerRorRegionMonitoring故障。苹果有一个文档页面描述了这个错误,也许这有助于解决您的问题:@Craz1k0ek请检查我是否更新了这个问题。权限如何,自从iOS 13以来,权限已经发生了很大变化。似乎只有在始终授予权限时区域监控才可用,请看这里:问题在于蓝牙。在iOS 12上有一个警报,要求在蓝牙关闭时打开蓝牙。在iOS 13上,它不会出现,在我初始化CBCentralManager之后,现在它会显示从设置打开蓝牙的警报。