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

在Windows 8.1中使用启动参数发送推送通知(toast)

梁宪
2023-03-14
 public static void ShowNotification(int notificationId, string ToastTitle, int messageType, string messageDetails)
    {
        string messageText = String.Empty;
        ToastTemplateType toastTemplate = ToastTemplateType.ToastText04;
        XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
        XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");

        toastTextElements[0].AppendChild(toastXml.CreateTextNode(ToastTitle));//Toast notification title
        toastTextElements[1].AppendChild(toastXml.CreateTextNode(messageText));
        toastTextElements[2].AppendChild(toastXml.CreateTextNode(messageDetails));

        var launchAttribute = toastXml.CreateAttribute("launch");
        IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
        ((XmlElement)toastNode).SetAttribute("duration", "short");
        toastNode.Attributes.SetNamedItem(launchAttribute);

        //Launch params
        var toastNavigationUriString = messageDetails;
        var toastElement = ((XmlElement)toastXml.SelectSingleNode("/toast"));
        toastElement.SetAttribute("launch", toastNavigationUriString);

        ToastNotification toast = new ToastNotification(toastXml);
        toast.Tag = notificationId.ToString();
        toast.ExpirationTime = DateTimeOffset.UtcNow.AddDays(3);

        if (true)
        {
            toast.SuppressPopup = false;//to send notification directly to action center without displaying a popup on phone.
        }

        ToastNotificationManager.CreateToastNotifier().Show(toast);
    }
WinJS.Application.addEventListener("activated", onActivatedHandler, true);

function onActivatedHandler(args) {
    if (args.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
        messageDetails = args.detail.arguments;
        PhonegapService.setNotificationMessage(messageDetails, function () {
            window.location.href = "index.html";
        });
    }
}
string rawMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
            "<root>" +
                "<Value1>" + "Hello" + "<Value1>" +
                "<Value2>" + "Raw" + "<Value2>" +
            "</root>";
    null
string toast1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?> ";

           string toast2 = string.Format(@"<toast>
                       <visual>
                           <binding template=""ToastText04"">
                               <text id=""1"">{0}</text>
                               <launch></launch>
                           </binding>
                       </visual>
                   </toast>",message);
           string xml = toast1 + toast2;
 string toast1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?> ";
 string message = "some json";
                string toast2 = string.Format(@"<toast launch= ""{0}"">
                         <visual version=""1"">
                             <binding template=""ToastText02"">
                                 <text id=""1"">{1}</text>
                                   <text id=""2"">{2}</text>
                             </binding>
                         </visual>
                     </toast>", message, "Alert", "Test");

共有1个答案

夏奕
2023-03-14

您需要创建一个与以下结构相同的XML(有或没有自定义音频):

<toast launch=\"$param\">
   <audio src=\"ms-appx:///Assets/Sounds/$sound.wav\"/>
   <visual>
       <binding template=\"ToastText04\">
           <text id=\"1\">$title</text>
           <text id=\"2\">$msg</text>
       </binding>
   </visual>
</toast>

请注意,launch 标记的成员。

您可以像以前一样处理click事件。当应用程序被激活时,您将获得launch的值字符串。

 类似资料:
  • 如何通过Azure从我的UWP-App向不同设备上的应用程序的其他实例发送推送通知? 以下是注册设备以接收推送的说明。(这是可行的)第二部分是关于如何在控制台应用程序上发送推送(这也是可行的)https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-star

  • 问题内容: 我已经在项目中实现了推送通知,到目前为止一切正常。我尝试过通过Pusher发送通知,但效果很好。但是我必须通过PHP发送它们,但尚无法使用。我发现了许多有关如何实现此目标的旧解释,但似乎没有一个对我有用。 这就是我要使用的方法: 问题答案: 尝试使用此php脚本,确保.pem证书在运行时以与该php脚本相同的路径退出,并获得正确的设备令牌

  • 我正在尝试使用Azure通知中心向客户端发送推送通知。我读了这篇文章,它使用标签来识别每个用户。 https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-aspnet-backend-windows-dotnet-notify-users/ 它可以完成这项工作,但标记的数量有限。我正在考虑存储和使用中心返

  • 我试图制作一个云函数,向给定用户发送消息推送。 用户进行一些更改,并在firebase数据库中的节点下添加/更新数据(该节点表示用户id)。这里我想触发一个函数,它向用户发送推送通知。 对于DB中的用户,我有以下结构。 到目前为止,我有这个功能: 当我得到回调时,snapshot.val()返回null。知道怎么解决这个问题吗?也许之后如何发送消息推送?

  • 我在我的应用程序中使用Google日历API。 我面临的问题是谷歌没有给我发送推送通知。 我在这里设置我的应用程序https://console.developers.google.com/ 已验证域名:https://console.developers.google.com/apis/credentials/domainverification 观看日历:https://developers.

  • 我正在写一个iOS的应用程序,使用laravel的API和谷歌Firebase的推送通知。当我使用Firebase云消息传递发送消息推送时,它会进入我的设备。当我使用laravel发送推送通知时,它不会影响。这里是我的脚本发送推送通知laravel: 它返回一个成功的结果,但通知未发送到iOS设备。 PS:它可以在Android设备上成功运行。