是否可以在 iBeacon 上写入数据

Posted

技术标签:

【中文标题】是否可以在 iBeacon 上写入数据【英文标题】:Is it possible to write data on iBeacon 【发布时间】:2016-12-19 11:30:05 【问题描述】:

我将在我的应用程序中使用 iBeacon。打开应用程序时,是否可以在其上写入值。如果是,我该如何实现。通过使用 coreBluetooth,我可以做到这一点。

NSData *bytes = [@"0xDE" dataUsingEncoding:NSUTF8StringEncoding];
[peripheral writeValue:bytes forCharacteristic:characteristic
        type:CBCharacteristicWriteWithResponse];

【问题讨论】:

如果您详细阅读 iBeacon,您会发现所有 iBeacon 都有一些静态 ID,通过这些 ID 可以识别特定的信标。您可以使用该 ID 来识别和存储该信标的数据。为了更方便,请遵循这个 sdk:developer.estimote.com/ibeacon/tutorial/part-1-setting-up 如果 iBeacon 允许“经典 BLE”模式,并且它具有可写特性,是的,您可以。 【参考方案1】:

一个 iBeacon 只宣传 3 个值;一个 UUID、一个“主要”值和一个“次要”值。

信标通常具有一些 BLE 服务和特性,用于配置这些和其他参数(例如广告速率和传输功率),但这超出了 iBeacon 规范;每个供应商都有自己的服务和特点。

【讨论】:

这是正确的。除此之外,虽然信标制造商通常拥有自定义蓝牙 GATT 服务来将这些配置值写入信标,但并非所有信标都具有此功能。有些信标具有不可配置的硬编码值,有些可以使用蓝牙连接以外的其他机制进行配置。【参考方案2】:

首先你需要了解iBeacon(蓝牙信标)和普通蓝牙设备的区别。 (你可以谷歌一下)

你调用的CoreBluetooth函数是altering values on connected bluetooth peripheral,关键字是connected bluetooth peripheral,而iBeacon不是。

蓝牙外围设备包括 GATT 服务器,它允许蓝牙中心连接和访问其服务和特性。

虽然 iBeacon 只宣传 UUID、major、minor、RSSI。没有 GATT 服务器,没有服务或特征。

总而言之,没有简单的方法(仅使用蓝牙)来更改普通信标上的值('UUID'、'major'、'minor')。

但一些信标制造商确实提供了一些类似的解决方案,他们为信标添加了额外的硬件(网络硬)。并为信标所有者提供远程控制信标的门户网站。

【讨论】:

【参考方案3】:

我最近开发了一个可以修改蓝牙设备iBeacon数据的应用。

蓝牙规范中没有标准的方法供你编写 iBeacon 数据。

这意味着你必须使用自定义命令,因为你和蓝牙固件开发者都同意这样做,无论什么样的数据通信,不同的供应商有不同的方法,应用程序开发者和蓝牙固件开发者都同意,这个够了!

【讨论】:

以上是关于是否可以在 iBeacon 上写入数据的主要内容,如果未能解决你的问题,请参考以下文章

iBeacon:是不是可以从传输中发送小数据进行跟踪?

iBeacon 设备扫描和检索次要、主要、uuid 参数

iBeacon 可以有数据负载吗

iBeacon到底是啥定位技术?

我们可以在 iOS 上检测到非 iBeacon 信标吗?

后台特定 iBeacon 检测