Développement Windows Phone 8 natif – Retour d’expérience : une plateforme prometteuse

De Lionel Dangelo dans Technique

7 jan 2014

Suite à l’acquisition par le Groupe Herve d’un millier de smartphones Windows Phone 8, nous avons récemment porté une application initialement développée pour Android sur cette plateforme. Cette application consiste à contrôler des équipements de chantiers : Autocontroles.

Je vous invite à regarder la petite vidéo de présentation si vous souhaitez en savoir plus.

Cette application est très intéressante d’un point de vue technique car elle comprend de nombreuses problématiques : mode hors connexion, synchronisation, appel de webservices, base de données locale, manipulations de grandes quantités de données, prises de photos, etc…

Le but de cet article est de vous faire partager rapidement notre point de vue sur la technologie Windows Phone 8 en natif.

 

1. Ce qu’il faut pour développer sur Windows Phone 8

 

Pour développer une application Windows Phone 8, il vous faudra dans un premier temps le système d’exploitation Windows 8! Ensuite, à minima, un Visual Studio Express avec le SDK Windows Phone 8 (http://www.visualstudio.com/downloads/download-visual-studio-vs). Il vous faudra aussi un compte développeur si vous souhaitez tester et déployer votre application sur des devices physiques. Vous pouvez aussi vous contenter dans un premier temps du simulateur Windows Phone 8 fournit avec le SDK qui s’avère d’une grande rapidité! Bien mieux que les émulateurs Android en tout cas!

 

2. Windows Phone 8 – C# natif ou JS ?

Lorsque l’on démarre un projet Windows Phone 8, la première chose que l’on doit se poser comme question est le choix du langage de développement. En effet, Microsoft nous propose soit un développement purement natif en C# soit un mode “hybride” en HTML5/Javascript.Pour ce type d’application, le natif semble la meilleure solution afin de gérer au mieux l’accès aux  composants hardware (caméra, réseau, etc), l’accès aux données dans une base locale et assurer au mieux les performances générales. En effet, une application HTML5/JS s’exécute au sein d’une webview, ce qui peut avoir un rendu moins réactif. De plus, le langage natif nous permet d’accéder aux navigations standards de Windows Phone 8, qui font tout le charme des applications de cet OS.

 

3. Les modes de navigation Windows Phone 8

 

Il existe 3 modes de navigations bien connus des utilisateurs de Windows Phone 8.

 

Le mode panorama :

Plusieurs pages se suivent sur une largeur importante. Sur chaque page, on voit le début de la page suivante. On passe d’une page à l’autre en faisant glisser de gauche à droite ou de droite à gauche.

 

Le mode pivot :

Plusieurs pages se suivent sur une largeur importante. Contrairement au mode panorama, on ne voit pas le début de la page suivante. On passe d’une page à l’autre en faisant glisser de gauche à droite ou de droite à gauche.

 

 

Le mode standard :

Correspond à ce que l’on peut retrouver sur iOS ou Android, c’est à dire une page seule, avec une navigation à implémenter manuellement.

 

4. Les différentes résolutions

Comme chez Apple, Microsoft facilite la gestion des différentes résolutions puisqu’elles sont standardisées et limitées en nombre. Comme l’explique la documentation Microsoft sur la gestion Multi Résolutions, l’OS gère automatiquement les “scaled resolutions”, ce qui facile donc grandement l’implémentation des interfaces puisqu’on se base toujours sur la même largeur d’écran.

 

5. XAML et C#

 

Lorsque l’on crée une vue dans l’application, on obtient systématiquement un couple de fichier XAML/CS.
Le fichier XAML correspond à un fichier XML qui décrit la vue. Ceci est très pratique puisque l’on peut pratiquement monter une page sans notion de programmation tandis qu’un développeur peut s’occuper de la partie code en C# du fichier CS. De plus, au fur et à mesure que l’on complète le fichier XAML, on peut voir le résultat en temps réel dans Visual Studio, chose que propose néanmoins bien XCode pour iOS ou les éditeurs pour Android (Eclipse, etc…). Cependant, la ou Microsoft surpasse Android, c’est que chaque élément  apparaissant dans le XAML peut avoir un identifiant et être utilisé “directement” dans le fichier C#  et est déja typé via son tag XML, sans avoir besoin le redéclarer et de lui associer son type. C’est un gain en productivité évident.
  • Déclaration d’un texte sous Android en XML

<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mon texte"
android:textSize="20sp" />

Changement du texte en JAVA
1
2
3
setContentView(R.layout.main); //Association avec la vue XML
TextView t = (TextView)findViewById(R.id.TextView01); //Recuperation du textview par son id dans le XML
t.setText("Changement de texte"); //Affichage du nouveau texte
  • Déclaration d’un texte sous Windows Phone 8 en XAML

<TextBlock Name="textBlock" Text="Mon texte"/>

Changement du texte en C# depuis la classe liée

1
textBlock.Text = "Changement de texte";

 

6. Stockage en local – SQLite

 

Bien que Microsoft propose plusieurs stratégies de stockage , aucune ne fait mention du stockage SQLite aussi simplement que ce qu’il peut se faire sur iOS ou Android. Pour pallier au manque de documentation de Microsoft sur ces différents points, Nokia a édité une série de tutoriels très complet.
Couplée à Linq, le langage d’exécution de requête de Microsoft, on arrive à manipuler  nos données proprement. L’ensemble du projet est donc très maintenable et évolutif.

 

 

7. Toolkit Windows Phone 8

 

Très rapidement, malgré que le SDK soit plutôt bien fourni, on se rend compte du manque de certains composants pourtant bien présents sur les autres plateformes iOS ou Android comme par exemple des PickerView, des DatePicker,…
Un oubli de Microsoft ? Pas tout à fait…
En effet, Microsoft met à disposition un Toolkit Open Source qui comporte une liste de nombreux composants. Ce kit se télécharge facilement depuis Visual Studio via les packages NuGet.
Parmi les composants disponibles, voici une liste non exhaustive :
  • AutoCompleteBox
  • ContextMenu
  • CustomMessageBox
  • DateTimeConverters
  • DateTimePickers
  • Effects – SlideInEffect, TiltEffect and TurnstileFeatherEffect
  • ExpanderView
  • HubTile
  • ListPicker
  • LongListMultiSelector
  • Map extensions
  • PhoneTextBox
  • RatingControl
  • ToggleSwitch
  • TransferControl
  • Navigation transitions
  • WrapPanel
  • LongListSelector for 7.x
  • MultiSelect for 7.x

 

 

8. Tests unitaires

 

Microsoft a eu la bonne idée de facilité la création d’un projet de test unitaire lié au projet Windows Phone 8. Il suffit donc de créer un projet Unit Test et de mettre en référence le projet principal si on veut par exemple tester des services, algorithmes ou autre. Ici, pas question de simuler des actions utilisateurs, mais seulement des tests de code métier.
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
28
using System;
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
using Bank;
namespace BankAccountTest
{
[TestClass]
public class BankAccountTests
{
[TestMethod]
public void Debit_WithValidAmount_UpdatesBalance()
{
// arrange
double beginningBalance = 11.99;
double debitAmount = 4.55;
double expected = 7.44;
BankAccount account = new BankAccount("New Customer", beginningBalance);
// act
account.Debit(debitAmount);
//assert
double actual = account.Balance;
Assert.AreEqual(expected, actual, 0.001, "Account not debited corrected");
}
}
}

Pour aller plus loin et tester des actions utilisateur, à l’image de Robotium sur Android, Microsoft précise sur son blog technique qu’il est possible d’utiliser des plugin-in tels que SeeTest de Experitest.

 

Conclusion

 

Ce développement en Windows Phone 8 natif fut une très bonne expérience. D’une part, l’environnement de développement et le framework sont plaisants à utiliser, et d’autre part le résultat est très satisfaisant : ergonomique, réactif, fluide.
On a le sentiment que Microsoft a repris les bonnes idées des développements natifs Android et iOS pour les condenser dans son framework WP8. La documentation Microsoft est plutôt bien fournie et les tutoriels Nokia bien utiles. A l’heure où Windows Phone accuse d’un retard certain par rapport à ses concurrents, mais commence petit à petit à remonter la pente, il ne faut surtout pas passer à côté de cette plateforme!

 

Voir toutes nos offres en développement de solutions mobiles

Commentaire

7 × trois =

iMDEO recrute !

REJOIGNEZ-NOUS

A la recherche de nouveaux talents (développeurs web et mobile, chefs de projet,...)

Voir les annonces