请考虑一下:
>我有一组自定义信标对象(从API中使用)
>对于每个自定义信标对象,我创建一个CLBeaconRegion实例,如下所示:
let beaconRegion = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: region.uuID)!,IDentifIEr: region.uuID)beaconRegion.notifyOnEntry = truebeaconRegion.notifyOnExit = truebeaconRegion.notifyEntryStateOndisplay = true
>然后我将该实例传递给CLLocationManager的startMonitoringForRegion方法,如下所示:
locationManager.startMonitoringForRegion(beaconRegion)
当循环通过CLLocationManager的monitoredRegions方法响应时,我获得了我期望的所有信标区域,包括regionState 2(外部)
>除此之外,我已经添加了:
NSLocationAlwaysUsageDescription
到应用程序的Info.pList
locationManager.requestAlwaysAuthorization()
到VIEwController的vIEwDIDLoad方法
尽管如此,只有当我处于我开始监控的前三个信标区域中的任何一个区域时,dIDEnterRegion和dIDExitRegion才会触发.
谢谢,
Piotr Czarnoleski
解决方法 iOS设备具有有限数量的用于信标检测的硬件加速槽.这些插槽遵循蓝牙芯片,以在信标区域模式匹配时通知 *** 作系统.当使用这些插槽时,背景检测非常快 – 区域输入事件可以在范围内的信标传输的第二或两个内发生.但是,如果这些插槽耗尽,则 *** 作系统必须回退到完全扫描以找到其余区域. *** 作系统限制这些节省电池.证据表明它们大约每15分钟发生一次.这意味着,如果您的应用程序监控的任何未获得硬件加速槽的区域在匹配的信标进入范围后最多可能需要15分钟(尽管平均而言通常需要更少的时间 – 7.5分钟会是平均值)
有多少硬件插槽?这是未记录的,可能因iOS设备型号而异.但是实验表明它可能大约为30.这是在手机上的所有应用程序中,与每个应用程序的20个区域限制完全无关.注册区域的第一批应用程序是第一批获得插槽的应用程序.
在这里阅读更多:https://developer.radiusnetworks.com/2015/04/21/max-beacon-regions-ios.html
您可能正在遇到上述情况,并且您的手机上只有3个硬件加速插槽可用于您的应用.要测试这个理论,你可以:
>卸载您期望的其他应用程序可能正在注册信标区域,这应该可以释放更多的插槽.>等待最多15分钟,看看你是否在后台检测到其他地区.
@H_419_60@ 总结以上是内存溢出为你收集整理的ios – 在后台监控iBeacon信标全部内容,希望文章能够帮你解决ios – 在后台监控iBeacon信标所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)