这是代码段。下方。
// Initialize the region with the Estimote iBeacon manually generated UUID of 16 bytes size.
NSUUID *estimoteUUID = [[NSUUID alloc] initWithUUIDString:[Repository getiBeaconRegionUUID]];
_beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:estimoteUUID
identifier:@"A"];
// Launch app when display is turned on and inside region.
_beaconRegion.notifyEntryStateOnDisplay = YES;
// Create a location manager
_locationManager = [[CLLocationManager alloc] init];
// Set delegate
_locationManager.delegate = self;
if ([CLLocationManager isMonitoringAvailableForClass:[CLBeaconRegion class]])
{
[_locationManager requestAlwaysAuthorization];
[_locationManager startMonitoringForRegion:_beaconRegion];
// Get status update right away for UI
[_locationManager requestStateForRegion:_beaconRegion];
}
else
NSLog(@"This device does not support monitoring beacon regions");
应用中添加了NSLocationAlwaysUsageDescription
。 plist中。
从来没有与上面的关键文字对话。
在Settings =>中隐私=>该应用的定位服务。在第一个应用程序后被关闭。运行
委托方法
- (void)locationManager:(CLLocationManager *)manager
didDetermineState:(CLRegionState)state
forRegion:(CLRegion *)region
永远不会打电话给。
在iOS 7中使用相同的应用程序。在没有授权请求的情况下工作。
分享您的经验。
答案 0 :(得分:1)
当我从ios7迁移到ios8时,我遇到了同样的问题。我已经用苹果文档跟进了我的解释。
检查苹果在这说什么:
来自iOS 8的{p>,NSLocationWhenInUseUsageDescription
或NSLocationAlwaysUsageDescription
文件中的Info.plist
键值是必需的。但是,您还需要在注册位置更新之前请求用户的许可,根据您的要求,调用[_locationManager requestWhenInUseAuthorization]
或[_locationManager requestAlwaysAuthorization]
选择以上任意一种。
请注意这个信息,它将帮助完成ios 8。
答案 1 :(得分:0)
在我将NSLocationAlwaysUsageDescription
键值对添加到InfoPlist.strings
后,它显示了对话框并开始工作。