创作者更新后无法注册GattCharacteristicNotificationTrigger后台任务

14

后台任务的注册代码如下:

var builder = new BackgroundTaskBuilder();
builder.Name = name;
builder.TaskEntryPoint = typeof(BackgroundTaskClass).FullName;
var trigger = new GattCharacteristicNotificationTrigger(characteristic);
builder.SetTrigger(trigger);
btr = builder.Register();

清单中的条目为:

<Extension Category="windows.backgroundTasks" EntryPoint="BackgroundTaskNS.BackgroundTaskClass">
  <BackgroundTasks>
    <Task Type="deviceConnectionChange" />
    <Task Type="bluetooth" />
  </BackgroundTasks>
</Extension>

Register()方法触发了这个错误:

访问被拒绝。

您的应用程序没有权限在后台使用Gatt服务。请确保您已在清单中声明了DeviceCapability和Task类型“bluetooth”,并且应用程序已被授予访问此设备的权限。

这仅在安装了Creators Update的构建机器上,并且目标是Creators Update SDK时才会发生。在我们更新SDK和构建机器之前,这项工作很好。


你是否已添加了以下功能?<Capabilities> <DeviceCapability Name="bluetooth" /> </Capabilities> 正如您所说,在更新SDK和构建机之前,它运行良好。请问您的应用程序之前针对哪个SDK版本? - Amy Peng - MSFT
@FangPeng-MSFT 感谢您的回复。是的,清单中也有这个。我们最初针对的 SDK 版本是周年更新。但在使用该 SDK 升级机器到创作者更新后,出现了另一个错误,因此我们尝试进行迁移。请参见问题,另一位开发人员在我们最初针对创作者更新机器上的周年更新 SDK 时遇到了完全相同的问题。 - Tyress
@StanislavMayorov,不幸的是,我们不再使用后台任务来完成此操作。 - Tyress
3个回答

4
我们曾经在 Windows 10 移动版的 UWP 应用中遇到相同的问题。
我们将 Windows 10 移动版升级到了版本 10.0.15230.0,然后手动在手机上删除了该应用并重新安装。现在它可以正常使用了。 此外,我们安装了最新版本的 SDK,但我认为这一步可以省略。

好知道,但这是一个预览环境,对吧?我们的应用程序针对PC,所以我会查看相应的发布版本。感谢您提醒! - Tyress
@ Tyress 是的,这是预览版(快速环)。 - Stanislav Mayorov

1
在您的清单文件的兼容性部分中添加以下内容:
<Capabilities>
   <DeviceCapability Name="bluetooth" />
</Capabilities>

1
我们在清单和 Tyress 的代码中都有这段代码。这是他的评论 https://dev59.com/gVcP5IYBdhLWcg3w_u4U#DlQdoYgBc1ULPQZFDna0 - Stanislav Mayorov

1

在您的代码示例中没有看到它。可能是因为您需要从包含特征的GattDeviceService上的UX线程调用RequestAccessAsync,然后再注册触发器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接