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

Toast通知在Xamarin UWP Windows应用程序中不工作

穆才良
2023-03-14
string msg = "Toast Notification Header";
                string subMsg = "Toast Notification Title";

                var toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);

                var toastTextElements = toastXml.GetElementsByTagName("text");
                toastTextElements[0].AppendChild(toastXml.CreateTextNode(msg));
                toastTextElements[1].AppendChild(toastXml.CreateTextNode(subMsg));

                //To play the custom sound
                var toastNode = toastXml.SelectSingleNode("/toast");
                var audio = toastXml.CreateElement("audio");
                audio.SetAttribute("src", "ms-appx:///Assets/incoming_message.wav");
                audio.SetAttribute("loop", "false");
                toastNode.AppendChild(audio);

                var toast = new ToastNotification(toastXml);
                ToastNotificationManager.CreateToastNotifier().Show(toast);
// "With Microsoft.Toolkit.Uwp.Notifications"


                // Construct the toast content
                ToastContent toastContent = new ToastContent()
                {
                    Visual = new ToastVisual()
                    {
                        BindingGeneric = new ToastBindingGeneric()
                        {
                            Children =
                    {
                        new AdaptiveText()
                        {
                            Text = "Toast Notification Header"
                        },

                        new AdaptiveText()
                        {
                            Text = "Toast Notification Content"
                        }
                    }
                        }
                    }
                };

                bool supportsCustomAudio = true;

                // If we're running on Desktop before Version 1511, do NOT include custom audio
                // since it was not supported until Version 1511, and would result in a silent toast.
                if (AnalyticsInfo.VersionInfo.DeviceFamily.Equals("Windows.Desktop")
                    && !ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 2))
                {
                    supportsCustomAudio = false;
                }

                if (supportsCustomAudio)
                {
                    toastContent.Audio = new ToastAudio()
                    {
                        Src = new Uri("ms-appx:///Assets/incoming_message.wav")                          
                    };
                }

                // And create the toast notification
                ToastNotification notification = new ToastNotification(toastContent.GetXml());
                // And then send the toast
                ToastNotificationManager.CreateToastNotifier().Show(notification);

上面的代码片段显示了在一些Windows10系统中的Toast通知,而在其他一些Windows10系统中不起作用。请给我指点一下。提前道谢。

你好,维韦克

共有1个答案

叶修永
2023-03-14

请按照这些步骤在UWP项目中添加toast通知。

步骤1:-创建一个新的UWP项目。

步骤2:-转到代码隐藏并添加名称空间。

public static Windows.Data.Xml.Dom.XmlDocument CreateToast()    
{    
   var xDoc = new XDocument(    
      new XElement("toast",    
      new XElement("visual",    
      new XElement("binding", new XAttribute("template", "ToastGeneric"),    
      new XElement("text", "C# Corner"),    
      new XElement("text", "Do you got MVP award?")    
   )    
   ),// actions    
   new XElement("actions",    
   new XElement("action", new XAttribute("activationType", "background"),    
   new XAttribute("content", "Yes"), new XAttribute("arguments", "yes")),    
   new XElement("action", new XAttribute("activationType", "background"),    
   new XAttribute("content", "No"), new XAttribute("arguments", "no"))    
   )    
   )    
   );    

   var xmlDoc = new Windows.Data.Xml.Dom.XmlDocument();    
   xmlDoc.LoadXml(xDoc.ToString());    
   return xmlDoc;    
}
var xmdock = CreateToast();    
var toast = new ToastNotification(xmdock);    
Next show the toast using ToastNotificationManager class.    
var notifi = Windows.UI.Notifications.ToastNotificationManager.CreateToastNotifier();    
notifi.Show(toast);   

步骤5:-C#代码隐藏:

private void showToastBtn_Click(object sender, RoutedEventArgs e)    
{    
    var xmdock = CreateToast();    
    var toast = new ToastNotification(xmdock);    
    var notifi = Windows.UI.Notifications.ToastNotificationManager.CreateToastNotifier();    
    notifi.Show(toast);    
}

希望以上代码对您有用。

谢谢你

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

  • 谢谢你的帮助, 卢卡斯

  • 我已经创建了一个Windows Phone 8.1应用程序,它可以将吐司通知发送到Windows Phone的操作中心。现在我需要在用户点击toast通知时打开另一个应用程序。我怎样才能实现这个..?我可以打开创建toast通知的同一个应用程序。我怎么才能打开另一个我指定的应用程序...?

  • 我一直在工作与以下要求的烤面包通知。 应用程序需要处理所有类型的激活类型(前台、后台、协议) 所以我创建了一个示例UWP应用程序。它为前景和背景工作。但当我用PowerShell创建祝酒词时。未激活通知。 感谢帮助!!!

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

  • null 谢谢你的帮助! 编辑:这里有一个类似的问题。