我想通过使用估计信标在用户到达特定楼层时通知用户。为了完成我的任务,我编写了如下代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
self.beaconManager.delegate = self
self.beaconManager.requestAlwaysAuthorization()
let firstFloorRegion = CLBeaconRegion(
proximityUUID: uuid,
major: 2, identifier: "")
firstFloorRegion.notifyOnEntry = true
firstFloorRegion.notifyOnExit = true
firstFloorRegion.notifyEntryStateOnDisplay = true
self.beaconManager.startMonitoring(for: firstFloorRegion)
self.beaconManager.requestState(for: firstFloorRegion)
return true
}
func beaconManager(manager: AnyObject, didDetermineState region: CLBeaconRegion) {
NSLog("didDetermineState Called")
}
private func beaconManager(manager: AnyObject, didEnterRegion region: CLBeaconRegion) {
NSLog("DidEnterRegion Called")
}
private func beaconManager(manager: AnyObject, didExitRegion region: CLBeaconRegion) {
NSLog("didExitRegion Called")
}
的几天,它工作得很好。但是从最近两天开始,它在xcode控制台显示如下错误:
我不明白这是什么意思。我也没有在网上找到任何解决方案。[Client] {"msg":"Fence: onClientEventRegionState, invalid state", "regionState":"0"}.
我注意到iBeacon监控(以及一般的区域监控)在手机重启后需要长达10分钟的时间才能工作。果然,我重新启动了我的手机,当我调用
时,在控制台输出中显示了您的错误。manager.requestState(for: myRegion)
我从来没见过苹果谈论过打电话的负面影响
manager.startMonitoring(for: myRegion)
在已注册的区域上。但是,我并不会在每次应用启动时调用这个函数。相反,我像这样检查被监视的区域:
for monitoredRegion in self.locationManager.monitoredRegions as! Set<CLBeaconRegion> {
print("Monitoring: " + monitoredRegion.proximityUUID.uuidString + " " + monitoredRegion.identifier)
self.locationManager.requestState(for: monitoredRegion)
switch monitoredRegion.proximityUUID.uuidString {
case myRegionUUID.uuidString:
needToMonitorMyRegion = false
default:
break
}
}
当我像这样验证注册时,我没有得到错误。