【问题标题】:RequestAccessKindAsync from Desktop Bridge来自桌面桥的 RequestAccessKindAsync
【发布时间】:2019-07-02 07:59:35
【问题描述】:

我有 Win32 桌面桥应用程序,它使用后台任务接收来自 WNS 的推送通知。我在 C++-WinRT 上使用 UWP 后台任务 API

我希望即使在操作系统处于睡眠状态时也能够接收推送通知,以便它唤醒并且应用程序处理推送通知。默认情况下,操作系统不会唤醒。它只有在手动更改System->Battery->See which apps are affecting your battery life->单击我的应用程序->取消选中Let Windows decide选项(默认情况下始终选中)并检查Allow the app to run background taks后才会这样做。现在我想做的是手动编写代码以获得更好的用户体验。

RequestAccessKindAsync API 允许用户通过向用户显示弹出通知来更改上述设置值,我可以在 UWP C# 示例应用程序中毫无问题地做到这一点。但相同的代码不会显示来自我的桌面桥接 C++-WinRT 的弹出通知。它只是为下面的代码返回 false 值

auto result = co_await BackgroundExecutionManager::RequestAccessKindAsync(BackgroundAccessRequestKind::AlwaysAllowed, 
    L"App needs to use background to catch push notifications while device is in sleep");

任何人都可以确认RequestAccessKindAsync API 在桌面桥上工作吗?如果不是,那么我如何确保操作系统和应用程序在收到推送通知时始终能够从睡眠中唤醒?

UPD:从桌面桥 here 提出启用此 API 的请求

【问题讨论】:

标签: c# uwp push-notification desktop-bridge c++-winrt


【解决方案1】:

这是一个缺失的功能。当我们在几个版本前设计这个 API 时,我们没有考虑桌面桥应用程序会调用它 - 但显然有一个支持这个的用例。我已将这一差距通知团队,但我也鼓励您在此处记录功能请求:https://wpdev.uservoice.com/

两种可能的解决方法:
(1) 您可以向桌面桥应用程序添加一个虚拟/空 UWP 前台应用程序。然后,您可以在启动时启动它并从那里请求后台访问。这会有点难看,但你可以让它看起来像一个闪屏:-) (2) 您可以指示用户进入设置应用程序将您的应用程序设置为始终允许。您可以通过指向省电设置的深层链接帮助他们做到这一点,但他们仍需要手动切换开关。

【讨论】:

  • 我之前尝试过使用 (1) 选项。我将虚拟 UWP 应用程序作为第二个应用程序添加到桌面桥的清单中,它解决了我的问题。但我无法将包含 2 个应用程序的应用程序包上传到商店。您认为还有另一种方法可以将虚拟 UWP 添加到桌面桥吗?
  • 您是否为 appxmanifest 中的第二个应用设置了 AppListEntry="none"(这样它就不会显示在应用列表中)?有了它,您应该能够提交到商店。如果你得到一个 WACK 错误忽略它,他们应该承认你的应用程序。如果他们不这样做,请给我发邮件 (swick [@] microsoft.com),我会帮助您获得批准。
  • 我将<uap:VisualElements AppListEntry="none" 添加到第二个应用程序中,可以看到安装了单个桌面应用程序(UWP 之前也有)。但仍然收到The Microsoft Store does not support a package containing more than one applications 错误。将尝试将其上传到商店。
  • 是的,忽略该消息。声明“runFullTrust”的应用程序不受该多应用程序包规则的约束。
  • 在将我的应用程序上传到商店时,我收到以下错误xxx.appx specifies a headless app. You don't have permission to create a headless app. Please update AppListEntry="none" in the AppxManifest file and also ensure you have the waiver "HeadlessAppBypass" associated to this app. 你知道我是否有任何方法可以解决此错误?
猜你喜欢
  • 2018-03-04
  • 2018-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2017-05-08
相关资源
最近更新 更多