我有一个使用iBeacons的iOS应用程序。 我使用区域监视器等来设置信标等。
当我的应用程序被终止并且我进入该区域时,iOS不会唤醒我已终止的应用程序。
请告知。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"applicationDidFinishLaunching");
_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
_locationManager.desiredAccuracy=kCLLocationAccuracyBest;
_locationManager.distanceFilter=1;
_locationManager.pausesLocationUpdatesAutomatically = NO;
CLBeaconRegion *region;
region = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:@"F7826DA6-4FA2-4E98-8024-BC5B71E0893E"] major: 1 minor: 1 identifier: @"Test"];
[region setNotifyEntryStateOnDisplay:YES];
[region setNotifyOnExit:YES];
[region setNotifyOnEntry:YES];
[_locationManager startMonitoringForRegion:region];
[_locationManager startRangingBeaconsInRegion:region];
[_locationManager startUpdatingLocation];
return YES;
}
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region
{
NSLog(@"locationManager didDetermineState INSIDE for %@", region.identifier);
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.soundName = UILocalNotificationDefaultSoundName;
notification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber]+1;
notification.alertBody = @"Awake";
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
{
NSLog(@"locationManager didRangeBeacons %d", beacons.count);
CLBeacon *nearestExhibit = beacons && beacons.count > 0 ? [beacons firstObject] : nil;
if (nearestExhibit &&
(nearestExhibit.proximity == CLProximityImmediate ||
nearestExhibit.proximity == CLProximityNear)
&& nearestExhibit.accuracy != -1
&& nearestExhibit.accuracy <= 10.0) {
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.soundName = UILocalNotificationDefaultSoundName;
notification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber]+1;
notification.alertBody = @"didRangeBeacons";
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}
}
答案 0 :(得分:2)
如果通过&#34;终止&#34;你的意思是你已经使用任务切换器杀死了你的应用程序,然后在iOS 7.0.x上预期你描述的行为。从iOS 7.1开始,行为已经改变,因此您的应用程序会得到通知,就像它从未被终止一样。
我已经在7.1上验证了这个功能。如果您在7.1+上看到不同的内容,请仔细检查它是否能够正常运行而不会终止您的应用。
如果上述方法无效,请发布您的代码,以确保其设置正确。
更新:看到您的代码后,似乎所有内容都已正确设置。确保在安装了aspp的设备上安装了iOS 7.1+,然后: