живая плитка не обновляется в Windows Phone

Я разрабатываю приложение для Windows Phone, в котором приложение имеет возможность прикрепить приложение к домашнему экрану. И я использую класс ShellTileSchedule для периодического планирования обновления. По какой-то причине мое приложение не обновляет плитку. Данные моего приложения полностью локальны, никакие данные не поступают извне.

В моем обновлении плитки я не обновляю никакое изображение в лиле, а только изменяю отображаемые данные.

 foreach (ShellTile tile in ShellTile.ActiveTiles)
 {
            IconicTileData tileData = GetTileData();

            tileSchedule = new ShellTileSchedule(tile, tileData);
            tileSchedule.Interval = UpdateInterval.EveryHour;
            tileSchedule.Recurrence = UpdateRecurrence.Interval;
            tileSchedule.Count=GetUserData();
            tileSchedule.StartTime = DateTime.Now;
            tileSchedule.Start();

            tile.Update(tileData);
}

Любая помощь в этом отношении? Или мне нужен фоновый агент для обновления плитки?


person Mahender    schedule 08.11.2012    source источник
comment
Учитывая, что интервал составляет час, я надеюсь, вы знаете, что обновления не будут отправляться раньше, чем через 60 минут после запуска кода.   -  person Claus Jørgensen    schedule 08.11.2012
comment
да, я в курсе этого. Я пробовал, но обновления никогда не выдвигались.   -  person Mahender    schedule 08.11.2012
comment
Почему бы вам не использовать Cycle Tile Template - msdn.microsoft.com/en-us/library/windowsphone/develop/ [Он будет переключаться между 1 и 9 изображениями]   -  person Angshuman Agarwal    schedule 15.11.2012
comment
@AngshumanAgarwal спасибо, я рассматривал этот вариант. Но я не нажимаю и не показываю какие-либо изображения, как я упоминал в вопросе, в прямом эфире, кроме значка приложения.   -  person Mahender    schedule 16.11.2012
comment
Может быть, вы можете посмотреть это видео о сборке 2012 на Windows Phone 8: Tiles, Lock Screen, and Notifications - channel9.msdn .com/Events/Build/2012/2-019. Весь исходный код доступен здесь для настройки — blogs.msdn.com/b/tfennel/archive/2012/11/13/   -  person Angshuman Agarwal    schedule 16.11.2012
comment
спасибо @AngshumanAgarwal, это хороший источник, рассмотрю этот пример.   -  person Mahender    schedule 17.11.2012


Ответы (3)


ShellTileSchedule может извлекать изображения только из Интернета, а не с самого телефона. Это одно из ограничений ShellTileSchedule. Если вы хотите установить фоновые изображения для ресурсов на телефоне, рассмотрите вместо этого использование push-уведомлений.

Источник: http://www.silverlightshow.net/news/WP7-Using-ShellTileSchedule-to-update-your-app-s-Live-Tile-background.aspx

person robertk    schedule 08.11.2012

Разве вы не должны где-то устанавливать ShellTileSchedule.RemoteImageUri? Я имею в виду, что именно для этого существует ShellTileSchedule, чтобы регулярно обновлять изображение плитки с удаленного Uri... См. пример использования этого класса для вторичных плиток здесь.

person JustinAngel    schedule 08.11.2012
comment
на самом деле, мне не нужно какое-либо изображение для отображения в приложении. Как вы думаете, это вызывает ошибку? а также, если нужно использовать это, каковы размеры изображения? - person Mahender; 08.11.2012
comment
Ну, да. Единственное, для чего полезен ShellTileSchedule, — это обновление изображений на плитках начального экрана с удаленного URL-адреса. Если вам не нужна эта функция, почему вы используете ShellTileSchedule? - person JustinAngel; 11.11.2012
comment
ну, я использую ShellTileSchedule только для обновления содержимого плитки. Я не использую/извлекаю какие-либо удаленные изображения. Есть ли другой вариант добиться того же? - person Mahender; 12.11.2012

Вы должны заполнить свойства IconicTileData. В вашем образце вы просто создаете пустую структуру данных и используете ее для расписания, это не сработает. Я использую это так:

IconicTileData newTileData = new IconicTileData
{
    Title = SharedResources.AppName,
    Count = BatteryHelper.BateryLevel,
    SmallIconImage = new Uri(@"/Assets/IconicSmall.png", UriKind.Relative),
    IconImage = new Uri(@"/Assets/IconicMedium.png", UriKind.Relative),
};
person Martin Suchan    schedule 08.11.2012
comment
я заполнил IconicTileData в моем методе GetTileData() аналогичными данными. Но мой планировщик никогда не срабатывает для обновления данных. Я вижу, что в моем определении отсутствует дополнительная строка RemoteImageURI, поэтому мне интересно, вызывает ли это проблему? - person Mahender; 08.11.2012