Partager via


Cet article a fait l'objet d'une traduction automatique.

Windows 8,1

Construction d'une application alarme dans Windows 8.1

Tony Champion

Parmi les centaines de nouvelles fonctionnalités dans Windows 8.1 est le concept d'une application d'alarme. En bref, une application d'alarme est un app Store de Windows qui peut planifier des notifications toast à la seconde. En raison des façon dont Windows processus toasts, ce n'est pas une précision offerte à la plupart des applications. Dans cet article, je vais examiner le concept d'une app alarme et regardez ce qu'il faut pour développer une des vôtres.

Ce qui est une App alarme ?

Avant de regarder sous le capot d'une application d'alarme, il est important d'examiner quel type d'applications ferait bonne alarme apps. La clé est de considérer l'exactitude de la prestation des notifications. Par exemple, il n'est pas nécessaire pour une application de calendrier avertir l'utilisateur de l'anniversaire d'un ami à une seconde près. Cependant, il y a plusieurs types d'applications ne nécessitant pas de cette précision.

Le choix le plus évident est un bon vieux réveil app. Lorsqu'un utilisateur définit une alarme, votre application doit notifier l'utilisateur à ce moment-là. Vous pouvez désormais créer plus précis apps de gestion du temps, comme une application de Pomodoro, avec une application d'alarme. Une app alarme peut également être utilisé dans des entraînements courts, tels que Tabata, où la synchronisation des cycles et des restes est extrêmement importante.

Tous les développeurs d'applications Windows Store doivent être familiers avec le concept de Windows 8 de verrouillage écran applications. Les apps qui sont placés sur l'écran de verrouillage sont autorisés à publier des mises à jour de l'écran de serrure. En outre, une application d'écran de serrure a accès à plus de fonctionnalités à une application typique. Ceci est important lorsque votre application doit faire des choses telles que de la mise à jour de l'écran de verrouillage ou d'exécuter de nombreuses tâches de base disponibles.

Le fait que les fonctionnalités supplémentaires en verrouillage écran apps est une conséquence directe des changements dans Windows 8 afin d'améliorer les performances et l'autonomie. Windows est conçu pour empêcher les applications d'exécuter lorsqu'ils ne sont pas utilisés et à consolider des tâches lorsque cela est possible. Pour cette raison, vous trouverez des événements planifiés, telles que les tâches de fond et des notifications, seront toujours exécutés en un temps approximatif. Windows de lots à ces mises à jour et fonctionne quand il a un processus prêt à faire le travail.

Dans Windows 8, vous pouvez définir jusqu'à sept apps pour être sur l'écran de serrure à un moment donné. Ces sept fentes comprenait un slot spécial pour un $ $ etAPP état détaillé. Un dispositif pourrait avoir sept apps d'écran de serrure qui peuvent afficher des insignes ou texte, mais qu'une application qui est capable de fournir une interface utilisateur personnalisée pour l'écran de serrure. 8.1 Windows conserve cette configuration et ajoute l'application d'alarme comme un type spécial de nouvel de verrouillage écran app. Figure 1 montre les nouvelles « verrouillage écran applications » partie des paramètres de l'écran Paramètres du PC. Comme l'application de l'état détaillé, chaque périphérique ne peut avoir un app Alarme simple à la fois.

Lock Screen Part of PC Settings
Figure 1 partie d'écran de verrouillage des paramètres d'ordinateur portable

La seule différence entre une application d'alarme et autres applications d'écran de serrure est la capacité à fournir les notifications toast d'alarme à l'utilisateur moins d'une seconde de l'heure de livraison prévue. Comme mentionné précédemment, de soumettre ou de planifier un toast en un app Store Windows ne garantit pas lorsque ce toast sera livré. Il est livré dans un délai approximatif, mais l'heure exacte est à Windows. Si une application est identifiée par l'utilisateur comme l'app alarme, toasts réguliers sont livrés exactement à l'heure.

Mise en place d'une application d'alarme

Avant une application peut être sélectionnée comme une application d'alarme, le manifeste d'application doit être configuré correctement. Si le manifeste n'inclut pas les caractéristiques requises, puis d'essayer de définir l'application comme l'app alarme dans le code génère une erreur et l'utilisateur n'aura la possibilité de définir l'application manuellement.

