来自Desktop Bridge的RequestAccessKindAsync

时间:2019-02-08 05:07:04

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

我有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上的弹出通知。它只是为以下代码返回假值

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的请求

1 个答案:

答案 0 :(得分:3)

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

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