我正在创建一个监控后台区域的应用,我可以在应用程序内外收到didEnterRegion
和didExitRegion
。我的一个问题是,在测试过程中,我有一个区域就在我工作的地方,当我启动应用程序时(我在启动和退出时清除区域)我希望didEnterRegion
为这个区域触发,但事实并非如此。显然,系统认为我在该区域内,因为当我移出它时我会收到didExitRegion
。如果我然后移回该区域,它将会触发它。“
我在初始化期间尝试使用requestStateForRegion
,如下所示:
[self.locationManager startMonitoringForRegion:region];
[self.locationManager requestStateForRegion:region];
然后将回调实现为:
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
if (state == CLRegionStateInside) {
[self locationManager:manager didEnterRegion:region];
}
}
但是这个回调永远不会触发,所以我不知道应该怎么做。
答案 0 :(得分:0)
这非常简单:正如苹果在文档中所述,只有边界事件才会触发委托方法调用。
但你为什么需要这个呢?如果您了解该地区,您可以在启动应用程序时进行测试,无论您是否在室内,对吧?
如果它是一个圆形区域,你可以继续这样做
CLLocation *myLocation = CURRENT_LOCATION;
CLCircularRegion* region = YOUR_REGION;
CLLocation *regionCenter = [[CLLocation alloc] initWithLatitude:region.center.latitude longitude:region.center.longitude];
if([region distanceFromLocation:regionCenter]<region.radius)
{
// YOU ARE IN THE REGION!!
}
或者只是使用:
CLLocation *myLocation = CURRENT_LOCATION;
CLCircularRegion* region = YOUR_REGION;
if([region containsCoordinate:myLocation.coordinate])
{
//YOU ARE IN THE REGION!!
}
答案 1 :(得分:0)
您可以尝试[locationMgrObj requestStateForRegion:regionObj]
获取didDetermineState
中的当前状态。
答案 2 :(得分:0)
我相信你应该打电话
中的[self.locationManager requestStateForRegion:region] For Index = 0 To 60 Step 1
If WpfWindow("window").Exist(0) Then
WpfWindow("window").Activate
WpfWindow("window").Type micCapsLockOff
WpfWindow("window").Click
End If
Next