Тост-уведомление не работает в приложении Xamarin UWP Windows - PullRequest
0 голосов
/ 02 марта 2020

У меня есть приложение UWP Windows, разработанное в рамках Xamarin.forms. Я реализовал уведомления Toast, но я столкнулся с проблемой с этим. В некоторых системах Windows 10 он работает и правильно отображает всплывающее уведомление, но в некоторых системах Windows 10 (даже с таким же обновлением ОС Windows 10) он не работает.

Ниже первых фрагментов кода, которые я реализовал в собственном UWP.

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);

Ниже вторых фрагментов кода, которые я реализовал в собственном UWP.

// "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);

Выше приведен фрагмент кода, показывающий уведомление Toast в некоторых системах Windows 10 и не работающий в других системах Windows 10. Пожалуйста, наведите меня на это. Заранее спасибо.

С уважением, Vivek

1 Ответ

0 голосов
/ 02 марта 2020

Пожалуйста, следуйте этим шагам, чтобы добавить всплывающее уведомление в проекте UWP.

Шаг 1: - Создайте новый проект UWP.

Шаг 2: - Go к выделенному коду и добавьте пространство имен.

с помощью Windows .UI.Notifications;
с помощью NotificationsExtensions.Toasts;

Шаг 3: - Я создал Toast Generi c Шаблон, подобный следующему коду:

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;    
}

Шаг 4: - Создайте объект уведомления о тосте, используя XML документ.

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# code-behind :

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);    
}

Надеюсь, приведенный выше код будет вам полезен.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...