我正在开发一个监视 iBeacon 区域的 iOS 应用程序。当应用程序在后台运行时,我希望它在遇到特定的 iBeacon 区域时发送本地通知。一切工作正常,除了一件事:locationManager: didEnterRegion 显然不会被调用,直到用户显示锁定屏幕。因此,即使设备在应用程序处于后台时通过 iBeacon 区域,它们也不会收到通知,直到显示锁定屏幕。
我还尝试过使用 startMonitoringForRegion,并且这种方法有效 - 如果应用程序在后台运行,则 locationManager: didDetermineState: 在设备进入 iBeacon 区域时触发。但是,它只会执行一次 - 如果用户随后退出并重新进入 iBeacon 区域,locationManager: didDetermineState 不会再次触发。
我正在运行 iPhone 5s 并使用 iPhone 4s 作为 iBeacon,如果这有什么区别的话。
更正:显然只有当我使用 iPhone 4s 作为客户端时才会出现这种现象。如果我使用 5s,通知会立即发送。
只是想获取更多信息。您是否已在 CLBeaconRegion 上将 notificationEntryStateOnDisplay 设置为 YES?听起来是这样。
来自文档:
设置为“是”时,当用户打开显示器并且设备已位于该区域内时,位置管理器会发送信标通知。即使您的应用程序未运行,也会发送这些通知。在这种情况下,系统会将您的应用程序启动到后台,以便它可以处理通知。在这两种情况下,位置管理器都会调用其委托对象的 locationManager:didDetermineState:forRegion: 方法。
该属性的默认值为“否”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)