目前在我的应用程序中,我正在注册一个onActivated侦听器,以便执行并检查我的共享活动,如下所示:
Window.Current.Activated += Current_Activated;
使用如下方法检查激活状态:
private async void Current_Activated(object sender, Windows.UI.Core.WindowActivatedEventArgs e)
{
if (e.WindowActivationState == CoreWindowActivationState.Deactivated)
{
}
else
{} }
现在我想从后台任务的通知中实现激活。点击通知当前正在打开应用程序,如果已经打开,则将其带到前台。这是标准行为。现在我想通过通知执行一些激活代码,但我的方法从未被调用,我不完全理解微软在线材料,因为它看起来相对简单。
我将监听器注册为:
(Application.Current as App).Activated = new EventHandler<IActivatedEventArgs>(App_Activated);
和永远不会被调用的方法是这样的:
private void App_Activated(object sender, IActivatedEventArgs e)
{ }
这两个相互冲突吗?我可以做些什么来实现通知激活到我现有的方法?
我已经通读了这个和更多的页面:https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/07/08/quickstart-sending-a-local-toast-notification-and-handling-activations-from-it-windows-10/
甚至从我下载的测试应用程序,我真的不知道需要做什么。除此之外,我不需要从通知传递到主活动的任何信息。只需打开它并执行一个刷新页面的命令,但仅限于通知激活。
您应该在App.xaml.cs
中重写OnActivated(IActivatedEventArgs args)
方法,并检查args.Kind
属性是否为ActivationKind.ToastNotification
。
你可以在这里找到更多关于处理UWP应用程序激活的信息
正如Marian所说,您需要在App.xaml.cs
类中重写OnActivated
方法。OnActivated
方法在单击toast时被调用,它包含toast参数,这样您就知道单击了哪个toast。注意你必须在OnActivated中执行与onlaunching 相同的Frame初始化,因为如果用户在你的应用程序关闭时点击toast,只有OnActivated方法会被调用- onlaunching方法不会被调用。
这个快速入门解释了如何处理toast激活,并包括一个完整的代码示例:快速入门:发送本地toast通知