i已为信标(DidenterRegion)实现了一个监视功能。如果我使用iPhone,它的效果很好。(应用在前景,背景或仅安装和关闭,但我的iPhone必须使用(屏幕上)。)
如果我的手机处于待机模式(按下顶部按钮),则我没有通知Didenterregion。如果我使用手机(屏幕上),则弹出通知。是否有机会将DIDENTERRIGION事件也处于待机模式?
self->beaconLocationManager = [[CLLocationManager alloc] init];
[self->beaconLocationManager requestAlwaysAuthorization];
self->beaconLocationManager.delegate = self;
beaconLocationManager.allowsBackgroundLocationUpdates = YES;
NSString* beaconIdentName = [NSString stringWithFormat:@"Beacon%d", cnt];
NSUUID *uuid2=[[NSUUID alloc]initWithUUIDString:uuid];
clBeconRegion2=[[CLBeaconRegion alloc]initWithProximityUUID:uuid2 identifier:beaconIdentName];
clBeconRegion2.notifyOnEntry=YES;
clBeconRegion2.notifyEntryStateOnDisplay = NO;
[self->beaconLocationManager startMonitoringForRegion:clBeconRegion2];
[self->beaconLocationManager startRangingBeaconsInRegion:clBeconRegion2];
...
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
NSLog(@"ENTER REGION");
UILocalNotification *localNotification = [[UILocalNotification alloc]init];
localNotification.alertBody = @"FOUNDED";
localNotification.alertAction = [NSString stringWithFormat:@"%@ Connecting...", region.identifier];
[[UIApplication sharedApplication]presentLocalNotificationNow:localNotification];
}
项目设置:推送通知正在启动。位置更新的背景模式,backgroudn fetch,使用蓝牙LE附件。
在iOS 11.1
您等待背景检测多久了?这可能需要长达15分钟。
有关详细信息:http://developer.radiusnetworks.com/2013/11/11/11/11/11/ibeacon-monitoring-in-the-background-and-foreground-foreground.html
如本文所述,您无需将位置更新设置为"是"。另外,您无需指定NotifyOneXit,并将NotifyOntry指定为true。
希望这可能会有所帮助。
问题中描述的行为是不寻常的,并且与我在设备上看到的经验不符。您绝对应该带有一个黑屏的Didenterrindergion通话,我在iOS 7-11.x上有几个应用程序,我看到了这种情况。
所显示的代码看起来不错,我什至不知道即使您愿意,也会引起您描述的行为。必须有其他一些未知变量在手机上引起这种异常行为。我可能会尝试在其他手机上进行测试,验证您看不到此行为,然后使用试用和错误尝试使手机的配置相同,直到您弄清楚丢失的变量是什么。
对不起,我知道这不是一个容易的答案。