Не удается заставить работать фоновый триггер Bluetooth LE с UWP - PullRequest
0 голосов
/ 10 января 2019

Прежде всего, я могу прекрасно определить рекламу своего iBeacon на переднем плане с BluetoothLEAdvertisementWatcher. Просто триггер для фона не работает с такими же параметрами. Я объявил фоновую задачу на вкладке «Объявления» в файле 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 (этот фильтр тоже хорошо работал с наблюдателем переднего плана).

Итак, на данный момент, я не могу больше думать о том, что я могу делать неправильно. Я попытался изменить StrengthFilter с некоторыми значениями из нескольких примеров в Интернете, но безуспешно.

Есть идеи?

1 Ответ

0 голосов
/ 14 января 2019

Ну, я нашел проблему. Проблема в том, что я регистрирую фоновые задачи для задач, не входящих в процесс. Это означает, что код фоновой задачи должен находиться в другом проекте внутри решения, а не создаваться в том же проекте, что и я. Не очень понятно, что вам нужно это сделать, но шаги в документации для внепроцессных задач упоминают об этом.

...