由于位置区域事件,我在后台模式下运行时有一个关于显示UIAlertView的问题。我在这里做了大量类似的问题,并下载了Apple Breadcrumb示例,但它没有尝试显示警报。
我的应用程序在使用此行进入后台模式之前切换到区域监控:
[self.locMan startMonitoringForRegion:targetRegion desiredAccuracy:100];
然后我按照以下方式监控区域进入和退出:
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
NSLog(@"Exited region");
UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Region Boundary Crossed!"
message:@"Exited region"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Show",nil ];
[alertView show];
[alertView release];
}
-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
NSLog(@"Entered region");
UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Region Boundary Crossed!"
message:@"Entered region"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Show",nil ];
[alertView show];
[alertView release];
}
我使用模拟器运行此操作以确认它是否正确切换到区域监视。但是,在iPhone上我无法在后台模式下运行时看到警报,但在重新激活应用程序时会显示所需的警报,看似排队等待。
在我的info.plist文件中,我已将“所需背景模式 - 项目0”设置为“应用寄存器以进行位置更新”和“所需设备功能 - 项目0”到“位置服务”和“项目1”到' GPS”。
非常感谢任何帮助!
答案 0 :(得分:2)
UIAlertView
将无效。
当应用在后台运行时,您应该使用UILocalNotifications
。
另外请注意,如果达到所需的精确度,您将非常快速地耗尽iPhone电池。 在后台运行时,CCLocationManager有一个特殊设置,只有在重大更改时才会调用,这可能不会为您带来足够的响应。