当从Toast通知激活时,应用程序在启动时崩溃

本文关键字:启动 崩溃 应用程序 通知 激活 当从 Toast | 更新日期: 2023-09-27 17:53:52

我创建了一个测试应用程序,我可以让我的应用程序从toast通知启动,但我不能让它与我的真实应用程序一起工作?

My MainPage有一个框架,它导航到一个有2个框架的页面。我希望第二帧在Toast Notification被点击时加载一个特定的页面。

这是我的onlaunching代码
        protected override void OnLaunched(LaunchActivatedEventArgs e)
    {
        Frame rootFrame = Window.Current.Content as Frame;
        // Do not repeat app initialization when the Window already has content,
        // just ensure that the window is active
        if (rootFrame == null)
        {
            // Create a Frame to act as the navigation context and navigate to the first page
            rootFrame = new Frame();
            rootFrame.NavigationFailed += OnNavigationFailed;
            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
            {
                //TODO: Load state from previously suspended application
            }
            // Place the frame in the current Window
            Window.Current.Content = rootFrame;
        }
        // Otherwise an action is provided
        if (e.Arguments != "")
        {
            rootFrame.Navigate(typeof(MainPage));
            FramePage.Instance.setSecondFrame("Email");
        }
        else
        {
            if (rootFrame.Content == null)
                rootFrame.Navigate(typeof(MainPage));
        }
        // Ensure the current window is active
        Window.Current.Activate();

它从OnActivated工作很好。有什么想法?

当从Toast通知激活时,应用程序在启动时崩溃

从你发布的代码来看,似乎你正在处理一个带有OnLaunched方法的toast通知的激活。然而

在Windows 10中,微软更新了toast激活行为,当toast(或toast中的一个动作)触发前台激活时,调用OnActivated而不是onlaunching,并使用新的激活类型ToastNotification。因此,我们能够很容易地区分toast激活并相应地执行任务。

在Windows 10中,随着自适应模板和自定义操作的增加,应用程序可能需要处理3种不同类型的激活。

  1. 使用Windows 10自适应模板从toast通知中激活前台;
  2. 使用Windows 10自适应模板从toast通知激活后台;
  3. Legacy:使用遗留模板从toast通知激活前台。

对于第一种,我们应该通过重写OnActivated方法而不是onlaunching方法来处理它。只有在使用遗留模板时,才需要使用OnLaunched方法来处理激活。但如果你正在开发一个新的Windows 10通用应用程序,强烈推荐新的自适应模板。

所有遗留的toast模板都可以通过使用新的自适应模板轻松实现。通过使用新的自适应模板,您可以有一个一致的方式和位置来处理toast激活。

有关更多信息,请参见从UWP应用程序发送本地toast通知:处理激活。还有GitHub上的代码示例