Windows UWP:单进程后台蓝牙任务未触发



我正在将蓝牙 LE 注册为分组后台任务,但我不确定为什么后台任务甚至没有触发。当我在Powershell中检查"Get-AppBackgroundTask"时,它似乎已正确注册。这就是我注册任务的方式:

Guid bleServiceGuid = new Guid("xxxxxx-xxxx-xxxx-xxx-xxxxxx");
private void RegisterGroupedBackgroundTask(){
BluetoothLEAdvertisementWatcherTrigger bleTrigger = new 
BluetoothLEAdvertisementWatcherTrigger(); bleTrigger.AdvertisementFilter.Advertisement.ServiceUuids.Add(bleServiceGuid);
bleTrigger.SignalStrengthFilter.InRangeThresholdInDBm = -65;
bleTrigger.SignalStrengthFilter.OutOfRangeThresholdInDBm = -75;
bleTrigger.SignalStrengthFilter.OutOfRangeTimeout = TimeSpan.FromMilliseconds(2000);
bleTrigger.SignalStrengthFilter.SamplingInterval = TimeSpan.FromSeconds(1);
var bluetoothLeTask = BackgroundTasksConfiguration.RegisterBackgroundTask(null,
BackgroundTasksConfiguration.GroupedBackgroundTaskName,
bleTrigger,
null,
group);
}

问题是从未到达后台任务入口点:

BackgroundTaskDeferral deferral = null;
IBackgroundTaskInstance _taskInstance = null;
public void Run(IBackgroundTaskInstance taskInstance){
deferral = taskInstance.GetDeferral();
_taskInstance = taskInstance;
var details = _taskInstance.TriggerDetails as Windows.Devices.Bluetooth.Background.BluetoothLEAdvertisementWatcherTriggerDetails; 
if (details != null){
//Get rssi values....
}    
}

当外部外围设备使用范围内的服务 GUID 进行通告时,如何触发蓝牙 le 后台任务?

让它工作...出于某种原因,如果我只是按广告服务 GUID 进行过滤,应用程序不喜欢它。我必须按制造商数据过滤要触发的触发器:

bleTrigger = new BluetoothLEAdvertisementWatcherTrigger();
bleTrigger.AdvertisementFilter.Advertisement.ManufacturerData.Add(new BluetoothLEManufacturerData()
{
CompanyId = 76 // Apple Bluetooth SIG 
});

最新更新