如果我有一个设备充当接收器并且它连接到iBeacon,如果它连接到另一个iBeacon,同时仍然处理与第一个iBeacon的连接会发生什么(例如,尚未完成运行didEnterRegion方法)?框架是否会自动处理此问题并创建另一种"实例",或者我会遇到问题?
谢谢
如果它们都传输相同的区域(即它们都具有相同的邻近UUID),那么CoreLocation
不会继续发送didEnterRegion
和didExitRegion
方法。
一旦你开始测距一个区域 (这是一个拗口的), locationManager:didRangeBeacons:inRegion:
方法被重复调用, 这是您可以获得连接信标的详细信息的地方.
如果CoreLocation
快速连续检测到两个不同的区域条目事件,则两个线程肯定有可能同时执行委托的didEnterRegion
。所以,是的,你可能会遇到问题。
因此,您应该小心:
-
在该方法中设计代码,使其在并发线程中执行时能够正常运行。
-
在该方法中设计代码,使其快速退出。 任何长时间运行的处理都应在新线程中完成。
虽然问题提到了"连接到另一个iBeacon", 重要的是要了解没有实际的连接 - 信标是仅传输的设备, iOS 将被动地查找它们并根据开始看到它们或不再看到它们发送委托回调方法.