【问题标题】:Connecting to multiple iBeacons at once一次连接到多个 iBeacon
【发布时间】:2015-01-15 19:55:45
【问题描述】:

如果我有一个设备充当接收器并且它连接到一个 iBeacon,如果它连接到另一个 iBeacon 同时仍在处理与第一个 iBeacon 的连接(例如,没有完成 didEnterRegion 方法的运行),会发生什么?框架是否会自动处理此问题并创建另一种“实例”,还是我会遇到问题?

谢谢

【问题讨论】:

  • 你应该没有任何问题。我最近创建了一个原型游戏,我一次连接了 3 个信标。

标签: ios bluetooth ibeacon clbeacon clbeaconregion


【解决方案1】:

我认为,如果它们都在传输相同的区域(即它们都具有相同的邻近 UUID),那么 CoreLocation 将不会继续发送 didEnterRegiondidExitRegion 方法。

一旦您开始对某个区域进行测距(这是一口),locationManager:didRangeBeacons:inRegion: 方法就会被重复调用,您可以在其中获取连接的信标的详细信息。

【讨论】:

    【解决方案2】:

    如果CoreLocation 快速连续检测到两个不同的区域进入事件,那么两个线程肯定有可能同时执行您的委托的didEnterRegion。所以,是的,你可能会遇到问题。

    因此,您应该注意:

    1. 在该方法中设计您的代码,使其在同时线程中执行时能够正常运行。

    2. 在该方法中设计您的代码,使其快速退出。任何长时间运行的处理都应在新线程中完成。

    虽然问题提到“连接到另一个 iBeacon”,但重要的是要了解没有实际连接 - 信标是仅传输设备,iOS 将被动查找它们并根据开始看到它们发送委托回调方法,或不再看到它们。

    【讨论】:

    • 嗯,好吧。如果在设备进入时,我希望设备启动它自己的信标,其详细信息取决于信标,让它保持活动状态 30 秒,然后再次将其关闭。如果设备进入另一个信标的范围内,您认为它会处理启动具有不同细节的第二个信标吗?
    • iOS 不允许您同时传输两个信标。如果您启动第二个,它会禁用第一个。
    • 哦,好吧。感谢您的提醒!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多