Windows Phone

Mise à niveau des applications Windows Phone 7.1 vers Windows Phone 8

Michael Crump

Si certains développeurs ont mis à niveau leurs projets Windows Phone 7.1 pour tirer profit des nouvelles fonctionnalités de Windows Phone 8, d'autres ont des questions concernant ce qui est nécessaire pour la mise à niveau et quels outils et fonctionnalités supplémentaires ils devraient utiliser. Dans cet article, je montrerai que le passage de Windows Phone 7.1 à Windows Phone 8 est plus simple que vous ne le pensez peut-être. 

Nouveaux modèles

Avant de regarder les modèles, commencez pas vous demander quels problèmes concrets vous allez résoudre en procédant à la mise à niveau. Les développeurs de jeux, qui travaillent principalement avec XNA, pourront vouloir passer à Direct3D parce que XNA n'est plus développé activement par Microsoft. Vous avez encore la possibilité de créer une application XNA, mais elle ne profitera pas des nouvelles fonctionnalités de Windows Phone 8.

De même, les développeurs Web natifs ont enfin la chance de plonger au cœur de l'action. En effet, Internet Explorer 10 est préinstallé sur le téléphone. Mais, au-delà du développement Web et les jeux, Windows Phone 8 intègre une pléthore de nouvelles fonctionnalités pour les développeurs XAML/C# et Visual Basic.

Voici les nouveaux modèles inclus dans le kit de développement logiciel (SDK) Windows Phone 8 :

  • Application Direct3D et Windows Phone XAML : il s'agit d'un projet permettant de créer une application gérée par Windows Phone, avec composants natifs. Au premier lancement, vous remarquerez qu'elle s'accompagne de deux projets : un projet Windows Phone 8 et un composant Windows Runtime (WinRT) en C++.
  • Application Windows Phone HTML5 : il s'agit d'un projet permettant de créer une application Windows Phone, qui utilise principalement du contenu HTML. Ce modèle est souvent confondu avec la version de la bibliothèque Windows pour JavaScript (WinJS) de Windows Phone, ce qu'il n'est pas. Il utilise simple un contrôle WebBrowser pour afficher du contenu HTML5.
  • Test unitaire Windows Phone : ce projet contient des tests unitaires qui peuvent être utilisés pour tester des applications Windows Phone. Ce modèle est ajouté après que vous avez installé la version finale de Visual Studio Update 2. 

Mise à niveau de votre projet existant

Bien sûr, les nouveaux modèles de projet aident au développement de nouvelles applications, mais que diriez-vous d'une application basée XAML déjà intégrée dans Windows Phone 7.1 ? La bonne nouvelle, c'est que vous pouvez mettre à niveau de telles applications vers Windows Phone 8 en cliquant avec le bouton droit sur le projet Windows Phone 7.1 dans Visual Studio 2012 et en sélectionnant Mettre à niveau vers Windows Phone 8. Une invite vous prévient que cette mise à niveau ne peut pas être annulée et ne met à jour aucun des projets référencés. Avant de poursuivre, vous devez vous assurer que votre application est sauvegardée. Vous pouvez également procéder à une mise à niveau vers Windows Phone 8 en sélectionnant Propriétés du projet, en cliquant sur la page Application, puis sur Windows Phone OS 8 dans la liste déroulante avant d'enregistrer vos modifications.

De même, si vous avez encore un projet Windows Phone 7 quelque part, vous serez invité à procéder à sa mise à niveau Windows Phone 7.1 avant de le passer à Windows Phone 8. Là encore, je vous recommande de sauvegarder votre projet avant de poursuivre.

Une fois votre application mise à niveau vers Windows Phone 8, vous pouvez utiliser les nouveaux outils et fonctionnalités de kit de développement logiciel (SDK). Je vais maintenant étudier toutes les nouvelles options d'émulateur identifiées dans Windows Phone 8.

Nouvelles options d'émulateur

