Windows 8 Secondary Live Tile未使用本地通知队列进行更新

时间:2013-03-13 23:52:50

标签: c#-4.0 windows-8 tiles

我正在尝试在我的应用程序中实现两个以上的二级活动切片。我已按照此sample使用应用栏上的引脚到开始按钮创建辅助磁贴。我正在使用NotificationExtensions库更新辅助磁贴。现在,我正面临一个问题,我正在尝试使用通知队列在本地更新我的每个实时图块,但更新的整个行为充其量是不稳定的。 3个图块中只有一个连续更新(没有成功更新的固定图块),而其余图块只更新一次然后停止。我担心这与通知没有正确排队有关,但我不知道我哪里出错了。最初,我创建的所有辅助磁贴及其各自的通知逻辑都在单独的代码隐藏中。我甚至尝试将它们分成单页,但它仍然给出相同的结果。我使用以下代码来创建通知磁贴内容:

            ITileWideText04 tileContent = TileContentFactory.CreateTileWideText04();
            tileContent.TextBodyWrap.Text = "1 secondary tile from NotificationsExtensions!";

            ITileSquareText04 squareContent = TileContentFactory.CreateTileSquareText04();
            squareContent.TextBodyWrap.Text = "1secondary tile from NotificationExtensions!";
            tileContent.SquareContent = squareContent;


            ITileWideText04 tileContent2 = TileContentFactory.CreateTileWideText04();
            tileContent2.TextBodyWrap.Text = "2c secondary tile from NotificationsExtensions!";

            ITileSquareText04 squareContent2 = TileContentFactory.CreateTileSquareText04();
            squareContent2.TextBodyWrap.Text = "2 secondary tile from NotificationExtensions!";
            tileContent2.SquareContent = squareContent;

            var tile1 = tileContent.CreateNotification();
            tile1.Tag = "a";
            var tile2 = tileContent2.CreateNotification();
            tile2.Tag = "b";

然后像这样更新瓷砖:                                        TileUpdateManager.CreateTileUpdaterForSecondaryTile(Constants.ProfileAppTile).EnableNotificationQueue(真);            TileUpdateManager.CreateTileUpdaterForSecondaryTile(Constants.ProfileAppTile).Update(tile1);                 TileUpdateManager.CreateTileUpdaterForSecondaryTile(Constants.ProfileAppTile).Update(tile2);

其余的二级瓷砖等等。

感谢您的任何帮助。

1 个答案:

答案 0 :(得分:0)

嗯。可能发生的事情是,每次在您引用的这些代码行上为您获取新的更新程序,并且启用通知队列仅发生在第一行:

TileUpdateManager.CreateTileUpdaterForSecondaryTile(Constants.ProfileAppTile).EnableNotificationQueue(true); 
TileUpdateManager.CreateTileUpdaterForSecondaryTile(Constants.ProfileAppTile).Update(tile1);
TileUpdateManager.CreateTileUpdaterForSecondaryTile(Constants.ProfileAppTile).Update(tile2);

在您的底部代码段中,您可以尝试这样的事情吗?

var updater = TileUpdateManager.CreateTileUpdaterForSecondaryTile(Constants.ProfileAppTile);
updater.EnableNotificationQueue(true); 
updater.Update(tile1); 
updater.Update(tile2);

此外,这些文章包含正常工作的示例代码,带有辅助磁贴和活动磁贴,欢迎您借用:
Real-World Secondary Tiles: Top Three Tips for Working with Secondary Tiles in Windows 8 Apps
Real-World Live Tiles: Working with Live Tiles in Windows 8 Apps