iOS 8:区域监控,如何使其工作

时间:2014-09-29 09:34:19

标签: ios objective-c ios7 core-location

这是代码段。下方。

// 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中使用相同的应用程序。在没有授权请求的情况下工作。

分享您的经验。

2 个答案:

答案 0 :(得分:1)

当我从ios7迁移到ios8时,我遇到了同样的问题。我已经用苹果文档跟进了我的解释。

检查苹果在这说什么:

APPLE DOC

来自iOS 8的{p>,NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescription文件中的Info.plist键值是必需的。但是,您还需要在注册位置更新之前请求用户的许可,根据您的要求,调用[_locationManager requestWhenInUseAuthorization][_locationManager requestAlwaysAuthorization]选择以上任意一种。

请注意这个信息,它将帮助完成ios 8。

答案 1 :(得分:0)

在我将NSLocationAlwaysUsageDescription键值对添加到InfoPlist.strings后,它显示了对话框并开始工作。