gpt4 book ai didi

ios - 在 iOS 设备上从 BLE 获取制造商数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:59:35 25 4
gpt4 key购买 nike

在我的 Xamarin.Android 应用中,我可以使用以下代码从 BLE 读取制造商数据:

public class CustomScanCallback : ScanCallback
{
public override void OnScanResult([GeneratedEnum] ScanCallbackType callbackType, ScanResult result)
{
base.OnScanResult(callbackType, result);

if (result.ScanRecord.ManufacturerSpecificData != null)
{
var dataByteResult = result.ScanRecord.GetManufacturerSpecificData(0xFFFE);

if (dataByteResult != null)
{
Guid dataResult = new Guid(dataByteResult);

if (dataResult.ToString() == "myUuid")
{
// found the uuid from my UWP app
}
}
}
}
}

如何在 Xamarin.iOS 上执行相同的操作?当发现外围设备时,我有一个回调:

_cbCentralManager.DiscoveredPeripheral += CBCentralManager_DiscoveredPeripheral;

private void CBCentralManager_DiscoveredPeripheral(object sender, CBDiscoveredPeripheralEventArgs e)
{
// how to find "myUuid" ?
}

并尝试了很多方法来找到它,但找不到。 Swift/Objective-C 中的答案也会有所帮助,因为我可以将其翻译成 C#。

编辑

我用关键字 CBAdvertisementDataManufacturerDataKey 查看了广告数据参数并找到了值(value):

<06000109 2002aa4e 7e54b91f 2212c398 74eb0fe9 9fc3ecce 4ce76d8f aa>

看起来是十六进制编码的,但是别以为我找的是我的uuid...

最佳答案

十六进制代码是 NSData你可以看到它来自 these文档。要将其转换为字符串,我将使用以下内容。

     NSData data = NSData.FromData(theValueFromDictionary);
string uuidString = data.ToString();
//Try this if the other line doesn't work. But string encoding should be UTF-16 (the default) or UTF-8
//string uuidString = data.ToString(NSStringEncoding.UTF8);

如果这不是您想要的字符串,那么您可以使用您正在使用的编码类型,但根据我的经验,苹果通常使用 UTF-8 在数据和字符串之间切换。 .

也许 UUID 是这个字典中的另一个键。看看所有可用的键here

关于ios - 在 iOS 设备上从 BLE 获取制造商数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55105741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com