0

pour une application métier écrite en tant qu'application universelle Windows, Je souhaite enregistrer une tâche d'arrière-plan lorsque l'application est installée sans avoir besoin de la démarrer. D'après ce que je peux voir, la documentation me pointe vers la capacité préinstallée Configuration dans le Package.appxmanifest et j'ai trouvé this. Cependant, lorsque vous utilisez cette extension, la tâche d'arrière-plan n'est pas enregistrée et je ne vois pas qu'elle exécute quoi que ce soit.Tâche de configuration préinstallée pour l'application UWP non exécutée

Voici mon extension de configuration pré-installé dans Package.appxmanifest:

<Extension Category="windows.preInstalledConfigTask" EntryPoint="Foo.BackgroundTasks.DefaultRegistrationBackgroundTask" /> 

Pour vérifier que la tâche et Entrypoint est réglé correctement, je me suis inscrit à l'aide de la capacité de travail de mise à jour , a augmenté la Version de l'application, déployé à nouveau et la tâche en arrière-plan est enregistré et tout fonctionne comme prévu.

Voici ma mise à jour l'extension des tâches dans Package.appxmanifest:

<Extension Category="windows.updateTask" EntryPoint="Foo.BackgroundTasks.DefaultRegistrationBackgroundTask" /> 

Est-ce le Configuration préinstallée Tâche limitée d'une manière ou besoin autre configuration? Comment puis-je déboguer ce genre de problème? Aucun point d'arrêt n'est touché.

Code de Foo.BackgroundTasks.DefaultRegistrationBackgroundTask:

public sealed class DefaultRegistrationBackgroundTask : IBackgroundTask 
{ 
    private BackgroundTaskDeferral _backgroundTaskDeferral; 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 

     // Deferral is required if code uses any async call 
     _backgroundTaskDeferral = taskInstance.GetDeferral(); 

     // Location Services 
     BackgroundTaskHelper.RegisterBackgroundTask("Foo.BackgroundTasks.LocationBackgroundTask", 
      "Foo.LocationBackgroundTask", 
      new SystemTrigger(SystemTriggerType.UserPresent, false), 
      null); 

     // Referal releases 
     _backgroundTaskDeferral.Complete(); 
    } 
} 

Répondre

1

PreinstalledConfigTask est limitée à des applications pré-installées, à savoir des applications qui viennent avec l'appareil de l'OEM ou Microsoft. Il ne sera pas déclenché pour les applications que l'utilisateur acquiert à partir du Store (ou via side-load).

+0

Merci! Il n'y a donc aucune chance d'enregistrer la tâche d'arrière-plan sans que l'utilisateur démarre l'application? nous pourrions avoir la chance de démarrer automatiquement l'application lors de la première connexion - le pré-lancement serait-il une option? – BenAffleckIsBatman

+0

Correct, il est impossible d'exécuter du code d'application sans que l'application ne soit lancée au moins une fois. Le UpdateTask est une exception ici. Vous êtes invités à enregistrer une suggestion de fonctionnalité sur UserVoice: https://wpdev.uservoice.com/forums/110705-universal-windows-platform –

+0

Une telle fonctionnalité permettrait vraiment de nouveaux cas d'utilisation. Je vais le connecter sur UserVoice. Merci. En supposant que nous avons un contrôle total sur le système d'exploitation, comme c'est un client géré, voyez-vous un autre moyen? Autostart & Prelaunch par exemple? Lorsque le système d'exploitation est déployé par nous, est-il possible d'enregistrer cette application en tant qu'application OEM et d'utiliser la tâche mentionnée ou comment y accéder? – BenAffleckIsBatman