Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CLLocationManager:DidDeterministate:forRegion未调用_Ios_Objective C_Ios7_Core Location - Fatal编程技术网

Ios CLLocationManager:DidDeterministate:forRegion未调用

Ios CLLocationManager:DidDeterministate:forRegion未调用,ios,objective-c,ios7,core-location,Ios,Objective C,Ios7,Core Location,我正在使用GoogleMapsSDK为iOS和CoreLocation框架的区域监控实现iOS7应用程序。注册监控区域后,调用requestStateForRegion方法,但我对设备上的DidDeterministate:forRegion方法(iOS7.0.4,iPhone5S)没有反应 它可以接收didUpdateLocation方法,所以我认为委派过程工作正常。在模拟器上,正确调用了:forRegion方法 我应该如何解决此问题? 初始化代码如下所示 谢谢你的建议。提前谢谢 - (voi

我正在使用GoogleMapsSDK为iOS和CoreLocation框架的区域监控实现iOS7应用程序。注册监控区域后,调用requestStateForRegion方法,但我对设备上的DidDeterministate:forRegion方法(iOS7.0.4,iPhone5S)没有反应

它可以接收didUpdateLocation方法,所以我认为委派过程工作正常。在模拟器上,正确调用了:forRegion方法

我应该如何解决此问题? 初始化代码如下所示

谢谢你的建议。提前谢谢

- (void)viewDidLoad
{
    if (locManager == nil ) {
        locManager = [CLLocationManager new];
    }
    locManager.delegate = self;

    CLLocationCoordinate2D targetCenter;
    targetCenter.latitude = LATITUDE_CENTER;
    targetCenter.longitude = LONGITUDE_CENTER;
    CLLocationDegrees radius = TARGET_RADIUS;
    if ( locManager.maximumRegionMonitoringDistance < TARGET_RADIUS ){
        radius = locManager.maximumRegionMonitoringDistance;
    }
    self.targetRegion = [[CLCircularRegion alloc]
                     initWithCenter:targetCenter
                     radius:radius
                     identifier:@"TargetRegion"];

    BOOL monitoringAvailability = [CLLocationManager isMonitoringAvailableForClass:[self.targetRegion class]];
    if( monitoringAvailability ) {
        if( [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized ) {
            [locManager startMonitoringForRegion:self.targetRegion];
        }
    }

    [locManager requestStateForRegion:self.targetRegion];  
}

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
    if (state == CLRegionStateInside){
        NSLog(@"is in target region");
        self.isInTargetRegion = YES;
    }else{
        NSLog(@"is out of target region");
        self.isInTargetRegion = NO;
    }
}
-(void)viewDidLoad
{
if(locManager==nil){
LocationManager=[CLLocationManager新建];
}
locManager.delegate=self;
CLLocationCoordination2D目标中心;
targetCenter.latitude=纬度\中心;
targetCenter.longitude=经度\中心;
CLLocationDegrees半径=目标半径;
if(LocaManager.maximumRegionMonitoringDistance<目标半径){
半径=LocaManager.maximumRegionMonitoringDistance;
}
self.targetRegion=[[CLCircularRegion alloc]
initWithCenter:targetCenter
半径:半径
标识符:@“TargetRegion”];
BOOL监控可用性=[CLLocationManager IsMonitoringAvailable for类:[self.targetRegion类]];
if(监控可用性){
if([CLLocationManager授权状态]==kCLAuthorizationStatusAuthorized){
[LocalManager startMonitoringForRegion:self.targetRegion];
}
}
[locManager requestStateForRegion:self.targetRegion];
}
-(void)locationManager:(CLLocationManager*)manager:(CLRegionState)地区的州:(CLRegion*)地区
{
如果(状态==CLRegionStateInside){
NSLog(@“位于目标区域”);
self.isInTargetRegion=是;
}否则{
NSLog(@“超出目标区域”);
self.isInTargetRegion=否;
}
}

我自己找到了答案

在iPhone设备上, 设置->常规->后台应用程序刷新
启用应用程序的后台应用程序刷新,然后正确调用应用程序。

我自己找到了答案

在iPhone设备上, 设置->常规->后台应用程序刷新
启用应用程序的后台应用程序刷新,然后正确调用DidDetermingEstate。

在iOS 8中,您需要使用
[CLLocationManager requestAlwaysAuthorization]
提示输入
KClautorizationStatusAuthorizationDalways
。您还需要在Info.plist文件中有一个
NSLocationAlwaysUsageDescription
条目。

在iOS 8中,您需要使用
[CLLocationManager requestAlwaysAuthorization]
提示输入
KClautorizationStatusAuthorizationDalways
。您还需要在Info.plist文件中有一个
NSLocationAlwaysUsageDescription
条目。

我想知道startMonitoringForRegion是否失败,所以我检查了LocalManager.monitoredRegions,然后发现已正确启动监视。我想知道startMonitoringForRegion是否失败,因此,我检查了locManager.monitoredRegions,然后发现已正确启动监视。这也会导致CLBeaconRegion出现问题
isMonitoringAvailableForClass:
返回
YES
即使思想背景AppRefresh已关闭。但是苹果的位置和地图编程指南指出,在这种情况下,它应该返回
NO
。@Tobias,
isMonitoringAvailableForClass:
的行为是正确的。
isMonitoringAvailableForClass:
方法告诉您底层硬件是否支持对指定类的区域监视。这与后台应用程序刷新无关。@reecon-谢谢你提供的信息。只要重新阅读文档,它就清楚地说明了硬件。它还说我可以通过调用
[UIApplication backgroundRefreshStatus]
来检查后台刷新状态。我应该仔细看看。我认为要点与
isMonitoringAvailableForClass:
方法有关。这也会导致CLBeaconRegion出现问题
isMonitoringAvailableForClass:
返回
YES
即使思想背景AppRefresh已关闭。但是苹果的位置和地图编程指南指出,在这种情况下,它应该返回
NO
。@Tobias,
isMonitoringAvailableForClass:
的行为是正确的。
isMonitoringAvailableForClass:
方法告诉您底层硬件是否支持对指定类的区域监视。这与后台应用程序刷新无关。@reecon-谢谢你提供的信息。只要重新阅读文档,它就清楚地说明了硬件。它还说我可以通过调用
[UIApplication backgroundRefreshStatus]
来检查后台刷新状态。我应该仔细看看。我认为要点与
isMonitoringAvailableForClass:
方法有关。