代码之家  ›  专栏  ›  技术社区  ›  aga

除非在区域的设置中指定了iBeacon的major/minor,否则不会检测到它

  •  0
  • aga  · 技术社区  · 6 年前

    BeaconManager 调用 MonitorNotifier 的方法。小调不及格 监视器通知程序

    val region = Region(uuid.toString(), Identifier.fromUuid(uuid));
    

    我和iOS开发人员谈过,他通过本地iOS API与iBeacon合作,他说iOS上的行为是完全相同的-除非他指定要搜索的确切值,否则主要/次要的都不是通过监控提供的。

    大调/小调可以通过测距来检测,但我还是想继续使用监控(不必深入到细节中去——这样更容易操作) didEnter , didExit didDetermineStateForRegion

    有什么我可能遗漏的吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   davidgyoung    6 年前

    您对beacon监视API如何工作的描述是准确的。它在两个iOS核心定位系统上与Android Beacon库是相同的。

    我是在Android Beacon库上设计这个API的人。它是这样工作的,因为我想让它更容易构建跨平台的应用程序,所以我把它和iOS一样。

    iOS之所以能这样工作,是因为苹果在其原有的Geofence Region API上对其进行了建模,该API还会告诉你何时进入或退出,但并未提供导致进入或退出的具体细节。

    您当然可以争论是否使用不同的API会更好。不幸的是,在使用SDK时,必须接受api的原样。另一种选择是建立你自己的。

    如果您真的想要一个特定的beanocodedetected/beacon not detected事件的事件回调,您可以轻松地在范围api之上构建它。只需跟踪所有可见信标的列表,当找到新的信标时,触发didsterdetectingbeacevent。然后,如果10秒过去了,在一个范围回调中没有看到它,则触发一个didStopDetectingBeacon回调。