我正在开发一个监视 iBeacon 区域的 iOS 应用程序。当应用程序在后台运行时,我希望它在遇到特定 iBeacon 区域时发送本地通知。一切正常,除了一件事: locationManager: didEnterRegion 显然在用户显示锁定屏幕之前不会被调用。因此,即使设备在应用程序处于后台时通过了 iBeacon 区域,它们也不会在显示锁定屏幕之前收到通知。
我也尝试过使用 startMonitoringForRegion,这种方法很有效——如果应用程序在后台运行,locationManager: didDetermineState: 在设备进入 iBeacon 区域时触发。但是,它只会这样做一次——如果用户随后退出并重新进入 iBeacon 区域,则 locationManager: didDetermineState 不会再次触发。
我正在运行 iPhone 5s 并使用 iPhone 4s 作为 iBeacon,如果这有什么不同的话。
更正:这种现象显然只有在我使用 iPhone 4s 作为客户端时才会发生。如果我使用 5s,通知会立即发送。