11

我想为 Windows Phone 8.1 开发一个包含本地“通知”的通用应用程序。

我想要做的是在 toast 控制的扭结中向用户显示所有消息(错误、信息、警告)。一切都在本地完成,无需通过标准通知系统。有几个系统可以在 Windows Phone 8 上运行:

但不可能在 windows phone 8.1 项目中包含这些库。

有谁知道另一种显示“本地”吐司的方法?

4

2 回答 2

25

在@msimons 响应和以下网址的帮助下:http: //msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868254.aspx我成功显示了我的通知。

对于那些需要它的人,这是我的最终方法:

private void ShowToastNotification(String message)
    {
        ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01;
        XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);

        // Set Text
        XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
        toastTextElements[0].AppendChild(toastXml.CreateTextNode(message));

        // Set image
        // Images must be less than 200 KB in size and smaller than 1024 x 1024 pixels.
        XmlNodeList toastImageAttributes = toastXml.GetElementsByTagName("image");
        ((XmlElement)toastImageAttributes[0]).SetAttribute("src", "ms-appx:///Images/logo-80px-80px.png");
        ((XmlElement)toastImageAttributes[0]).SetAttribute("alt", "logo");

        // toast duration
        IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
        ((XmlElement)toastNode).SetAttribute("duration", "short");

        // toast navigation
        var toastNavigationUriString = "#/MainPage.xaml?param1=12345";
        var toastElement = ((XmlElement)toastXml.SelectSingleNode("/toast"));
        toastElement.SetAttribute("launch", toastNavigationUriString);

        // Create the toast notification based on the XML content you've specified.
        ToastNotification toast = new ToastNotification(toastXml);

        // Send your toast notification.
        ToastNotificationManager.CreateToastNotifier().Show(toast);
    }

我在通用应用程序 windows phone 8.1 上进行了测试。

并且不要忘记编辑“Package.appxmanifest”并激活通知。在您的应用程序的 package.appxmanifest 文件中声明了引发 toast 通知的能力。如果您使用 Microsoft Visual Studio 清单编辑器,只需在应用程序选项卡的通知部分中将支持 Toast 的选项设置为“是”。

于 2014-05-15T20:00:29.350 回答
7

您可以使用应用程序运行时出现的本地通知。

ToastTemplateType toastTemplateXml = ToastTemplateType.ToastImageAndText01; 
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplateXml);

然后,您需要填充由GetTemplateContent

<toast>
    <visual>
        <binding template="ToastImageAndText01">
            <image id="img" src=""/>
            <text id="txt"></text>
        </binding>
    </visual>
</toast>

在 XML DOM 中提供 toast 的内容。该图像仅适用于 Windows 8.1。

指定它的启动参数

((XmlElement)toastNode).SetAttribute("launch", "{\"type\":\"toast\",\"param1\":\"1\",\"param2\":\"2\"}");

创建吐司对象:

ToastNotification toast = new ToastNotification(toastXml);

最后显示吐司。

ToastNotificationManager.CreateToastNotifier().Show(toast);

此外,如果您想使用第三方控件来显示 toast,那么您可以考虑编写一个 Windows Phone 8.1 Silverlight 应用程序。

于 2014-05-14T14:37:53.997 回答