首先,我可以使用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,但没有成功。
有什么想法吗?
答案 0 :(得分:1)
好吧,我发现了问题。问题在于我注册后台任务的方式是针对进程外任务的。这意味着后台任务代码必须位于解决方案内的另一个项目中,而不是像我正在做的那样在同一项目中创建。尚不清楚您是否需要执行此操作,但是文档中的the steps涉及进程外任务。