Parce qu'un app alarme planifie les toasts, vous devez d'abord activer les toasts. Vous pouvez le faire dans le concepteur de manifestes dans l'onglet Application UI. Une zone de liste déroulante toast-capable se trouvent dans la section Notifications au titre des éléments visuels. On trouvera la section Notifications en vertu de tous les actifs de l'Image ainsi que le sous-groupe Badge Logo. Pour activer les toasts pour l'app, vous devez définir la liste déroulante toast-capable sur Oui.

L'autre propriété dans la section Notifications est la possibilité d'activer le verrouillage écran notifications pour le $ $ etAPP. Comme mentionné précédemment, l'application d'alarme est un type spécial de verrouillage écran app ; C'est pourquoi l'app doit être configuré pour être sur l'écran de serrure. Définissez la liste déroulante notifications écran de verrouillage de Badge ou d'insigne et texte de tuile.

Une fois que vous avez activé le verrouillage écran notifications sur un app, le manifeste doit avoir quelques éléments supplémentaires. Par exemple, un logo insigne doit être assigné à l'application. Le logo doit être une image de 24 x 24 pixels, et comme tous les logos dans un app Store de Windows, vous pouvez spécifier des tailles diverses-échelle pour gérer Windows résolution mise à l'échelle. La figure 2 montre un exemple du concepteur manifest avec toasts et notifications d'écran de verrouillage activées.

Notifications Section of the Manifest Designer
Figure 2 Section de Notifications du concepteur manifeste

N'importe quelle application qui a les notifications d'écran de verrouillage activées doit également déclarer une tâche en arrière-plan dans le manifeste d'application. La partie intéressante de cette exigence est que vous n'avez pas besoin de réellement mettre en œuvre une tâche en arrière-plan dans une application d'écran de serrure ; il vient d'être déclarée.

Une tâche de fond est déclarée dans la section déclarations du concepteur manifeste app. Dans les déclarations disponibles, sélectionnez les tâches en arrière-plan et cliquez sur Ajouter. La tâche de fond pour une application d'écran de serrure doit prendre en charge un des types de tâches suivants : Canal de commande, minuterie, Push notification ou emplacement. Dans la section de paramètres d'application de la tâche en arrière-plan, vous devez définir le point d'entrée ou d'une valeur de page de démarrage. Dans une application XAML qui utilise la tâche de fond, le point d'entrée est défini pour la classe qui implémente l'interface IBackgroundTask. Si l'app n'est pas réellement mettre en œuvre une tâche de fond, la valeur peut être de n'importe quoi. Figure 3 montre une tâche en arrière-plan correctement configuré pour permettre à une application à ajouter à l'écran de serrure.

Configuring a Background Task
Figure 3 configuration d'une tâche de fond

L'étape finale en configurant le manifeste d'application doit identifier l'application comme une application d'alarme. Effectuez cette opération en ajoutant une extension de l'alarme dans le manifeste. Malheureusement, il n'est pas possible d'ajouter cette extension à travers le concepteur de manifestes ; il doit être fait à la main. Pour ce faire, vous devez d'abord obtenir au document XML sous-jacent du manifeste du package. Ce faire un clic droit sur package.appxmanifest dans l'Explorateur de solutions et sélectionnez Afficher le Code.

Le code XML dans un manifeste d'application Windows 8.1 utilise deux espaces de noms. Le premier espace de noms (qui est la valeur par défaut) contient les éléments définis dans Windows 8. Le deuxième espace de noms doit être ajoutée et identifié par le préfixe m2. Il comprend des ajouts et modifications ajoutées au point 8.1 de Windows. Puisque la fonction d'alarme de $ $ etAPP est une nouveauté à 8.1 de Windows, vous devez ajouter une extension "8.1" à la collection d'Extensions dans l'élément d'Application. La propriété Category de la nouvelle extension doit être sur windows.alarm. Voici un exemple de ce que la collection d'Extensions devrait ressembler avec la nouvelle extension et la tâche d'arrière-plan déclarée précédemment :

<Extensions>
  <Extension Category="windows.backgroundTasks" 
      EntryPoint="App">
    <BackgroundTasks>
      <Task Type="timer" />
    </BackgroundTasks>
  </Extension>
  <m2:Extension Category="windows.alarm" />
</Extensions>

Demande d'accès alarme

Une fois que les paramètres appropriés et les déclarations ont été faites, votre application peut alors demander accès à définir comme l'application d'alarme pour le périphérique. L'utilisateur peut le faire manuellement les paramètres du PC ; Toutefois, votre application peut demander l'accès via le Windows Runtime (WinRT).

