Обновлять все размеры плитки в приложении WIndows 8 с периодическим уведомлением
У меня есть прикладная среда (в JavaScript), которая динамически устанавливает URL для живого фида плиток. В моем коде у меня есть что-то вроде ниже, и это работает для широкой плитки, но когда я изменяю размер плитки на "средний" (или "маленький"), живая подача / обновление исчезают. Если я вернусь к ширине, она будет работать нормально. Других настроек плитки нет (используется по умолчанию).
У меня вопрос: есть ли возможность обновить все размеры листов одновременно или мне придется создавать полный объект XML, используя getTemplateContent()
и TileUpdater's update()
метод?
В настоящее время я обновляю периодические URL-адреса примерно так (опять же, это работает для широких плиток):
var updater = Windows.UI.Notifications.TileUpdateManager.createTileUpdaterForApplication();
updater.clear();
updater.stopPeriodicUpdate();
updater.enableNotificationQueue(true);
updater.startPeriodicUpdateBatch(
[ new Windows.Foundation.Uri(feedUrlString) ],
Windows.UI.Notifications.PeriodicUpdateRecurrence.halfHour
);
1 ответ
Чтобы обновить несколько размеров листов в одном обновлении, полезная нагрузка XML для этого обновления должна содержать отдельные элементы для каждого размера листов.
Вы можете увидеть это в примере плиток и значков приложения в SDK. Сценарий 1, например, демонстрирует, как это сделать, используя (a) библиотеку C# NotificationExtensions, (b) построение XML в виде строки и (c) использование getTemplateContent. Один из этих методов должен работать для вас.
Чтобы привести пример для случая (а), вот код из сценария 1, который также имеет комментарий, объясняющий больше:
// This sample application supports all four tile sizes – small (Square70x70), medium (Square150x150), wide (Wide310x150) and large (Square310x310).
// This means that the user may have resized their tile to any of these four sizes for their custom Start screen layout.
// Because an app has no way of knowing what size the user resized their app tile to, an app should include template bindings
// for each supported tile sizes in their notifications. The only exception is the small (Square70x70) tile size because this size
// does not support live tile notifications, which is why there are no Square70x70 tile templates.
// We assemble one notification with three template bindings by including the content for each smaller
// tile in the next size up. Square310x310 includes Wide310x150, which includes Square150x150.
// If we leave off the content for a tile size which the application supports, the user will not see the
// notification if the tile is set to that size.
// Create a notification for the Square310x310 tile using one of the available templates for the size.
var tileContent = NotificationsExtensions.TileContent.TileContentFactory.createTileSquare310x310Text09();
tileContent.textHeadingWrap.text = "Hello World! My very own tile notification";
// Create a notification for the Wide310x150 tile using one of the available templates for the size.
var wide310x150Content = NotificationsExtensions.TileContent.TileContentFactory.createTileWide310x150Text03();
wide310x150Content.textHeadingWrap.text = "Hello World! My very own tile notification";
// Create a notification for the Square150x150 tile using one of the available templates for the size.
var square150x150Content = NotificationsExtensions.TileContent.TileContentFactory.createTileSquare150x150Text04();
square150x150Content.textBodyWrap.text = "Hello World! My very own tile notification";
// Attach the Square150x150 template to the Wide310x150 template.
wide310x150Content.square150x150Content = square150x150Content;
// Attach the Wide310x150 template to the Square310x310 template.
tileContent.wide310x150Content = wide310x150Content;
// Send the notification to the application’s tile.
Windows.UI.Notifications.TileUpdateManager.createTileUpdaterForApplication().update(tileContent.createNotification());