Dans Windows Phone 7.1, vous pouvez déployer uniquement vers deux types d'émulateurs avec la taille d'écran cible 480x800 (WVGA). La taille de RAM (512 Mo ou 256 Mo) constitue la seule différence au niveau des images d'émulateur. Deux nouvelles tailles d'écran ont été ajoutées sur Windows Phone 8 : 768x1280 (WXGA) et 720x1280 (720p). Vous avez également la possibilité de télécharger la mise à jour du kit de développement logiciel (SDK) Windows Phone pour Windows Phone 7.8 (à l'emplacement suivant : bit.ly/10pauq4) pour ajouter des émulateurs afin de tester le mode d'exécution de vos applications sur des appareils Windows Phone 7.8. Du fait que le modèle d'applications XNA et XAML pour Windows Phone s'adressent à Windows Phone OS 7.1, vous pouvez toujours tester votre application sur un émulateur Windows Phone 8. Vous pouvez consulter une liste de tous les anciens et nouveaux émulateurs disponibles sur la figure 1.

Emulator Options in Windows Phone 8
Figure 1 Options d'émulateurs dans Windows Phone 8

Avec les différents émulateurs disponibles, vous n'avez plus à dépendre d'un matériel physique pour voir votre application s'exécuter sur les nombreux appareils Windows Phone 7 et 8 disponibles. Les nouveaux émulateurs Windows Phone 8 sont de véritables machines virtuelles (MV) et représentent l'une des meilleures améliorations apportées au kit de développement logiciel (SDK). 

Remarque : pour les nouveaux émulateurs, vous aurez besoin de Hyper-V, qui n'est disponible que dans Windows 8 Pro ou Entreprise. Pour plus d'informations, consultez la page du Centre de développement Windows Phone, « Configuration système pour émulateur Windows Phone », à l'adresse suivante bit.ly/QWhAA2.

Gardez également bien à l'esprit qu'avec les processeurs puissants sur les PC modernes, vous devriez tester votre application sur un appareil physique avant de la soumettre au marché afin d'évaluer sa performance en conditions réelles.

À présent que vous avez vu comment les nouveaux modèles peuvent profiter à différents groupes de développeurs, et que vous avez consulté les nouvelles options d'émulateur et combien il est simple de mettre à jour votre projet existant vers Windows Phone 8, il est temps de commencer à vous attaquer aux autres questions importantes que les développeurs Windows Phone 7 ont rencontrées.

Le tableau de bord de la simulation

Lorsqu'une application Windows Phone est en cours d'exécution, divers éléments peuvent interrompre l'expérience utilisateur : réponse lente, absence d'accès à Internet, rappels d'appel entrant, échec de restauration par l'application de son statut après que le téléphone a été verrouillé, et plus encore. Dans Windows Phone 7.1, vous seriez sans doute contraint d'écrire du code simulant ces situations. À présent, vous pouvez les gérer avec le tout nouveau tableau de bord de la simulation, comme illustré sur la figure 2.

The Simulation Dashboard Included in the Windows Phone 8 SDK
Figure 2 Le tableau de bord de la simulation inclus dans le kit de développement logiciel Windows Phone 8

Vous pouvez accéder à ce menu en sélectionnant Outils | Tableau de bord de la simulation dans Visual Studio 2012. En utilisant le tableau de bord de la simulation, vous pouvez tester le bon fonctionnement de votre application dans différentes situations avant de la lancer sur le marché.

En permettant la simulation de réseau et en sélectionnant une vitesse de réseau, vous pouvez tester divers réseaux cellulaires de données ainsi que le Wi-Fi ou des scénarios impliquant une absence de réseau. Les options de force du signal sont particulièrement intéressantes. En effet, elles affectent le taux de pertes de paquets et le temps de réponse du réseau. Avec ces options à portée de main, vous devriez être en mesure de créer une application Windows Phone 8 performante dans divers scénarios.

Toute application visant Windows Phone 7.1 ou 8 est désactivée une fois que l'écran de verrouillage a été activé. Elle est réactivée une fois l'appareil déverrouillé. Dans le tableau de bord de simulation, vous avez la possibilité de verrouiller et de déverrouiller facilement l'écran afin de tester comment votre application gère l'activation ou la désactivation. Vous pouvez sinon appuyer sur la touche F12 pour afficher l'écran de verrouillage.

Enfin, vous pouvez utiliser des « rappels du déclencheur » qui simuleront une alarme, un rappel, un appel téléphonique, un message texte ou une notification toast. Là encore, vous pouvez les utiliser pour tester la manière dont votre application gère l'activation ou la désactivation.

Analyse de l'application Windows Phone

Si le tableau de bord de la simulation est utile pour fournir des scénarios pratiques susceptibles d'être rencontrés par un utilisateur une fois que votre application s'exécute sur son téléphone, il n'a pas d'influence sur la performance de votre application. C'est là que vous pouvez utiliser l'analyse d'application Windows Phone, disponible dans le menu Déboguer | Démarrer l'analyse de l'application Windows Phone.

Cet outil fournit une surveillance d'applications qui aide à évaluer l'heure de début et la réactivité, ainsi qu'un profilage. Cela vous aide à évaluer les problèmes d'exécution ou de mémoire­ de votre application. L'option d'exécution du profilage inclut des paramètres avancés qui vous permettent de réaliser des actions telles qu'un profilage visuel et un échantillonnage de code, alors que les options de mémoire vous permettent de collecter des références d'objets et des piles d'allocation de mémoire. Ces deux options aboutiront à un graphique affiché dans Visual Studio 2012 ainsi qu'un fichier .sap horodaté, ajouté à votre projet. Avec les graphiques générés, vous pouvez analyser des heures de début et de fin spécifiques, et consulter le résumé de l'observation généré par Visual Studio 2012. L'outil d'analyse de l'application Windows Phone fait partie intégrante de votre processus d'assurance qualité.

Store Test Kit

Après avoir testé votre application dans différents scénarios d'utilisateurs et testé la performance de votre application avec l'aide du kit d'analyse de l'application Windows Phone, vous devez tester votre application afin de vous assurer qu'elle est certifiable dans le Windows Phone Store. Cette étape est essentielle. En effet, 30 minutes maintenant peuvent vous permettre de vous éviter plusieurs jours de temps perdu si l'application connaissait une défaillance à cause d'un élément qui aurait été identifié en utilisant ce kit.

Le kit est facile d'accès en cliquant avec le bouton droit sur votre application et en sélectionnant Ouvrir Store Test Kit. Windows Phone 7.1 incluait également cette fonctionnalité, mais elle s'appelait Marketplace Test Kit. Des tests nouveaux et améliorés s'adressant à Windows Phone 8 ont été ajoutés.

Au premier lancement, vous pourrez voir un message avec un fond bleu en bas de votre écran indiquant : « Les cas de test Windows Store ont été mis à jour. Voulez-vous installer les cas de test mis à jour ? » Vous pouvez sélectionner Mettre à jour et télécharger des tests nouveaux ou modifiés. Cela est utile parce que vous savez toujours que vous travaillez avec les derniers tests disponibles.

Vous verrez trois onglets sur la gauche de votre écran : Détails de l'application, Tests automatisés et Tests manuels. Détails de l'application garantit que les ressources image sont conformes aux instructions dans le Windows Phone Store. Cela inclut la Vignette Windows Store, ainsi que les captures d'écran de l'application pour WVGA, WXGA et 720p, si votre projet prend en charge ces résolutions. Tests automatisés vérifie les captures d'écran, l'iconographie et les exigences du package XAP. Pour appeler cette fonctionnalité, il vous suffit de cliquer sur le bouton Exécuter le test. Le dernier onglet contient des tests manuels. À la date de rédaction de cet article, 61 tests manuels sont disponibles. Vous devez indiquer manuellement si le test a abouti ou non, mais une documentation complète vous indique comment procéder. Les tests manuels incluent ceux s'adressant à une prise en charge de plusieurs périphériques, une fermeture d'application, la réactivité, et d'autres.

La localisation en toute simplicité

Avec Windows Phone 7, nombre de développeurs d'applications regrettaient de ne pas pouvoir localiser leurs applications. Cela était souvent dû au fait qu'ils bénéficiaient de peu ou pas d'aide pour traduire d'une langue à une autre. Le récent lancement du Kit de ressources pour application multilingue et de nouveaux modèles de projets a résolu cette question.

Le modèle Windows Phone 8 par défaut vous guide dans la localisation à l'aide de commentaires intégrés dans le fichier MainPage.xaml. Il structure également votre application avec une classe assistance et un dossier de ressources. Microsoft a ajouté le Kit de ressources pour application multilingue qui se trouvait à l'origine dans Windows 8. Une fois le Kit de ressources pour application multilingue pour Visual Studio 2012 (bit.ly/NgggGU) installé, l'opération consiste tout simplement à sélectionner Outils | Activer le kit de ressources pour application multilingue. Une fois le kit de ressources activé pour votre projet, sélectionnez Projet | Ajouter des langues de traduction pour visualiser les langues disponibles, comme illustré sur la figure 3.

The Translation Languages Dialog Included with the Multilingual App Toolkit
Figure 3 La boîte de dialogue Langues de traduction incluse dans le kit de ressources pour application multilingue

Vous pouvez filtrer la langue de votre choix puis appuyer sur OK. Les fichiers de langue adéquats sont automatiquement ajoutés à votre dossier de ressources. Vous devez prêter une attention toute particulière au fichier avec l'extension .xlf. Il s'agit d'un fichier XLIFF (XML Localization Interchange File Format) standard qui vous offre un contrôle plus précis sur toutes traductions artificielles. Double-cliquez dessus pour afficher l'éditeur multilingue qui vous permettra de traduire d'une langue à l'autre en cliquant simplement sur le bouton Traduire. Vous pouvez en voir un exemple sur la figure 4.

Translating from One Language to Another 
Figure 4 Traduction d'une langue à une autre

Sur la figure 4, vous pouvez voir qu'il a traduit automatiquement plusieurs termes pour moi. Une fois une traduction terminée, vous pouvez la valider ou la faire suivre à un traducteur humain pour relecture. Dans cet exemple, les seuls mots ayant besoin d'être relus étaient « MEINE TELERIK APP » parce que le terme « Telerik » n'est pas dans la ressource de traduction. Le traducteur humain se rendra compte que Telerik s'orthographie de la même façon en allemand et en anglais, et qu'il peut donc être conservé tel quel. Vous pouvez enregistrer ce fichier pour obtenir une prise en charge supplémentaire pour une autre langue.

Afin de tester cela, il vous suffit de changer le titre de l'application dans MainPage.xaml par la ligne suivante :

<TextBlock Text="{Binding Path=LocalizedResources.ApplicationTitle,
  Source={StaticResource LocalizedStrings}}"
  Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>

