UWP BluetoothLEAdvertisementWatcherTrigger未使用服务uuid筛选器触发

UWP BluetoothLEAdvertisementWatcherTrigger未使用服务uuid筛选器触发,uwp,bluetooth,bluetooth-lowenergy,Uwp,Bluetooth,Bluetooth Lowenergy,正在注册具有触发器的进程内后台任务: var trigger = new BluetoothLEAdvertisementWatcherTrigger(); trigger.AdvertisementFilter.Advertisement.ServiceUuids.Add(GattServiceUuids.CyclingSpeedAndCadence); ... more background code left out for simplicity ... 不幸的是,当我在不启动,而是在

正在注册具有触发器的进程内后台任务:

var trigger = new BluetoothLEAdvertisementWatcherTrigger();
trigger.AdvertisementFilter.Advertisement.ServiceUuids.Add(GattServiceUuids.CyclingSpeedAndCadence);

... more background code left out for simplicity ...
不幸的是,当我在
不启动,而是在启动时调试我的代码时,
选项中运行应用程序时,这从未触发

每当我与广告观察者一起正常运行应用程序时,我都会收到此信息(因此我筛选的服务ID是正确的):

很遗憾,我无法在筛选器中使用公司ID,因为广告中的公司为空

你知道为什么这不会触发吗?文档中只提到了公司过滤器,但我不能使用它

更新2019-10-10:

澄清一下:我可以完美地与蓝牙设备通信

让我试着解释一下我想要什么。每当应用程序检测到它没有运行(使用后台任务),但看到设备已联机时,它就会显示一条消息:是否要启动应用程序?这样可以提醒用户启动配套应用程序


基于没有公司的服务ID的后台广告观察器似乎不起作用(尽管如果我正确理解蓝牙标准/文档,这应该是可能的)。

根据蓝牙规范,制造商数据不是强制性的。在我看来,这并不重要

@geertvanhorrik,你提到前景观察者工作正常。我怀疑问题在于“不启动,但在代码启动时调试”选项。为了确认这一点,是否可以使用任何蓝牙协议包分析器(如wireshark)来验证BackgroundWatcher是否正在接收数据


至少可以确认Backgroundwatcher正在接收数据。

我使用官方代码示例进行了测试,效果良好,请参考此内容并创建一个进程外后台任务。谢谢。您是否使用带有ManufacturerData或服务guid的示例代码进行了检查?当然,我使用了默认的
ManufacturerData=0x1234
@NicoZhu MSFT刚刚再次检查了此代码。这个例子对我不起作用。如果从示例中删除ManufacturerData,而是添加一个服务uuid过滤器(在我的例子中是SpeedAndCadence),那么它不会显示后台线程示例中的数据。前景观察者工作良好。请注意,ManufacturerData=[]用于我的设备,因此我无法使用制造商筛选器。我将在没有“请勿启动”模式的情况下尝试。还尝试检查蓝牙通信量,但无法让它在Wireshark中显示任何内容(而网络设备工作正常)。问题是:它似乎与制造商的筛选器配合良好,因此它似乎是windows中缺少的功能/错误?如果Wireshark在foregroundwatcher中显示蓝牙活动,而在backgroundwatcher中不显示,那么可能是因为蓝牙收音机在后台运行时没有接收数据。我无法让wireshark在使用“蓝牙网络连接”时显示任何蓝牙活动。还尝试了蓝牙npcap,但似乎没有改变任何事情。它是我的surface笔记本电脑上的一个蓝牙适配器,我需要一个明确的单独的适配器来测试它吗?不需要明确的设置。在您的surface笔记本电脑上执行Wireshark,并将其配置为从连接到您的机器的蓝牙适配器捕获数据包
Local name:  'mydevice1234'
Company:     ''
Service ids: '00001816-0000-1000-8000-00805f9b34fb;0000180f-0000-1000-8000-00805f9b34fb'