磁贴 & 磁贴通知

 //选择模版
            XmlDocument largeTileData = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWidePeekImage01);

            //添加文字说明
            XmlNodeList largetextdata = largeTileData.GetElementsByTagName("text");
            XmlNodeList imagedata = largeTileData.GetElementsByTagName("image");

            largetextdata[0].InnerText = "F#ck Day!";

            largetextdata[1].InnerText = "What a F#cking Day?";
            
            //设置图片
            ((XmlElement)imagedata[0]).SetAttribute("src","ms-appx:///images/1024.png");


            //微标 文字以及图片
            XmlDocument smalltiledate = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquarePeekImageAndText02);
            XmlNodeList smallTileText = smalltiledate.GetElementsByTagName("text");
            XmlNodeList smallTileImage = smalltiledate.GetElementsByTagName("image");
            smallTileText[0].InnerText = "Cao Egg";
            smallTileText[1].InnerText = "I'm F#cker in there";
            ((XmlElement)smallTileImage[0]).SetAttribute("src", "ms-appx:///images/1024.png");

            //合并两个到一个<visual> XML节点
            IXmlNode newNode = largeTileData.ImportNode(smalltiledate.GetElementsByTagName("binding").Item(0), true);

            largeTileData.GetElementsByTagName("visual").Item(0).AppendChild(newNode);

            //创建通知
            TileNotification notification = new TileNotification(largeTileData);
            //多少秒以后移除
            notification.ExpirationTime = DateTimeOffset.UtcNow.AddSeconds(30);

            //发送通知
            TileUpdateManager.CreateTileUpdaterForApplication().Update(notification);


精简
XmlDocument tileData = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareBlock);

            XmlNodeList textData = tileData.GetElementsByTagName("text");

            textData[0].InnerText = "10";
            textData[1].InnerText = "Days of Me";

            TileNotification notification = new TileNotification(tileData);

 //为通知设置到期时间
            //默认情况下,本地磁贴和锁屏提醒不会过期,推送通知、定期通知、激活通知会在三天之后过期。
            //最好通过使用一个对你的应用有意义的时间设置过期时间,对于本地磁贴和锁屏提醒通知尤其如此。
            //磁贴内容的保留时间应不长于内容具有相关性的时间。
            //在这种情况下,该通知将在十分钟内到期并从磁贴中删除。
            notification.ExpirationTime = DateTimeOffset.UtcNow.AddSeconds(20);

            TileUpdateManager.CreateTileUpdaterForApplication().Update(notification);



计划磁贴通知
 //指定模板
            TileTemplateType tileTemplate = TileTemplateType.TileWideImageAndText01;

            XmlDocument tileXml = TileUpdateManager.GetTemplateContent(tileTemplate);
            
            //提供通知内容

            //设置文字
            XmlNodeList tileTextAttributes = tileXml.GetElementsByTagName("text");
            tileTextAttributes[0].InnerText = "Hello"+Guid.NewGuid().ToString().Substring(0,5)+" World!!!!!";

            //设置图片
            XmlNodeList tileImageAttributes = tileXml.GetElementsByTagName("image");
            ((XmlElement)tileImageAttributes[0]).SetAttribute("src", "ms-appx:///images//1024.png");
            ((XmlElement)tileImageAttributes[0]).SetAttribute("alt", "red graphic");

            //小瓷贴模版。
            XmlDocument squareTileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareText04);
            //设置文字
            XmlNodeList squareTileTextAttributes = squareTileXml.GetElementsByTagName("text");
            squareTileTextAttributes[0].AppendChild(squareTileXml.CreateTextNode("Hello " + Guid.NewGuid().ToString().Substring(0, 5) + " World。。。。"));

            //绑定
            IXmlNode node = tileXml.ImportNode(squareTileXml.GetElementsByTagName("binding").Item(0), true);
            //插入
            tileXml.GetElementsByTagName("visual").Item(0).AppendChild(node);

            //指定应传递通知的时间
            //Int16 dueTimeInHours = 3;
            //DateTime dueTime = DateTime.Now.AddHours(dueTimeInHours);

            DateTime dueTim1e = DateTime.Now.AddSeconds(10);

            //创建计划的磁贴通知对象
            ScheduledTileNotification scheduledTile = new ScheduledTileNotification(tileXml, dueTim1e);

            //为计划的磁贴通知赋予 ID
            scheduledTile.Id = "Future_Tile";
            
            //向计划中添加磁贴通知。
            TileUpdateManager.CreateTileUpdaterForApplication().AddToSchedule(scheduledTile);


磁贴通知队列
 //设置选项以启用通知循环
            TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true);
            //创建磁贴通知
            TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideImageAndText01);
            XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareBlock);

            // TODO: Fill in the template with your tile content.
            // TODO: Define a square tile and add it to tileXML.

            TileNotification tileNotification = new TileNotification(tileXml);
            /*
             * 启用队列时,最多可在磁贴上自动循环显示五个磁贴通知。
             * 默认情况下,队列中通知的替换策略是先进先出 (FIFO);
             * 当队列排满且到达新通知时,最早的通知将被删除。
             * 请注意,通知显示顺序不遵守严格的线性模式。
             * 用户可看到通知的顺序与其到达时的顺序并不相同。
             */
            //授予通知标记
            tileNotification.Tag = "stockMSFT";
            //向磁贴发送通知
            TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);


清除磁贴通知
 Windows.UI.Notifications.TileUpdateManager.CreateTileUpdaterForApplication().Clear();


参考实例:http://code.msdn.microsoft.com/windowsapps/app-tiles-and-badges-sample-5fc49148/

猜你喜欢

转载自baron-unsafe.iteye.com/blog/1827610
今日推荐