Puis configurez la langue du téléphone sur celle que vous avez indiquée. Dans mon exemple, j'ai choisi Allemand et le titre de l'application s'affiche comme suit : « MEINE TELERIK APP ». 

Exploitation du cœur partagé

Le lancement de Windows 8 s'est accompagné d'un cœur partagé que les développeurs Windows Phone 8 peuvent utiliser. Parmi les améliorations les plus remarquables dans le Microsoft .NET Framework 4.5, on signalera la prise en charge d'async/await, ainsi qu'une manière plus simple d'utiliser le stockage isolé.

Dans Windows Phone 7.1, pour écrire un fichier vers le stockage isolé, vous écriviez généralement le code affiché à la figure 5.

Figure 5 Écriture d'un fichier vers le stockage isolé dans Windows Phone 7.1

private void WriteFileToIsolatedStorage(string fileName, 
  string fileContent)
{
  using (IsolatedStorageFile isolatedStorageFile =
    IsolatedStorageFile.GetUserStoreForApplication())
  {
    using (IsolatedStorageFileStream isolatedStorageFileStream =
      isolatedStorageFile.CreateFile(fileName))
    {
      using (StreamWriter streamWriter =
        new StreamWriter(isolatedStorageFileStream))
      {
        streamWriter.Write(fileContent);
      }
    }
  }
}

