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

UWP通知Toast已激活、更新并过期

公良莫希
2023-03-14
    public void ShowToast(Music music)
    {
        var toastContent = new ToastContent()
        {
            Visual = new ToastVisual()
            {
                BindingGeneric = new ToastBindingGeneric()
                {
                    Children =
                    {
                        new AdaptiveText()
                        { 
                            Text = string.IsNullOrEmpty(music.Artist) ?
                                   string.IsNullOrEmpty(music.Album) ? music.Name : string.Format("{0} - {1}", music.Name, music.Album) :
                                   string.Format("{0} - {1}", music.Name, string.IsNullOrEmpty(music.Artist) ? music.Album : music.Artist)
                        },
                        new AdaptiveProgressBar()
                        {
                            Value = new BindableProgressBarValue("MediaControl.Position"),
                            ValueStringOverride = MusicDurationConverter.ToTime(music.Duration),
                            Title = "Lyrics To Be Implemented",
                            Status = MusicDurationConverter.ToTime(MediaControl.Position)
                        }
                    }
                }
            },
            Actions = new ToastActionsCustom()
            {
                Buttons =
                {
                    new ToastButton("Pause", "Pause")
                    {
                        ActivationType = ToastActivationType.Background
                    },
                    new ToastButton("Next", "Next")
                    {
                        ActivationType = ToastActivationType.Background
                    }
                },
            },
            Launch = "Launch",
            Audio = Helper.SlientToast,
        };

        // Create the toast notification
        var toast = new ToastNotification(toastContent.GetXml())
        {
            ExpirationTime = DateTime.Now.AddSeconds(music.Duration),
        };
        toast.Activated += Toast_Activated;
        Helper.ShowToast(toast);
    }

    private async void Toast_Activated(ToastNotification sender, object args)
    {
        await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
        {
            switch ((args as ToastActivatedEventArgs).Arguments)
            {
                case "Next":
                    MediaControl.NextMusic();
                    break;
                case "Pause":
                    PauseMusic();
                    break;
                default:
                    break;
            }
        });
    }

共有1个答案

王豪
2023-03-14

Q1:已激活

您应该选择在后台执行任务,这样当您点击按钮时,应用程序将不会被激活。具体内容您可以参考此文档。此外,在您点击它时,无法阻止toast在激活时消失。

Q2:更新

new AdaptiveProgressBar()
                        {​
                            Value = new BindableProgressBarValue("progressValue"),​
                            ValueStringOverride = new BindableString("progressValueString"),​
                            Status = new BindableString("progressStatus")​
                        }

string tag = "Myplaylist";
string group = "playing";​
toast.Tag = tag;​
toast.Group = group;​
toast.Data = new NotificationData();​
toast.Data.Values["progressValue"] = "0.0";​
toast.Data.Values["progressValueString"] = "My first song";​
toast.Data.Values["progressStatus"] = "Playing...";​
toast.Data.SequenceNumber = 0;
public void UpdateProgress()
        {​
            // Construct a NotificationData object;​
            string tag = "Myplaylist";​
            string group = "playing";​
​
            // Create NotificationData and make sure the sequence number is incremented​
            // since last update, or assign 0 for updating regardless of order​
            var data = new NotificationData​
            {​
                SequenceNumber = 0​
            };​

            data.Values["progressValue"] = "0.7";​
            data.Values["progressValueString"] = "My first song";​
​
            // Update the existing notification's data by using tag/group​
            ToastNotificationManager.CreateToastNotifier().Update(data, tag, group);​
        }
 类似资料:
  • 我想做一个定期的祝酒通知。 错在哪里? 提前道谢!

  • 在我正在编写的一个VB.NET UWP应用程序中,我尝试从进程中的后台任务生成一个本地toast通知。但是,当我调用来显示通知时,它不会显示在屏幕的角落,而是直接转到action Center。我的计算机上没有启用焦点辅助,所以我不确定问题是否是由后台线程终止引起的。我如何解决这个问题,并允许弹出一个本地烤面包通知?

  • 我有一个Toast通知从项目外部执行(在后台)。这里有: 我的问题是当我尝试执行代码时,当用户点击toast,我想要执行部分代码从主项目。有办法做到这一点吗? 谢谢

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

  • 通过上面的行,我得到了一个URL,它将在大约一个月内有用。 现在我不可能做的是将推送通知发送到应用程序。 任何关于如何使用Uri和如何将信息发送到它的光我会很高兴,因为我的400错误,那是关于我的post消息的一些错误。 我可以在发布或调试模式下获得推送通知吗? 使用PHP可以完成带有正确Uri的推送通知吗?

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