iBeacon、蓝牙 BLE 和车队管理
Posted
技术标签:
【中文标题】iBeacon、蓝牙 BLE 和车队管理【英文标题】:iBeacon, Bluetooth BLE and fleet management 【发布时间】:2014-01-11 21:21:35 【问题描述】:据我了解,信标中的次要和主要 id 用于分割(例如,主要用于实体店,次要用于给定商店内的不同位置)。
然后,由于信标不提供丰富的有效负载,我猜这些 id 将被利用以向用户提供足够的信息 - 并且可能通过网络服务。
最后,据说 UUID 是针对整个舰队的。据我了解,一个应用程序(例如零售店)可能只注册一个或几个 UUID(通常一个,更多用于复杂架构或服务过载)。
在应用程序级别,您可以 (1) 在应用程序处于前台时检测信标(具有捕获次要/主要 id 的功能),以及 (2) 在后台检测区域退出/进入 (monitoringForRegion:
) +传递 UILocalNotification 唤醒应用程序(回到 (1))。
现在让我们来处理最终用户。我认为我们可以假设普通人不会在他手中拿着应用程序在前台运行整个零售店,而更有可能让它在后台运行。 因此,情况(2)将是最常见的一种。 但是由于所有发射器将共享相同的 UUID,并且在后台运行的地理定位管理器正在监视链接到 UUID 的区域,因此 didEnter 和 didExit 区域委托方法可能不会被智能触发,具体取决于发射器的范围/配置。最后,并非您想向客户广播的所有基于位置的室内广告都会被接收和捕获。 事实上,我担心只有当客户到达商店位置时才会系统地建议(在后台模式上下文中)。
我错过了什么吗?
【问题讨论】:
【参考方案1】:你基本上是对的。您缺少的一件事是您可以同时监视 20 个不同的区域,并且这些区域可以选择包括主要和/或次要区域。因此,通过智能设计 iBeacon 标识符和区域监视器,您可以在(大)商店中多次触发。
两个警告:当信标首次进入范围(约 50m)时,区域内监控回调会触发。它们也不是同时的。在后台运行应用程序的 iPhone 4S 上,它们最多可能需要 15 分钟,尽管在 iPhone 5 上速度更快。
【讨论】:
【参考方案2】:用不同的方式表达大卫所说的话:
您可以使用 UUID、UUID 和主要值或 UUID + 主要和次要值来定义信标区域。
如果您仅使用 UUID 定义区域,则具有该 UUID 的任何信标都会触发 didEnterRegion 消息,并且操作系统会将具有该 UUID 的所有信标视为同一区域的一部分。
但是,如果您使用 UUID+Major 或 UUID+Major+Minor 创建区域,则只有与这些值匹配的信标才会触发区域通知。您可以拥有 2 个具有相同 UUID 和主要值的信标,它们彼此相邻,而次要值不同。如果您使用特定的 UUID+Major+Minor 值注册了 2 个不同的区域,您将获得关于每个区域的独立进入/退出/测距消息。具有相同 UUID 和主要值但次要值不同的第三个信标不会触发进入/退出通知。
【讨论】:
我想我错过了以下方法:[[CLBeaconRegion alloc] initWithProximityUUID:(NSUUID *) major:(CLBeaconMajorValue) minor:(CLBeaconMinorValue) identifier:(NSString *)]
但是,是的,根据您的商店建设方式设计智能地理地图需要成为整个过程的一部分。以上是关于iBeacon、蓝牙 BLE 和车队管理的主要内容,如果未能解决你的问题,请参考以下文章
如何检查用户的设备是不是支持和授权 iBeacon 使用以及是不是开启了蓝牙?