Le Runtime Windows inclut une classe statique de AlarmApplicationManager dans l'espace de noms Windows.ApplicationModel.Background. Cette classe possède une méthode RequestAccessAsync qui invite l'utilisateur pour obtenir l'autorisation définir l'application comme le dispositif d'alarme app, comme le montre Figure 4. Si une application différente est actuellement identifiée comme l'application d'alarme, il est remplacé par l'actuel si l'utilisateur sélectionne Oui lorsque vous y êtes invité.

An Alarm App Permission Prompt
Figure 4 une invite d'autorisation App alarme

La méthode RequestAccessAsync retourne une énumération AlarmAccessStatus qui a trois valeurs valides : Refusé, AllowedWithWakeup­capacité et AllowedWithoutWakeupCapability. Il s'agit d'impor­tant si vous créez des applications d'alarme pour des choses comme réveil matin d'alarmes. Si l'appareil est en mode "veille" et il n'est pas configuré pour autoriser les notifications toast pour le réactiver, puis votre alarme ne se déclenche.

Il est important de se rappeler que Windows 8 met l'utilisateur dans le contrôle d'un appareil. Comme le montre Figure 1, un utilisateur peut facilement modifier l'alarme $ $ etAPP. Votre défi est que chaque application peut seulement demander l'accès de l'AlarmApplicationManager une fois. Si l'application effectue une deuxième demande d'accès — pour cet utilisateur et dispositif — il ne sera pas inviter l'utilisateur et sera de retour seulement l'état d'alarme actuel de l'application. Une fois que votre application a été refusée, remplacée par une application différente ou supprimée manuellement par l'utilisateur, votre seule option consiste à informer l'utilisateur que l'application doit être ajouté manuellement comme l'application d'alarme pour le périphérique.

Le AlarmApplicationManager comprend également une méthode GetAccessStatus qui retourne l'état d'alarme actuel de la machine. Comme avec la méthode RequestAccessAsync, il retourne une énumération de AlarmAccessStatus et est un excellent moyen pour déterminer ce qui se passe avec l'appareil. Par exemple, votre application pouvait informer l'utilisateur si les notifications ne sera pas réveiller l'appareil.

Programmation des alarmes

Les alarmes sont en fait qu'une notification de toast régulier avec un peu plus de coup de pied. Le processus de planification d'une alarme est identique à la planification d'une notification de pain grillé, la seule différence étant la notification XML. Le XML utilisé pour définir une notification contiendra des informations sur son apparence, mais aussi toutes les fonctionnalités incluses.

Un toast peut être juste texte ou une combinaison de texte et une image, tel que défini par l'un des modèles fournis par le Runtime de Windows. Il y a actuellement huit modèles XML différents, d'où vous pouvez choisir. A ce jour, 8.1 de Windows ne supporte pas layouts toast personnalisé, donc vous devez choisir un des modèles fournis.

Le type et la disposition d'un toast est défini dans un bloc de XML. Le code XML identifie le modèle de toast à employer, le texte et l'image pour remplir le modèle et plusieurs autres options que j'aborderai plus tard. Voici un exemple d'une notification de base toast :

<toast duration="long">
  <visual>
    <binding template="ToastText02">
      <text id="1">Sample Toast App</text>
      <text id="2">The is a sample message.</text>
    </binding>
  </visual>
</toast>

Il y a plusieurs façons de générer le modèle de toast. Le Runtime de Windows va créer un XmlDocument de chaque modèle de la ToastNotificationManager, qui se trouve dans l'espace de noms Windows.UI.Notification. Le ToastNotificationManager a une méthode GetTemplateContent statique qui prend une énumération ToastTemplateType qui a une valeur pour chacun des modèles disponibles. Voici un exemple de comment obtenir un objet XmlDocument de l'exemple précédent :

XmlDocument content =
  ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
content.DocumentElement.SetAttribute("duration", "long");
var textLines = content.GetElementsByTagName("text");
textLines[0].InnerText = "Sample Toast App";
textLines[1].InnerText = "The is a sample message.";

Il s'agit d'un excellent point de départ ; Toutefois, selon votre utilisation, il peut être un peu lourd. C'est pourquoi des ajouts ou des modifications au modèle normalement se fera à l'aide de l'API XmlDocument. Cela peut conduire à quelques lignes de code pour quelques additions simples. Dans cette optique, il n'est pas rare de trouver le code XML construit sous forme de chaîne et puis chargé dans un objet XmlDocument, une fois le modèle terminé. Figure 5 montre comment atteindre l'équivalent de l'exemple précédent en générant le code XML sous forme de chaîne.

