我正在开发一个应用,当用户进入特定区域并退出该区域时,该应用会显示通知。 我正在为我的应用程序使用3个信标。当用户处于第二和第三信标之间时,我需要通知用户他在场所内,并且当用户越过第一个信标时,我需要通知他他在场所之外。 在某种程度上,我可以通过使用信标精度属性作为用户设备和所有三个信标之间的距离来实现这一点,但是向用户显示警报的时间大约是30秒到1分钟,但是它应该是即时的。
答案 0 :(得分:0)
您在这里要问的问题有两个。将尝试单独解决它们。
当您处于2个信标之间时通知 - 使用两个信标的“准确度”和/或“接近度”属性应该非常简单。 如果您需要更近的估计,请使用距离。伪代码 -
beaconsRanged:(CLBeacon)beacon{
if(beacon==BEACON1 && beacon.accuracy > requiredDistanceForBkn1)
"BEACON 1 IN REQUIRED RANGE"
if(beacon==BEACON2 && beacon.accuracy > requiredDistanceForBkn2)
"BEACON 2 IN REQUIRED RANGE"
}
只要满足这两个条件,您就完成了。如果您不想进行微调,请使用接近度。
代码提示 - 当满足上述每个条件时,您可以引发LocalNotifications,并有一个单独的类来观察通知并执行所需的操作。
满足条件时提醒警报的时间 - 确保您在主线程上发出警报。如果你在任何其他线程上这样做,则需要花费很多时间。我尝试了同样的事情,它只需要大约一秒钟来提出一个简单的警报。 我知道这样做的一种方式 -
dispatch_async(dispatch_get_main_queue(), ^{
//code
}