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

时间:2019-01-09 22:43:41

标签: uwp bluetooth-lowenergy

首先,我可以使用BluetoothLEAdvertisementWatcher很好地检测iBeacon在前台的广告。这只是后台触发器无法使用相同的参数。我已经在Package.appxmanifest文件的“声明”选项卡中声明了后台任务,如下所示:

<Extension Category="windows.backgroundTasks" EntryPoint="App.BluetoothBackgroundTask">
        <BackgroundTasks>
            <Task Type="bluetooth" />
        </BackgroundTasks>
</Extension>

这是我注册后台任务的方式:

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();

我知道任务已成功注册,因为在注册之前,我可以找到前一个具有相同名称的任务并取消注册。

即使我也尝试使用来自iBeacon的数据对ManufacturerData进行归档(该过滤器也与前景观察者一起很好地工作)。

因此,在这一点上,我再也想不到我可能做错了。我尝试使用互联网上一些示例中的一些值更改StrengthFilter,但没有成功。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好吧,我发现了问题。问题在于我注册后台任务的方式是针对进程外任务的。这意味着后台任务代码必须位于解决方案内的另一个项目中,而不是像我正在做的那样在同一项目中创建。尚不清楚您是否需要执行此操作,但是文档中的the steps涉及进程外任务。