当前位置: 首页 > 知识库问答 >
问题:

Windows 10中来自桌面应用程序的toast通知中的意外行为

淳于熙云
2023-03-14

我从Windows8.1开始使用桌面应用程序的toast通知,但随着Windows10的新操作中心,我遇到了一些意想不到的行为。

当用户不对toast执行任何操作时,它就会消失,而不会转到操作中心(ToastNotification.DissedingToastDissalReason.TimedOut)。我不知道这是否与我在win32应用程序中使用它有关,但在Windows Universal应用程序中,当它超时时,同样的祝酒词会转到操作中心。

需要注意的一点是,我没有为我的win32应用程序注册AppUserModelID,就像W8.1中需要的那样,它似乎不再是强制性的。我还是用一个注册的身份证做了测试,我也有同样的Popblem。

那么,我该如何防止烤面包机超时时不能在操作中心中运行呢?

下面是一个简单的代码(控制台应用程序),它再现了这个问题:

using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;

namespace ToastDesktop
{
    internal class Program
    {
        /// Add in the .csproj in the <PropertyGroup/> where <TargetFrameworkVersion/> is:
        /// <TargetPlatformVersion>10.0.10240.0</TargetPlatformVersion>
        ///
        /// Reference to add :
        /// - Windows.UI
        /// - Windows.Data
        private static void Main(string[] args)
        {
            string xml = $@"
                <toast>
                    <visual>
                        <binding template='ToastGeneric'>
                            <text>Some title</text>
                            <text>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</text>
                        </binding>
                    </visual>
                </toast>";

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);

            ToastNotification toast = new ToastNotification(doc);
            toast.Tag = "tag";
            toast.Group = "group";

            ToastNotificationManager.CreateToastNotifier("ToastDesktop").Show(toast);
        }
    }
}

谢谢你的帮助。

编辑:我在msdn博客文章上发布了这个bug,它覆盖了这个主题,我得到了确认,当超时时,它应该保留在操作中心,并且它可能是一个bug。

共有1个答案

卢权
2023-03-14

Win32应用程序需要设置COM服务器才能在操作中心中持久保存Toast:http://blogs.msdn.COM/b/tiles_and_toasts/archive/2015/10/15/quickstart-handling-toast-activations-from-win32-apps-in-windows-10.aspx

 类似资料:
  • 我正在向我的桌面应用程序添加Toast通知,并在Windows 10中体验Action Center的奇怪行为 null 超时后应在操作中心中显示Toast通知 关闭和打开操作中心后,烤面包通知仍应存在 请告诉我,这是否是windows 10中的吐司通知的定义行为,因为Microsoft Outlook吐司通知的行为也是一样的。

  • 谢谢你的帮助, 卢卡斯

  • 因此,我使用Microsoft示例进行了培训,这些示例可在以下站点获得:http://code.msdn.Microsoft.com/windowsdesktop/sending-toast-notifications-71e230a2/ 它工作良好,但我必须创建一个快捷方式,我的应用程序使用烤面包通知。 我试图删除快捷方式创建,但它不起作用。我理解,因为对于桌面应用程序,快捷方式是烤面包通知的先

  • 我正在开发一个应用程序,它使用toast通知来通知用户。这些通知是在app后台运行时引发的,并转到通知中心。 一切都很好,但在桌面上,通知组的应用图标不见了。在Windows10Mobile上测试应用程序时,图标就在那里。 (注意:上面显示的是一个名为“日历活动”的应用程序的通知组,而不是实际的通知。)

  • 在Android上,toast通知的工作方式与UWP不同。它只是在应用程序的顶部显示一个黑色的弹出消息。在UWP中,从用户角度来看,toast通知与push通知是无法区分的。在UWP中有没有一种标准化的方式,简单地在app内部显示一个几秒后就会消失的快速通知,并且不干扰用户的体验?我的意思是,如果用户没有收到推送通知?

  • 在windows通用应用程序中,使用WNS(windows通知服务)有没有办法将从一个应用程序发送的所有toast通知在操作中心内分组,就像在Android中所有未读whatsapp对话显示为一个通知一样。 我看到有一个名为WNS-Group和WNS-Tag的WNS头,但无论如何在其中设置/使用这些头并不能对toast进行分组 有人能建议一下这在Windows中是否可行,如果是如何可行的吗? 谢谢