我有Win32桌面桥应用程序,它使用后台任务接收来自WNS的推送通知。我在C++-WinRT上使用UWP后台任务API
我希望能够接收推送通知,即使在操作系统处于睡眠状态,以便它醒来,应用程序处理推送通知。默认情况下,OS不会醒来。它只在手动更改System->Battery->See which apps are affecting your battery life->Click、我的应用程序->Uncheck Let Windows decide选项中的设置值(默认情况下总是选中)并检查Allow the app to run background taks之后才这样做。现在我想做的是手工编写代码,以获得更好的用户体验。
RequestAccessKindAsync API允许用户通过向用户显示弹出通知来更改上述设置值,我可以在UWP C#示例应用程序中没有任何问题地这样做。但是相同的代码不会显示来自C++-WinRT桌面桥的pop通知。它只返回下面代码的假值。
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:从桌面布里奇这里启动此API的请求
发布于 2019-02-13 00:48:49
这是一个缺失的特征。当我们在几个版本前设计这个API时,我们并没有考虑桌面桥接应用程序会调用它--但是显然有一个支持它的用例。我已经将这一差距通知了团队,但我也鼓励您在这里记录一个功能请求:https://wpdev.uservoice.com/
有两种可能的解决办法:
(1)您可以在桌面桥接应用程序中添加一个虚拟/空UWP前台应用程序。然后,您可以在启动时启动它,并从那里请求后台访问。这将是有点难看,但你可以让它看起来像一个飞溅屏幕:-) (2)你可以指示用户进入设置应用程序设置为始终允许你的应用程序。你可以帮助他们这样做的深链接到电池节省设置,但他们仍然需要手动翻转开关。
https://stackoverflow.com/questions/54586268
复制相似问题