【发布时间】:2016-05-02 21:05:49
【问题描述】:
我在 SWIFT 中有一个程序,它检测一个或多个信标何时超出范围并基于
它会执行一些操作,例如将一些数据保存到数据库等。一切正常,但是我确实得到了很多
误报的方式是“didExitRegion”被解雇,几秒钟后“didEnterRegion”在我没有被移动等情况下被解雇。
我知道这与信标的调整及其质量有很大关系,但此时我想出了一个替代解决方案。
所以我决定使用 NSTimer 来查看我是否真的不在范围内,还是我得到的只是误报?
所以当 didExitRegion 被解雇时,我启动 NSTimer 60 秒。如果 60 秒结束并且 didEnterRegion 没有起火,那么我知道
我真的超出范围并执行我需要做的任何数据保存。
否则,如果在 60 秒内调用了 didEnterRegion,那么我将假设它是误报并使
nstimer 并且什么都不做。
只要我使用一个信标,一切都会很好。我遇到的计时器问题是多个信标超出范围时。 假设第一个信标超出范围,所以 didExitRegion 着火并启动 NSTimer 假设 20 秒后第二个信标不在范围内,并且 didExitRegion 再次被触发,并且该信标再次启动 NSTimer。 现在我的 NSTimer 完全不同步,当时,事情不正常,NSTimer 在 60 秒时连续启动 起来等等。
所以我的问题是这个解决方案的工作是什么?在无效之前再次调用时,如何使我的 nstimer 保持同步? 有没有更好的方法来解决这个问题?同样,我知道质量更好的信标可以提供帮助,但目前这不是我的选择。
【问题讨论】:
标签: ios swift nstimer core-location ibeacon