Le code à la Figure 5utilise l'espace de noms System.IO.IsolatedStorage qui n'est pas présent dans Windows 8. À la place, à la fois Windows 8 et Windows Phone 8 peuvent utiliser Windows.Storage et le modèle async/await pour empêcher les goulots d'étranglement au niveau de la performance et améliorer la réactivité globale de votre application. Voici un exemple de la manière d'écrire exactement le même appel dans Windows Phone 8, en tirant profit du cœur partagé :

public async Task WriteFileToIsolatedStorage(
  string fileName, string fileContent)
{
  IStorageFolder applicationFolder = 
    ApplicationData.Current.LocalFolder;
  IStorageFile storageFile = await applicationFolder.CreateFileAsync(
    fileName, CreationCollisionOption.ReplaceExisting);
  using (Stream stream = await storageFile.OpenStreamForWriteAsync())
  {
    byte[] content = Encoding.UTF8.GetBytes(fileContent);
    await stream.WriteAsync(content, 0, content.Length);
  }
}

Un autre espace de noms amplement utilisé dans Windows 8 est HttpClient. Bien que le kit de développement logiciel (SDK) de Windows Phone 8 continue d'utiliser la classe WebClient par défaut, Microsoft a fourni la classe HttpClient via NuGet. Si vous cherchez simplement « Microsoft.Net.Http » et que vous installez NuGet package, vous pouvez écrire du code comme l'extrait suivant qui fonctionnera aussi bien dans Windows 8 que dans Windows Phone 8 :

