2011-06-21 23 views
11

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

根据位置感知PG:

每当用户的当前位置 跨越边界区域,该系统 生成您的应用程序的适当区域事件 。如果您的 应用程序已在运行,则这些事件将直接转至 代表的任何当前位置管理器对象。 如果您的应用程序未运行, 系统会在 后台启动它,以便它可以响应。现在

,这个问题就是:我的应用程序在暂停模式下,一个地区已进入和触发器应交付,这是否事件将被发送“直接”向委托的:

locationManager:didEnterRegion: 

??同样的问题,如果应用程序处于后台模式。换句话说,在暂停和后台模式下是否有任何代码可以用来接收此事件?或者iOS将首先启动该应用程序,然后将该事件直接发送给代理,而不需要BG代码?

+1

难道这个问题不断得到解决的吗?如果不是,我有一个答案。 –

+0

我也想要一些帮助!谢谢! – Mathieu

回答

0

据我所知,区域监控只适用于iPhone4,它基于更换通讯塔的设备。这种方式使用的电池电量少于标准背景位置更新。 确保您启用了适当的背景模式。只要你实现了这个委托,你应该准备好去。

+0

mmmmmm ....导致另一个问题,可能听起来很愚蠢,但区域监视设备是否需要在info.plist中指定?在这种情况下,我的应用程序不会安装在3G上,而此功能不是必需的(它不是基于位置的应用程序)。 –

+0

是的,您仍然需要启用位置跟踪。 –

+0

我认为你是对的。我尝试了很多次,但是我从来没有收到我进入该地区的通知。我会考虑修改info.plist。但是,这会令人伤心地降低我的销量!谢谢。 –

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 ; 
    } 
-1

enter image description here

能够在这样的背景模式 启用定位的更新和背景提取

+0

这些都不是必需的。 –