Figure 5 générer XML sous forme de chaîne

string textLine1 = "Sample Toast App";
string textLine2 = "This is a sample message.";
string contentString =
  "<toast duration=\"long\">\n" +
    "<visual>\n" +
      "<binding template=\"ToastText02\">\n" +
        "<text id=\"1\">" + textLine1 + "</text>\n" +
        "<text id=\"2\">" + textLine2 + "</text>\n" +
      "</binding>\n" +
    "</visual>\n" +
  "</toast>\n";
XmlDocument content = new Windows.Data.Xml.Dom.XmlDocument();
content.LoadXml(contentString);

Si vous allez à cet itinéraire, vous devez être prudent de deux choses. Tout d'abord, vous devez vous assurer, vous générez XML correctement mis en forme, prendre soin d'échapper à des caractères spéciaux pouvant être inclus dans la chaîne. Deuxièmement, assurez-vous que vous suivez le schéma de la notification de pain grillé. Le centre de Dev Windows fournit les spécifications complètes pour le schéma à bit.ly/172oYCO.

Tous les exemples précédents ont un élément qui ne fait pas partie du modèle par défaut. Vous avez sans doute remarqué l'attribut de durée sur l'élément de grillage a été défini longtemps. Parce que vous créiez alarme notifications toast, vous ne voulez pas l'alarme à apparaître et disparaître ensuite sans interaction de l'utilisateur. Réglage de la durée de temps garder le toast à l'écran pendant 25 secondes.

Une fois que vous avez votre XML configuré et chargées dans un objet XmlDocument, vous pouvez planifier votre pain grillé. La première étape consiste à créer une instance d'une ScheduledToastNotification. Vous avez besoin de deux choses pour créer une ScheduledToastNotification : XmlDocument contenant la définition de pain grillé et un temps pour le toast d'être programmé.

La ScheduledToastNotification est à la demande avec un ToastNotifier. Création d'une instance d'un ToastNotifier de la ToastNotification­classe de gestionnaire à l'aide de la méthode CreateToastNotifier statique. Un appel à la méthode ToastNotifier AddToSchedule fixera ensuite votre toast à livrer. Généralement, les toasts sont créés comme le résultat d'une action de l'utilisateur, par exemple en appuyant sur un bouton, ou un événement qui est déclenché au sein de l'app. Voici un exemple de création et planification d'un toast pour 1 minute de l'heure :

ToastNotifier toastNotifier =
  ToastNotificationManager.CreateToastNotifier();
var scheduledToast = new ScheduledToastNotification(
  content, DateTime.Now.AddMinutes(1));
toastNotifier.AddToSchedule(scheduledToast);

Le toast résultant généré peut être vu dans Figure 6. Avis, qu'il devrait ressembler à la plupart des toasts vous avez vu dans Windows.

A Basic Toast Notification
Figure 6 base de Toast Notification

Une notification de toast peut échouer pour plusieurs raisons différentes. La raison la plus fréquente est que le code XML est incorrectement formaté. Cela peut résulter d'ayant un id de modèle incorrect ou ne définit ne pas tous les attributs requis, il est donc important pour s'assurer que vous obtenez le code XML de droite.

Si vous essayez de programmer un toast pour un temps qui s'est déjà écoulé, une exception sera levée lors de l'appel de AddToSchedule. Si vous êtes planifiez un toast pour quelques secondes dans le futur, assurez-vous que le délai de réapprovisionnement est l'une des dernières choses que vous faites. Définir un temps pendant 2 secondes de temps prendre 4 secondes pour exécuter du code avant de programmer en fait que toast lèvera une exception.

Enfin, votre application ne peut avoir que 4 096 toasts à la demande à la fois. Je sais que votre première pensée est, "aucun moyen qui va se passer", mais pour un soft de l'alarme, il est plus facile à faire que vous ne le pensez. Supposons que vous ayez une application de réveil qui permet à l'utilisateur de programmer une alarme quotidienne. Si votre code planifie plusieurs alarmes journalières pour chaque jour de l'an prochain, puis 12 alarmes quotidiennes seront sur votre max. Cela signifie que vous devez vous assurer que vos algorithmes d'ordonnancement des alarmes sont pensés et que vous gérez les alarmes une fois ils sont créés.