private async void Button_Click(object sender, RoutedEventArgs e)
{
  var httpClient = new HttpClient();
  var request = await httpClient.GetAsync(new Uri(
    "https://www.microsoft.com/", UriKind.RelativeOrAbsolute));
  var txt = await request.Content.ReadAsStringAsync();
  // Do something with txt, such as MessageBox.Show(txt)
}

Nouvelles fonctionnalités essentielles

J'ai jusqu'à présent abordé différentes manières de faciliter votre transition vers Windows Phone 8. Je vais maintenant étudier les différentes nouvelles fonctionnalités vitales pour votre application.

Nouveaux types de vignettes Windows Phone 7.1 a un type de vignettes dit de vignettes tournantes et une taille de vignette, 173x173, autrement connue comme étant le type de vignette moyenne. Windows Phone 8 présente de nouveaux types et de nouvelles tailles de vignettes :

  • Vignette tournante : elle est identique à celle de Windows Phone 7.1, exceptées les nouvelles tailles de vignettes, et tourne de l'avant vers l'arrière.
  • Vignette sous forme d'icône : elle se base amplement sur les principes de conception de Windows Phone pour un aspect moderne.
  • Vignette cyclique : elle vous permet de parcourir jusqu'à neuf images.

La figure 6 présente une comparaison des tailles de vignettes.

Figure 6 Comparaisons de tailles de vignettes entre les différents types de vignettes

Taille de vignette Tailles Tournante et Cyclique (pixels) Taille Sous forme d'icône (pixels)
Petite 159x159 110x110
Moyenne 336x336 202x202
Large 691x336 N/A

Il est facile de configurer les vignettes via le fichier WMAppManifest.xml en sélectionnant « Modèle de vignette » puis en ajoutant les images qui conviennent. Vous pouvez également définir cela via codebehind, et un « Modèle de vignette tournante pour Windows Phone 8 » est disponible dans le Centre de développement à l'adresse suivante : bit.ly/10pavKC.

Écran de verrouillage et notifications Dans Windows Phone 7.1, vous ne pouviez voir que des notifications de type courrier, messages texte et appels téléphoniques. À présent, vos utilisateurs peuvent utiliser votre application comme un fournisseur d'image d'arrière-plan d'écran de verrouillage et inclure des notifications personnalisées similaires à celles décrites plus tôt. La configuration de l'image d'arrière-plan peut simplement consister à ajouter une image dans votre dossier avec le type de contenu et à mettre à jour le fichier manifeste de l'application pour déclarer votre application en tant que fournisseur d'arrière-plan. Cliquez avec le bouton droit sur le fichier WMAppManifest.xml, sélectionnez « Ouvrir avec » et choisissez Éditeur XML (Texte), puis ajoutez cette extension :

<Extensions>
  <Extension ExtensionName="LockScreen_Background"
    ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />
</Extensions>

