无法使用UWP启动蓝牙LE后台触发器

无法使用UWP启动蓝牙LE后台触发器,uwp,bluetooth-lowenergy,Uwp,Bluetooth Lowenergy,首先,我可以用蓝牙铅垂饰Twatcher在前台完美地检测到我的iBeacon广告。只是背景的触发器没有使用相同的参数。我已经在Package.appxmanifest文件的声明选项卡中声明了后台任务,如下所示: <Extension Category="windows.backgroundTasks" EntryPoint="App.BluetoothBackgroundTask"> <BackgroundTasks> <Ta

首先,我可以用
蓝牙铅垂饰Twatcher
在前台完美地检测到我的iBeacon广告。只是背景的触发器没有使用相同的参数。我已经在Package.appxmanifest文件的声明选项卡中声明了后台任务,如下所示:

<Extension Category="windows.backgroundTasks" EntryPoint="App.BluetoothBackgroundTask">
        <BackgroundTasks>
            <Task Type="bluetooth" />
        </BackgroundTasks>
</Extension>
我知道该任务已成功注册,因为在注册之前,我可以找到具有相同名称的上一个任务并将其注销

甚至我也尝试过用来自iBeacon的数据对ManufacturerData进行文件归档(该过滤器在前台观察器中也运行得很好)

所以,在这一点上,我不能再认为我可能做错了。我试着用互联网上的几个例子中的一些值来改变StrengthFilter,但没有成功


有什么想法吗?

嗯,我发现了问题所在。问题是,我注册后台任务的方式是用于进程外任务。这意味着后台任务代码必须在解决方案中的另一个项目中,而不是像我所做的那样在同一个项目中创建。您是否需要这样做还不太清楚,但在进程外任务的文档中提到了这一点。

您的代码看起来是正确的,我认为您可以参考包含后台发布者和观察者的示例。@NicoZhu MSFT感谢您的回答,我再次检查了文档并找到了解决方案。
BluetoothLEAdvertisementWatcherTrigger trigger = new BluetoothLEAdvertisementWatcherTrigger();
trigger.AdvertisementFilter.Advertisement.ManufacturerData.Add(
    new BluetoothLEManufacturerData() {
        CompanyId = 0x4C
    }
);

BackgroundTaskBuilder builder = new BackgroundTaskBuilder {
    Name = "BluetoothWatcher",
    TaskEntryPoint = typeof(BluetoothBackgroundTask).FullName
};
builder.SetTrigger(trigger);
builder.Register();