Gestion et suppression des alarmes

Pour réussir à construire une application d'alarme, vous devez avoir la capacité d'examiner et d'éliminer les éventuelles alarmes réguliers. Le ToastNotifier peut accomplir ces deux tâches. Appel à la méthode GetScheduledToastNotifications retourne une liste en lecture seule de ScheduledToastNotifications. La collection contient uniquement les notifications planifiées pour l'application actuelle.

Pour supprimer une notification régulier, la notification à supprimer doit être passée à la méthode RemoveFromSchedule. Entre ces deux méthodes, vous pouvez conserver vos notifications planifiées. Une fois qu'une notification a été validée et puis rejetée par l'utilisateur, il n'apparaîtra plus dans la collection de l'application des notifications et ne sera pas pris en compte pour le nombre maximal de notifications planifiées autorisées. Voici comment faire pour effacer toutes les notifications planifiées :

var toastNotifier = ToastNotificationManager.CreateToastNotifier();
var notifications = toastNotifier.GetScheduledToastNotifications();
// Remove each notification from the schedule
foreach (var notification in notifications)
{
  toastNotifier.RemoveFromSchedule(notification);
}

Vous pouvez placer ce code dans un gestionnaire de commande ou d'un événement lié à un bouton effacer tout, par exemple.

Ajout de commandes

Si votre application est actuellement l'application d'alarme pour le périphérique, puis l'exemple précédent ayant généré le toast montré dans Figure 6 affichera le temps, mais Figure 6ne ressemble pas un peu comme une alarme, faut-il ? Avant tout, il vous manque quelques fonctionnalités communes pour une alarme : rappel d'alarme et de rejeter. Par défaut, en cliquant sur le pain grillé ou en frappant à toute volée il fera disparaître Toutefois, une alarme doit être un peu plus intuitive.

Outre le < toast > élément soutenant un < visuel > élément enfant, il supporte également un < commandes > élément. Cet élément vous permet d'ajouter des commandes prédéfinies au toast. L'élément lui-même prend en charge un attribut unique scénario facultatif. L'attribut de scénario peut être défini à alarme ou incomingCall. Pour mon but ici, elle sera toujours égale à l'alarme.

Les commandes de < > élément contient une collection d'individu < commande > éléments. Chaque commande doit avoir un attribut id identifier quel type de commande, il est. Pour qu'une alarme, cela doit être soit snooze ou rejeter. En ajoutant une section de commandes à votre toast précédente, votre toast ressemble maintenant un peu plus à une alarme et a la capacité non seulement être rejeté mais afin de répéter ainsi. Voici le code nouvellement généré toast (vous pouvez voir les résultats du présent code dans Figure 7) :

<toast duration="long">
  <visual>
    <binding template="ToastText02">
      <text id="1">Sample Toast App</text>
      <text id="2">The is a sample message.</text>
    </binding>
  </visual>
  <commands scenario="alarm">
    <command id="snooze"/>
    <command id="dismiss"/>
  </commands>
</toast>

An Alarm Toast Notification
Figure 7 une Notification d'alarme Toast

Définition de la fonction Snooze

Par défaut, Windows définit l'heure de répétition pour une alarme à 9 minutes. Toutefois, vous pouvez définir la durée de la répétition dans la classe ScheduledToastNotification. Cette classe possède un constructeur deuxième avec deux paramètres supplémentaires. Le premier est la longueur de temps pour le rappel d'alarme. L'intervalle de répétition est défini comme un TimeSpan et peut aller n'importe où de 1 à 60 minutes.

Le nouveau deuxième paramètre est le nombre maximal de fois où que l'utilisateur peut frapper le rappel d'alarme sur l'alarme. La définition de cette valeur à zéro permet à l'utilisateur de frapper le rappel d'alarme un nombre illimité de fois. Voici un exemple de réglage de la fréquence de répétition :

DateTime scheduledTime = DateTime.Now.AddMinutes(1);
TimeSpan snoozeInterval = TimeSpan.FromMinutes(5);
var scheduledToast = new ScheduledToastNotification(
  content, scheduledTime, snoozeInterval, 0);

Changer la sonnerie d'alarme

