锁定屏幕(背景)通知-UWP

时间:2019-12-12 22:31:22

标签: c# uwp windows-10 windows-runtime windows-10-universal

我用以下this之后的代码测试了吐司通知:

x

清单显示如下:

public static void ShowToastNotification(string message)
{
    ToastContent content = new ToastContent()
    {
        Visual = new ToastVisual()
        {
            BindingGeneric = new ToastBindingGeneric()
            {
                Children =
                {
                    new AdaptiveText()
                    {
                        Text = message
                    }
                }
            }
        }
    };

    ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(content.GetXml()));
}

但是当屏幕锁定时它永远不会弹出。

  • 几秒钟内解锁,我就能看到它。

  • 如果我像15秒后那样解锁,我看不到通知,因为我将持续时间设置为短。

  

我检查了以下设置:

     
      
  • 当我在软件包清单中声明后台任务时,我启用了推送通知

  •   
  • 我在Windows设置中打开了“在锁定屏幕上显示通知”

  •   
  • ,并且我启用了应用,使其可以在Windows设置中在后台运行

  •   

我可以看到它命中了后台任务(在后台工作中包含其他功能)。

我想念什么?


如果有一种方法可以更改“欢迎消息”,那对我也同样适用。

我正在寻找一种在登录期间发生错误时通知用户的方法。

我们将不胜感激:)

1 个答案:

答案 0 :(得分:0)

我在UWP Windows应用程序中尝试了此代码,它可以完美地工作,您只需要创建一个通用函数

using Windows.UI.Notifications;

public static void ShowToastNotification(string title, string stringContent)
{
    ToastNotifier ToastNotifier = ToastNotificationManager.CreateToastNotifier();

    Windows.Data.Xml.Dom.XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
    Windows.Data.Xml.Dom.XmlNodeList toastNodeList = toastXml.GetElementsByTagName("text");

    toastNodeList.Item(0).AppendChild(toastXml.CreateTextNode(title));
    toastNodeList.Item(1).AppendChild(toastXml.CreateTextNode(stringContent));

    Windows.Data.Xml.Dom.IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
    Windows.Data.Xml.Dom.XmlElement audio = toastXml.CreateElement("audio");
    audio.SetAttribute("src", "ms-winsoundevent:Notification.SMS");
    ToastNotification toast = new ToastNotification(toastXml);
    toast.ExpirationTime = DateTime.Now.AddSeconds(4);
    ToastNotifier.Show(toast);
}