我应该在我的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];
}
答案 0 :(得分:8)
现在这是从iOS7开始的预期行为。在iOS6及更早版本中,即使您从应用程序切换器手动终止应用程序,当用户进入/退出某个区域时,您仍会收到通知。 iOS7的此行为已已更改。如果用户已从应用切换器中杀死了该应用,即通过向上滑动您的应用,则他们将不再接收任何基于位置的通知,包括区域监控通知。 Apple官方开发人员论坛中的Apple员工证实了这一点 - link here。
Apple Dev提供的唯一解决方案是“请提交错误报告,如果此更改对您有用,或者您希望看到不同的内容。”
我个人认为这是一个糟糕的决定,因为它违背了背景通知的目的。您将不得不建议您的用户从iOS6升级,因为他们将继续期望类似的功能,并且此更改未在任何地方记录。
编辑:正如下面的@herz指出的那样,从iOS 7.1开始,后台监控功能已恢复到iOS 6的状态。区域将受到监控,您的应用甚至会收到通知当它从应用程序切换器中被杀死时。