Si l'utilisateur a activé son pour les notifications, puis chaque toast fera le même « ding » sonore lorsqu'un message de toast est affiché. Cela provoque quelques problèmes quand il s'agit de créer une application d'alarme. Tout d'abord, l'utilisateur s'habitue à entendre le même son pour toutes les notifications. Cela signifie une alarme peut se fondre dans le bruit des autres notifications et pas se démarquer. Le deuxième problème est que généralement une alarme continue à faire sonner jusqu'à ce que l'utilisateur reconnaît elle. Donc, vous voulez une alarme à un certain type de boucles sonores.

Heureusement, la définition de toast prend également en charge un < audio > élément qui permet de personnaliser le son produit lorsque le toast apparaît. Le < audio > élément possède deux attributs : SRC et boucle. Avant d'arriver trop excité, la valeur de l'attribut src doit être une des valeurs prédéfinies fournies par Windows. Cela signifie que vous ne pouvez fournir audio personnalisé pour vos notifications toast, mais vous avez une collection décente de sons parmi lesquelles choisir.

La valeur de la src doit être une des 25 valeurs prédéfinies. Les sons sont divisés en catégories de bouclage et non bouclage. Les sons en boucle sont construits pour la boucle de façon transparente et devraient être utilisés lors de la création d'une notification audio en boucle. Il est 10 alarme boucle sons et 10 entrants appeler en boucle sons fournis. Une liste complète des valeurs prédéfinies peut être trouvée à bit.ly/16HV2xm.

Si vous voulez jouer un son en boucle, l'attribut loop doit être défini sur true. En outre, l'attribut de durée sur le toast < > élément doit être défini sur de long afin de donner le temps sonore à jouer. Figure 8 montre un exemple de définition d'un son audio en boucle personnalisé pour vos toasts.

Figure 8 définissant une coutume boucle Audio haute fidélité pour un Toast

<toast duration="long">
  <visual>
    <binding template="ToastText02">
      <text id="1">Sample Toast App</text>
      <text id="2">The is a sample message.</text>
    </binding>
  </visual>
  <commands scenario="alarm">
    <command id="snooze"/>
    <command id="dismiss"/>
  </commands>
  <audio src="ms-winsoundevent:Notification.Looping.Alarm2"
     loop="true" />
</toast>

Si vous ne voulez pas votre toast à jouer tous les sons, vous pouvez définir un attribut silencieux sur true. Cela remplacera tous les paramètres par défaut sur l'affichage des toasts. Figure 9 montre comment il est utilisé.

La figure 9 en définissant l'attribut silencieux donc un Toast ne joue pas tous les sons

<toast duration="long">
  <visual>
    <binding template="ToastText02">
      <text id="1">Sample Toast App</text>
      <text id="2">The is a sample message.</text>
    </binding>
  </visual>
  <commands scenario="alarm">
    <command id="snooze"/>
    <command id="dismiss"/>
  </commands>
  <audio silent="true" />
</toast>

Pensée au-delà de votre App

Vous pouvez prendre une app alarme dans de nombreuses directions différentes. Parce que chaque périphérique peut avoir seulement un app Alarme simple, il est important de penser au-delà de votre application. Si la portée de votre application est trop limitée, alors l'utilisateur peut remplacer par une application différente. Cela dépend bien sûr, l'objectif pour votre application et son auditoire cible. Considérer les choses telles que l'utilisation du contrat part cible pour permettre à d'autres applications pour programmer des alarmes par l'intermédiaire de votre application.

Avec l'ajout de la fonctionnalité de app alarme 8.1 de Windows, vous pouvez désormais créer un large éventail d'applications basés sur le temps avec la précision attendue par l'utilisateur. Je vous ai montré ce qu'il faut pour vous aider en cours d'exécution avec un alarme $ $ etAPP. Maintenant, pas plus frapper la touche snooze. Rendez-vous et créer la prochaine application d'alarme incroyable !

Tony Champion est président de Champion DS et est MVP Microsoft. Il est actif dans la communauté comme orateur, blogueur et auteur. Il anime un blog à tonychampion.net et puisse être joint par courriel à tony@tonychampion.net.

Merci aux experts techniques suivants d'avoir relu cet article : Pete Brown (Microsoft)
Pete Brown est responsable de programme dans l'équipe d'évangélisation Client et dispositifs, en se concentrant sur XAML et applications modernes sur tous les périphériques de Windows. Son accent est à aider les développeurs à créer des applications de beau et de grande qualité, qui permettent la créativité. Il est sur twitter à @pete_brown et sur le web à 10rem.net.