后台模式下的 iOS 区域监控

Posted

技术标签:

【中文标题】后台模式下的 iOS 区域监控【英文标题】:iOS Region Monitoring in Background Mode 【发布时间】:2011-09-19 19:47:51 【问题描述】:

我在我的应用程序中使用区域监控,我遇到了一个我找不到任何答案的问题。区域监控在后台模式下如何工作?

根据位置感知 PG:

每次用户当前位置 越过边界区域,系统 生成适当的区域事件 为您的应用程序。如果你的 应用程序已经在运行,这些 事件直接发送给代表 任何当前位置管理器对象。 如果您的应用程序没有运行, 系统在 背景,以便它可以响应。

现在,这个问题是:我的应用程序处于暂停模式,已进入区域并应交付触发器,此事件是否会“直接”发送到委托人:

locationManager:didEnterRegion:

??如果应用程序处于后台模式,同样的问题。换句话说,我应该考虑在挂起和后台模式下接收此事件的任何代码吗?还是 ios 会先启动应用程序,然后直接将事件发送给委托,无需任何 BG 代码?

【问题讨论】:

这个问题有没有为您解决?如果没有,我有一个答案。 我也希望得到一些帮助!谢谢! 【参考方案1】:

区域监控如果您在后台,当您进入受监控区域时重新启动您的应用程序。

但是您必须在应用重新启动后再次配置您的位置管理器。

类似的东西 -

if ([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey] ) 
     

        NSLog(@"Relaunched due to location update");

        NSLog(@"app woke up times ---- %d",ForTest);

        NSLog(@"Starting the location manager");
        self.locmanager = [[CLLocationManager alloc] init];
        [self.locmanager startMonitoringForRegion:(CLRegion)*region];
       // self.locmanager.pausesLocationUpdatesAutomatically = YES ;
    

【讨论】:

【参考方案2】:

据我所知,区域监控仅适用于 iPhone4,它基于更改通信塔的设备。这样,它比标准后台位置更新使用更少的电池。 确保您启用了适当的背景模式。只要你实现了那个委托,你就应该准备好了。

【讨论】:

mmmmmm....这会引出另一个问题,听起来可能很傻,但是区域监控设备是否需要在 info.plist 中指定?在这种情况下,我的应用不会安装在 3G 上,而此功能不是必需的(它不是基于位置的应用)。 是的,您仍然需要启用位置跟踪。 我认为你是对的。我尝试了很多次,但从未收到我进入该地区的通知。我会考虑修改 info.plist。然而,这将可悲地降低我的销售额!谢谢。 没什么! Nada!...没有收到任何通知。 我的意思是,如果我要求该位置服务在 plist 中的 BG 中处于活动状态,那么我的应用程序将不会安装在 iPod 和 iPad WiFi 上。任何 ho,我发现我不必...我会尝试,我会保持应用程序运行(甚至不会锁定屏幕)并测试它。我确定该区域是由 iOS 注册的,我通过代码检查了它...让我们看看它是如何工作的...感谢您的关注...【参考方案3】:

启用后台模式 启用位置更新和后台获取

【讨论】:

这些都不是必需的。

以上是关于后台模式下的 iOS 区域监控的主要内容,如果未能解决你的问题,请参考以下文章

iOS 后台模式下的 GPS 监控

iOS 在后台监控/测距信标会消耗大量电池

后台模式下的多点连接

后台模式下的 AVSpeechSynthesizer

后台任务似乎没有被取消/结束

在后台监控期间接收来自信标区域检测的通知