我对iBeacon监控实施有疑问。我在调用locationManager:didDetermineState:forRegion:方法时触发本地通知。当应用程序进入后台时,我根本没有得到任何本地通知,但是当我按下主页按钮激活屏幕时,它们立刻就出现了。根据我离开睡眠的时间,我醒来时总能得到几十个通知。怎么可能?有人有同样的问题吗?
我在iOS 7.1上使用iPhone 5S和5C。本地通知以这种方式设置:
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region{
UILocalNotification *localNot = [[UILocalNotification alloc] init];
localNot.alertBody = [NSString stringWithFormat:@"Region state %d determined", state];
localNot.alertAction = @"Go for it!";
localNot.soundName = UILocalNotificationDefaultSoundName;
localNot.fireDate = nil;
[[UIApplication sharedApplication] presentLocalNotificationNow:localNot];
}
答案 0 :(得分:1)
我怀疑你实际上根本没有进行任何背景检测,而且当你点击主页按钮时看到通知的原因是因为你设置了notifyEntryStateOnDisplay
标志,这会让你得到一个额外的每当屏幕出现时回调到didDetermineState: forRegion:
,对于您正在使用标志设置进行监控的每个区域。
为什么你不在后台获得回调?您可能需要等待最多15分钟才能在后台检测到iBeacon,即使在iOS 7.1上也是如此。请参阅here。