I have my Toasts set to run in a background task. If I define the XML the "old" way for the toast, everything works fine. Here's the code for that:
var template = ToastTemplateType.ToastText02;
var xml = ToastNotificationManager.GetTemplateContent(template);
var elements = xml.GetElementsByTagName("text");
var text = xml.CreateTextNode(model.Title);
elements[0].AppendChild(text);
var toast = new ToastNotification(xml);
ToastNotificationManager.CreateToastNotifier("My App").Show(toast);
If I try to use the AdaptiveText
version, it doesn't run. The Event Viewer logs indicate a successful toast message sent (as it does with the first stuff), but no toast appears. Here's the code for that (which I copy/pasted directly from the tutorial on microsoft.com):
var content = new ToastContent()
{
Launch = "app-defined-string",
Visual = new ToastVisual()
{
BindingGeneric = new ToastBindingGeneric()
{
Children =
{
new AdaptiveText()
{
Text = "Photo Share"
},
new AdaptiveText()
{
Text = "Andrew sent you a picture"
},
new AdaptiveText()
{
Text = "See it in full size!"
},
new AdaptiveImage()
{
Source = "https://unsplash.it/360/180?image=1043"
}
},
AppLogoOverride = new ToastGenericAppLogo()
{
Source = "https://unsplash.it/64?image=883",
HintCrop = ToastGenericAppLogoCrop.Circle
}
}
}
};
var toast = new Windows.UI.Notifications.ToastNotification(content.GetXml())
{
ExpirationTime = DateTime.Now.AddDays(model.Expiration)
};
toast.Failed += (o, args) =>
{
var message = args.ErrorCode;
};
Windows.UI.Notifications.ToastNotificationManager.CreateToastNotifier("My App").Show(toast);
I am have OS Build 15063--same as my target for the application. I had a Template 10 project where this was happening, so I tried making a new non-Template 10 project, but the problem persists. I've also tried using NotificationExtensions.10
library from NuGet, and alternatively Windows.UI.Notifications/Microsoft.Toolkit.Uwp.Notifications
; no difference with either.
It turned out that
ExpirationTime = DateTime.Now.AddDays(model.Expiration)
was the problem. It was getting fed0
, and as a result the Toast expired the moment it was sent, never displaying.