Ik heb een Windows Phone 8 app die ik recent geupgrade heb naar 8.1 Silverlight. Ik wil de nieuwe live tile templates gebruiken. Momenteel gebruik ik daar de ScheduledTaskAgent class voor die gebruik maakt van ShellTile.
Om de nieuwe live tiles te gebruiken heb ik in WMAppManifest.xml de notification service op WNS gezet. Ik heb de oude code om de backgroundtask te registreren weggehaald en deze code neergezet:
Verder heb ik een Windows Phone 8.1 Windows Runtime Component genaamd BackgroundTasks gemaakt, die een BackgroundTask bevat genaamd LiveTileBackgroundTask:
Verder heb ik een referentie naar deze assembly gemaakt in mijn WP project. Ook heb ik een Background task declaration in mijn Package.appxmanifest gemaakt die BackgroundTasks.LiveTileBackgroundTask als Entry point heeft ingesteld. Als supported task type heb ik Timer en System event aangevinkt.
Wanneer ik de app draai gebeurt er echter niets. Er komt geen live tile tevoorschijn. Als ik door de background task heen loop met de debugger krijg ik geen errors.
Om de nieuwe live tiles te gebruiken heb ik in WMAppManifest.xml de notification service op WNS gezet. Ik heb de oude code om de backgroundtask te registreren weggehaald en deze code neergezet:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| var backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync(); if (backgroundAccessStatus == BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity || backgroundAccessStatus == BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity) { foreach (var task in BackgroundTaskRegistration.AllTasks) { if (task.Value.Name == "LiveTileBackgroundTask") { task.Value.Unregister(true); } } BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder(); taskBuilder.Name = "LiveTileBackgroundTask"; taskBuilder.TaskEntryPoint = "BackgroundTasks.LiveTileBackgroundTask"; taskBuilder.SetTrigger(new TimeTrigger(15, false)); var registration = taskBuilder.Register(); } |
Verder heb ik een Windows Phone 8.1 Windows Runtime Component genaamd BackgroundTasks gemaakt, die een BackgroundTask bevat genaamd LiveTileBackgroundTask:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| public sealed class LiveTileBackgroundTask : IBackgroundTask { public void Run(IBackgroundTaskInstance taskInstance) { BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); const string xml = "<tile>" + "<visual>" + "<binding template='TileWideText01'>" + "<text id='1'>Text Field 1 (larger text)</text>" + "<text id='2'>Text Field 2</text>" + "<text id='3'>Text Field 3</text>" + "<text id='4'>Text Field 4</text>" + "<text id='5'>Text Field 5</text>" + "</binding> " + "</visual>" +"</tile>"; XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); TileNotification tileNotification = new TileNotification(doc); TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification); deferral.Complete(); } } |
Verder heb ik een referentie naar deze assembly gemaakt in mijn WP project. Ook heb ik een Background task declaration in mijn Package.appxmanifest gemaakt die BackgroundTasks.LiveTileBackgroundTask als Entry point heeft ingesteld. Als supported task type heb ik Timer en System event aangevinkt.
Wanneer ik de app draai gebeurt er echter niets. Er komt geen live tile tevoorschijn. Als ik door de background task heen loop met de debugger krijg ik geen errors.