gpt4 book ai didi

ios - 位置管理器 :didExitRegion: a big delay of firing when transmitting is stopped

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:40:55 26 4
gpt4 key购买 nike

我正在开发监视 CLBeaconRegion 并在用户进入/退出区域时向用户显示本地通知的应用程序。一切正常,但在测试时我发现如果我进入区域,收到 locationManager:didEnterRegion: 的调用,然后关闭发射信标,我只在大约 2 分钟内收到 locationManager:didExitRegion: 的调用。

谁能帮助避免这种延迟?

传输设备是装有 iOS 8.3 的 iPhone 4s。接收设备为iOS 7.1.2的iPhone 4s

- (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 回调。 didExitRegion 回调可能需要 15 分 3 秒。

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

详情请看这里:http://developer.radiusnetworks.com/2014/03/12/ios7-1-background-detection-times.html

编辑:您可以在启用监控的同时启用测距,从而使您的设备在前台更快地检测到。只需在调用 startMonitoringBeaconsInRegion:

之后调用 startRangingBeaconsInRegion:

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

关于ios - 位置管理器 :didExitRegion: a big delay of firing when transmitting is stopped,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29916022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com