我想在我的应用程序中使用didEnterRegion方法与RegionBootstrap或MonitorNotifier相关联 . 目前我正在使用RegionBootstrap,但MonitorNotifier可能更适合我的应用程序 .
特别是我将一个iBeacon解析器添加到beaconmanager,然后设置一个区域的“Id1”以查找我的iBeacon的UUID部分并将“Id2”和“Id3”设置为Null . 虽然它们在Region中设置为Null,但我希望能够在输入didEnterRegion方法时解析来自这些位置的信息 . 我正在使用“Id2”(主要)和“Id3”(次要)来提供信标的随机识别参数 .
然后,该信息以及来自UUID的一部分数据将在通知中发送给电话用户 . 测试时,我输入的是didEnterRegion方法,但提供的数据只是与“Id1”的设置区域匹配的数据 . 如果有人可以提供任何见解,我们将不胜感激!
我还希望每10秒钟为同一个iBeacon接收didEnterRegion方法,但是通过测试看来,一旦看到特定的iBeacon,didEnterRegion就不会再次进行后续调用 . 有什么方法可以清除iBeacon被捕获,以便后续捕获可能发生?
我正在尝试尽可能降低电池使用率,并且当使用onNonBeaconLEScan的scanRecord数据来解析信息时,即使将前景和背景时间“BetweenScanPeriod”设置为非常大的东西,我也注意到电池消耗很大 . 我真的只需要看到iBeacon进入该区域并提取信息,然后10秒后再次进行 .
Intended application flow -
-
用户输入具有匹配UUID的信标区域(ID1)
-
来自ID2和ID3的信标信息被解析并通过通知与ID1一起发送给用户
-
10秒后用户收到另一个包含相同数据的通知
-
重复直到人离开区域或iBeacon停止传输
1 回答
获取所需信息的最简单方法是在
didDetermineStateForRegion
回调中启用范围:_1183522_回调将使用默认设置每1100毫秒进行一次,但是如果您希望在第一次访问BeaconManager时使用这样的行,则可以将其更改为10秒:
在电池方面,如果你想每10秒获得一次扫描更新,你就会使用大量电池,因为这意味着要进行几乎不变的蓝牙扫描 . 在后台,您可能希望退出并每5分钟仅执行一次10秒扫描: