当从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工作很好。有什么想法?
从你发布的代码来看,似乎你正在处理一个带有OnLaunched
方法的toast通知的激活。然而
在Windows 10中,微软更新了toast激活行为,当toast(或toast中的一个动作)触发前台激活时,调用OnActivated而不是onlaunching,并使用新的激活类型ToastNotification。因此,我们能够很容易地区分toast激活并相应地执行任务。
在Windows 10中,随着自适应模板和自定义操作的增加,应用程序可能需要处理3种不同类型的激活。
- 使用Windows 10自适应模板从toast通知中激活前台;
- 使用Windows 10自适应模板从toast通知激活后台;
- Legacy:使用遗留模板从toast通知激活前台。
对于第一种,我们应该通过重写OnActivated方法而不是onlaunching方法来处理它。只有在使用遗留模板时,才需要使用OnLaunched
方法来处理激活。但如果你正在开发一个新的Windows 10通用应用程序,强烈推荐新的自适应模板。
所有遗留的toast模板都可以通过使用新的自适应模板轻松实现。通过使用新的自适应模板,您可以有一个一致的方式和位置来处理toast激活。
有关更多信息,请参见从UWP应用程序发送本地toast通知:处理激活。还有GitHub上的代码示例