Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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 位置管理器:DIDEXITREON区域:当传输停止时,发射延迟很大_Ios_Iphone_Cllocationmanager_Ibeacon - Fatal编程技术网

Ios 位置管理器:DIDEXITREON区域:当传输停止时,发射延迟很大

Ios 位置管理器:DIDEXITREON区域:当传输停止时,发射延迟很大,ios,iphone,cllocationmanager,ibeacon,Ios,Iphone,Cllocationmanager,Ibeacon,我正在开发一个应用程序,它可以监控CLBeaconRegion,并在用户进入/退出该区域时向用户提供本地通知。一切正常,但在测试过程中,我发现如果我进入区域,会接到locationManager:didEnterRegion:的呼叫,然后关闭发射信标,我会在大约2分钟内接到locationManager:didExitRegion:的呼叫 有谁能帮忙避免这次延误吗 传输设备是iPhone4S和iOS 8.3。接收设备为iPhone 4s和iOS 7.1.2 - (BOOL)application

我正在开发一个应用程序,它可以监控CLBeaconRegion,并在用户进入/退出该区域时向用户提供本地通知。一切正常,但在测试过程中,我发现如果我进入区域,会接到locationManager:didEnterRegion:的呼叫,然后关闭发射信标,我会在大约2分钟内接到locationManager:didExitRegion:的呼叫

有谁能帮忙避免这次延误吗

传输设备是iPhone4S和iOS 8.3。接收设备为iPhone 4s和iOS 7.1.2

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ...
    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
        [self.locationManager requestAlwaysAuthorization];
    }
    [self.locationManager startMonitoringForRegion:beaconRegion];
    ...
}


- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

谢谢大家!

当应用程序位于4S上的后台时(或者如果它位于前台且不在范围内),可能需要15分钟才能获得
didEnterRegion
回调A
didExitRegion
回调可能需要15分3秒。

为什么??因为4S在后台每15分钟只扫描一次信标,以节省电池。只有在没有看到信标的3秒钟后,您才会得到一个
didExitRegion
事件

详情请参见此处:

编辑:通过在启用监控的同时启用测距功能,您可以让设备在前台更快地进行检测。在调用
startMonitoringBeaConsincinRegion:
后,只需调用
startTransingBeaConsincinRegion:


较新的iOS设备iPhone 5+具有硬件辅助功能,在不测距时可在后台和前台持续扫描,但此辅助功能的插槽有限。只有前30个注册区域可以访问此快速背景检测,同样,这在4S上不可用。

但应用程序正在前台运行以进行测试。请参阅我编辑的答案。如果您正在监视但未测距,则该问题也适用于前景。