我正在开发一款iPhone应用程序,当用户进入iBeacon区域时会通知用户。
我对此有几个问题:
来自文件:
监控在iBeacon区域输入时启动app 监测。
但行为是:
仅在手机被唤醒时才有效,即打开显示屏时。 但是当应用程序没有运行并且显示器关闭时,没有任何事情发生同样的情况,当显示器打开并且用户进入信标区域时。
当用户进入/退出该区域时,是否可以启动应用程序,即使显示器处于关闭或打开状态时,不仅仅是在电话被唤醒时?
我查看了这个iBeacon Notification when the app is not running链接,这表明它是可能的。我正在监视iBeacon但无法获得预期的行为。我错过了什么?
感谢任何帮助。
答案 0 :(得分:4)
是的,您可以在后台进入某个地区时收到通知。只要:
就会发生这种情况现在了解它的表现有点微不足道。
在我的公司,我们已经对此进行了大量研究。事实上,我的一位同事写了一篇关于这种行为的博文:iBeacon Monitoring in the Background and Foreground。
出乎意料的是在后台获取didEnterRegion需要多长时间:
Condition Max time to detect a region change
-------------------------------------------- ----------------------------------
Phone awakened,notifyEntryStateOnDisplay=YES 1 second
Phone awakened, notifyEntryStateOnDisplay=NO NEVER
UIBackgroundModes=location ON up to 15 minutes
UIBackgroundModes=location OFF up to 15 minutes
答案 1 :(得分:0)
您可以在CLBeaconRegion
上设置一些属性,以便在您的应用收到有关该区域相关用户位置更改的通知时进行更改:
notifyOnEntry
- 当用户进入区域locationManager:didEnterRegion:
通知您
notifyOnExit
- 当用户退出该区域时,系统会通过locationManager:didExitRegion:
通知您notifyEntryStateOnDisplay
- 当用户唤醒设备的屏幕并且他们在区域内时,您会收到locationManager:didDetermineState:forRegion:
的通知请注意,您必须在再次调用didEnterRegion:
之前完全退出某个区域,有时可能需要一分钟或更长时间才能让设备正确注册您已离开某个区域。因为信标可以播放长达30或50米(或者更多),你要么必须远离信标离开一个区域或以其他方式关闭信标,等待一分钟左右,然后返回触发改变。