信标 Windows 10

Beacons in Windows 10

有什么方法可以在 Windows 10 开发中使用 ibeacons 吗? 由于使用以前版本的 Windows 开发 ibeacons 似乎几乎不可能,我们现在有机会支持这项技术吗?

有没有人开始开发这样的东西?

Microsoft 之前表示它将在 Windows10 中支持应用程序控制的蓝牙 LE 设备扫描。这是 Windows 8.x 中缺少的基本功能和桌面。有关详细信息,请参阅此处:

到目前为止,Windows10 发布的预览版 API 尚未公开此功能。如果当它公开时,这些 API 应该可以构建一个库来检测蓝牙 LE 信标。

编辑:此功能现已在新的 BluetoothLeAdvertisementWatcher class. In anticipation of this capability, we have started work on an open source Windows Beacon Library 中可用,最终将设计用于 Windows 10。这项工作仅处于起步阶段。目前,它只能在 Windows 8.x 设备上与附加的蓝牙扫描加密狗结合使用,这些加密狗可以将扫描结果传递给库进行解析。

如果您有兴趣参与这项工作,请通过上面链接的 GitHub 项目发送消息。

是的,Windows 10 中的 Windows 应用程序通过 Windows.Devices.Bluetooth.Advertisement namespace

支持信标

有关详细信息,请参阅构建讨论 Building Compelling Bluetooth Apps in Windows 10 and the Bluetooth Advertisement Watcher and Publisher 示例。

对于 Windows10 之前的版本,您可以使用托管 C# 库 WinBeacon。该库使用简单的 HCI 层并直接与加密狗对话,而不是使用默认的蓝牙堆栈。

以下是您如何根据 Rob Caplan 的回答中提到的新 Windows 10 个 API 使用 Apple iBeacons:

  1. 开始监视信标:

BluetoothLEAdvertisementWatcher watcher = new BluetoothLEAdvertisementWatcher { ScanningMode = BluetoothLEScanningMode.Active };
watcher.Received += WatcherOnReceived;
</pre>

  1. 处理信标数据 - 请注意,根据您的情况,您可能需要通过存储信标和比较蓝牙地址来区分信标

private void WatcherOnReceived(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs btAdv)
{
    // Optional: distinguish beacons based on the Bluetooth address (btAdv.BluetoothAddress)
    // Check if it's a beacon by Apple
    if (btAdv.Advertisement.ManufacturerData.Any())
    {
        foreach (var manufacturerData in btAdv.Advertisement.ManufacturerData)
        {
            // 0x4C is the ID assigned to Apple by the Bluetooth SIG
            if (manufacturerData.CompanyId == 0x4C)
            {
                // Parse the beacon data according to the Apple iBeacon specification
                // Access it through: var manufacturerDataArry = manufacturerData.Data.ToArray();
            }
        }
    }
}
</pre>

这也是我在开源 Universal Beacon Library 中实现它的方式,它带有完整的示例代码和一个应用程序来试用它:https://github.com/andijakl/universal-beacon