有两种onActivated监听器的UWP c#应用程序——通过通知激活



目前在我的应用程序中,我正在注册一个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通知

最新更新