Appelez ensuite l'extrait de code présenté sur la figure 7.

Figure 7 Configuration de l'image d'arrière-plan de l'écran de verrouillage du téléphone

private async void btnLockScreenImage_Click_1(
  object sender, RoutedEventArgs e)
{
  if (!LockScreenManager.IsProvidedByCurrentApplication)
  {
    await LockScreenManager.RequestAccessAsync();
  }
  if (LockScreenManager.IsProvidedByCurrentApplication)
  {
    Uri imageUri=new Uri(
      "ms-appx:///LockScreen.jpg", UriKind.RelativeOrAbsolute);
    Windows.Phone.System.UserProfile.LockScreen.SetImageUri(imageUri);
  }
}

Vous remarquerez que vous commencez par vérifier si l'utilisateur est autorisé à modifier l'arrière-plan. Dans le cas contraire, vous présenterez une GUI demandant l'autorisation, puis vous créerez un URI incluant le chemin vers votre image et vous utiliserez l'espace de noms Windows.Phone.System.UserProfile.LockScreen pour la configuration.

Vous pouvez également ajouter une notification pour présenter une icône et un nombre (de messages, d'appels, et autres) dans la zone de notification sur l'appareil Windows Phone 8. Pour plus d'informations sur ce point, reportez-vous à l'article « Notifications d'écran de verrouillage pour Windows Phone 8 » à l'adresse suivante : bit.ly/QhyXyR.

Voix Une des nouvelles fonctionnalités les plus passionnantes est la voix. Plusieurs composants de voix sont inclus dans le kit de développement logiciel (SDK) Windows Phone 8 :

  • Texte en parole (également appelée synthèse vocale) : permet la lecture d'un texte à l'utilisateur via le haut-parleur du téléphone, un casque ou une connexion Bluetooth.
  • Parole en texte (également appelée reconnaissance vocale) : permet à vos utilisateurs d'exprimer oralement des commandes à un téléphone pour qu'il accomplisse des tâches.
  • Commandes vocales : elles permettent à vos utilisateurs d'exprimer oralement des commandes en dehors de votre application en maintenant enfoncée la touche de démarrage et en disant « ouvrir » ou « démarrer », suivi du nom de votre application, pour effectuer certaines tâches.

Tout cela est possible grâce aux API Speech.Synthesis et Speech.Recognition. Une implémentation simple de synthèse vocale peut être effectuée avec deux lignes de code dans un gestionnaire d'événements :

private async void Button_Click(object sender, RoutedEventArgs e)
{
  SpeechSynthesizer synth = new SpeechSynthesizer();
  await synth.SpeakTextAsync("The latest MSDN issue has arrived!");
}

Assurez-vous simplement que les opérateurs async et await ont été ajoutés à la méthode.

Optimisation de votre mise à niveau

J'ai abordé tous les aspects, depuis les nouveaux outils et modèles, jusqu'à certaines des nouvelles fonctionnalités incluses dans le kit de développement logiciel (SDK) de Windows Phone 8. J'ai montré combien il est facile de mettre en place la localisation et j'ai décrit le bonus supplémentaire d'une base de code partagé avec Windows 8. Vous devriez à présent disposer des armes nécessaires pour tirer le meilleur parti de votre passage de Windows Phone 7 à Windows Phone 8.

Michael Crump est un MVP Microsoft, un champion de l'INETA et l'auteur de plusieurs livres électroniques .NET Framework. Il travaille chez Telerik et s'intéresse plus particulièrement à la suite de contrôle XAML. Vous pouvez le contacter sur Twitter à l'adresse suivante : twitter.com/mbcrump, ou le suivre sur son blog à cette adresse : michaelcrump.net.

Merci aux experts techniques suivants d'avoir relu cet article : Jeff Blankenburg (Microsoft) et Lance McCarthy (Telerik)
Jeff Blankenburg (Jeffrey.Blankenburg@microsoft.com) est développeur chez Microsoft, coauteur de l'ouvrage Migrating to Windows Phone (Apress, 2011), et organisateur de plusieurs conférences techniques.

Lance McCarthy est ambassadeur Nokia et spécialiste du support XAML chez Telerik