【发布时间】: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 的请求
【问题讨论】:
-
While packaged apps can register background tasks, only fully UWP apps can run as a background task. 因此,如果您从桌面应用程序调用此 API,它将无法正常工作。
-
@XavierXie-MSFT 你想说我可以从我的后台任务中运行这个 API 吗?我试过这样做并得到相同的结果
标签: c# uwp push-notification desktop-bridge c++-winrt