ios中的区域监控7

我应该在我的iOs app中使用区域监控6和7版本。 如果我的应用程序关闭,那么系统应该打开它。 它适用于iOS 6,但在iOS 7中不起作用。我的意思是,如果应用程序在ios 7中关闭,则系统无法打开我的应用程序。

关于关闭应用程序,我的意思是,从内存中删除此应用程序

我用这个代码:

manager = [CLLocationManager new]; manager.delegate = self; [manager startUpdatingLocation]; if ([UIDevice isIOS7OrHigher]) { CLCircularRegion *reg = [[CLCircularRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake(56.844947, 53.208852) radius:20.f identifier:@"reg14132"]; [manager startMonitoringForRegion:reg]; CLCircularRegion *reg1 = [[CLCircularRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake( 56.844158,53.20913) radius:20.f identifier:@"reg14131232"]; [manager startMonitoringForRegion:reg1]; } else { CLRegion *reg = [[CLRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake(56.844947, 53.208852) radius:20.f identifier:@"reg14132"]; [manager startMonitoringForRegion:reg]; CLRegion *reg1 = [[CLRegion alloc] initCircularRegionWithCenter:CLLocationCoordinate2DMake( 56.844158,53.20913) radius:20.f identifier:@"reg14131232"]; [manager startMonitoringForRegion:reg1]; } 

我使用委托方法进行日志记录。 另外,我使用此代码进行测试

 if (launchOptions) { UILocalNotification *note = [UILocalNotification new]; note.alertBody = [NSString stringWithFormat:@"launchOptions = %@", launchOptions]; [[UIApplication sharedApplication] presentLocalNotificationNow:note]; } 

现在这是从iOS7开始的预期行为。 在iOS6及更早版本中,即使您从应用程序切换器手动终止应用程序,当用户进入/退出某个区域时,您仍会收到通知。 iOS7的此行为已更改 。 如果用户已从应用切换器中杀死了该应用,即通过向上滑动您的应用,则他们将不再接收任何基于位置的通知,包括区域监控通知。 Apple官方开发人员论坛中的Apple员工证实了这一点 – 请点击此处链接 。

Apple Dev提供的唯一解决方案是“请提交错误报告,如果此更改对您有用,或者您希望看到不同的内容。”

我个人认为这是一个可怕的决定,因为它违背了背景通知的目的。 您将不得不建议您的用户从iOS6升级,因为他们将继续期望类似的function,并且此更改未在任何地方记录。

编辑 :正如下面的@herz指出的那样,从iOS 7.1开始,后台监控function已经恢复到iOS 6的状态。区域将被监控,即使从应用切换器中杀死,您的应用也会收到通知。