Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Cross-plateforme : Xamarin Store, des composants à connaître

[new:30/06/2013]Continuant ma série sur le développement cross-plateforme je vous propose aujourd’hui de découvrir le Xamarin Store et de nombreux composants incroyables et souvent gratuits qui offrent des services indispensables aux applications modernes.

Le Xamarin Store

le Xarmarin Store est un site de publication de composants et librairies dédiés au développement cross-plateforme. Beaucoup sont gratuits, certains sont payants, une grande partie se limite à iOS et Android, d’autres fonctionnent aussi sur Windows Phone, certains sont uniquement dédiés à un OS (souvent iOS car Xamarin a débuté avec MonoTouch pour l’iPhone avant de publier MonoDroid, l’histoire avec l’OS de Apple est donc un peu plus longue).

Si le store ne contient pas encore des milliers de composants (la diffusion de Xamarin 2.0 n’est pas celle d’un EDI comme Visual Studio, il faut en rester conscient), on y trouve beaucoup de choses intéressantes qui peuvent transformer une application banale en app moderne, utile et attractive.

Trois OS, un seul langage

La magie de Xamarin Studio est d’utiliser un seul langage déjà connu de tous (ou presque) dans le monde Microsoft : C# qui est standardisé ECMA. En partant du projet Mono, la version open source de C# et .NET, Xamarin a créé un environnement de développement capable de générer des applications natives pour iOS et Android depuis un PC. Le designer visuel, d’abord absent, puis seulement dans l’EDI Mono est aujourd’hui un module mâture fourni en plugin de Visual Studio et en stand-alone intégré à Xamarin Studio, l’EDI cross-plateforme.

On peut donc choisir de travailler sur un Mac ou un PC, d’utiliser Xamarin Studio ou bien Visual Studio pour créer soit des applications natives uniques soit bien entendu des applications cross-plateformes. Une seule solution Visual Studio, reconnue aussi par Xamarin Studio (on peut passer d’un EDI à l’autre sans problème, les fichiers de solutions et de projets sont les mêmes), et on peut construire une application attaquant les plateformes qu’un développeur doit aujourd’hui adresser. iOS, Android, Windows Phone, et même WPF ou Silverlight, WinRT et ASP.NET peuvent être mélangés sous Visual Studio (Xamarin Studio gère de l’ASP.NET mais pas WPF ou SL ni WinRT).

Le vrai cross-plateforme

Le “vrai” cross-plateforme n’existe pas ! Il existe deux réalités différentes sous ce terme : La même application portée à l’identique avec le même code sous plusieurs OS ou bien, ce qui est plus réaliste aujourd’hui, une application dont les modules sont répartis entre plusieurs OS et form factor.

Xamarin Studio permet de travailler dans ces deux cadres distincts. On peut choisir de créer une application uniquement iOS ou Android comme on peut intégrer l’un ou l’autre de ces OS (ou les deux) dans une solution plus vaste.

Pour certaines applications c’est en fait un mélange de ces deux façons de voir le cross-plateforme qui permet d’atteindre l’objectif. On peut avoir une application en WPF tournant donc sous Windows partageant du code et des donnés avec une application en ligne en ASP.NET le tout complété d’une ou plusieurs apps mobiles pour smartphones ou tablettes, chacune pouvant être portée à l’identique pour plusieurs OS. L’application elle-même n’est plus un exécutable ou une site Web, ni même une app mobile, c’est alors l’ensemble de toutes ces applications qui forme “l’Application” avec un grand “A”…

Soutenir Windows Phone et WinRT

En réalité les applications du type que je viens de décrire bien loin de nous éloigner de Windows Phone ou même de WinRT permettent de soutenir ces environnements même si pour l’instant leur adoption reste limitée.

En effet, créer une application Windows Phone seule est un peu risqué financièrement, le retour sera par force faible vu les parts de marché actuelles de l’OS. En revanche quitte a créer la même application pour Android ou iOS, grâce à Visual Studio et Xamarin Studio il sera possible de supporter _aussi_ Windows Phone pour un coût minimum.

La démarche cross-plateforme que je vous propose depuis un bon moment déjà permet ainsi d’éviter d’éliminer Windows Phone faute de pénétration suffisante du marché et de lui réserver une place dans les plans de développement car cela ne coûte pas très cher de le prévoir dès le départ dès lors qu’on utilise les bons outils.

WinRT est très proche de Silverlight et de WPF, technologies C#/Xaml auxquelles Dot.Blog a réservé près de 90% de son espace sur les plus de 600 billets publiés à ce jour. Si je n’en parle pas beaucoup plus c’est que toutes les techniques utilisables sous WinRT sont pour l’essentiel déjà décrites en détail par ces centaines de billets. Quant à Windows Phone, en dehors de quelques spécificités qui lui sont propres, comme WinRT il utilise C# et Xaml présentés en long et en large par Dot.Blog.

Le cross-plateforme est l’avenir du développement. C’est pour cela que je vous en parle de plus en plus. Mais qui dit cross-plateforme dit connaissance des plateformes, et c’est tout naturellement que je vous parle notamment d’Android depuis plus d’un an car c’est l’un des OS principaux à connaître à côté de ceux proposés par Microsoft.

Cela nous ramène au Xamarin Store qui propose des composants et des librairies dont un nombre assez grand est totalement cross-plateforme et fonctionne sous iOS, Android et Windows Phone à la fois  !

Ma sélection

Même s’il n’y a pas encore des milliers de librairies dans le Xamarin Store il y en a de trop pour toutes les présenter.

Ainsi, je vous propose ici de découvrir les composants (ou librairies) qui m’apparaissent les plus intéressants et qui sont au moins disponibles pour iOS et Android à la fois (les OS couverts directement par Xamarin Studio).

Toute sélection est réductrice et je vous invite à consulter les autres codes proposés par le Xamarin Store.

Azure Mobile Services

On ne présente plus Azure qui permet de stocker des données dans les nuages, d’authentifier des utilisateurs et d’envoyer des notifications de send ou de push. Il existe bien entendu du code Microsoft pour se servir de ces services depuis Windows Phone ou WinRT. Sur le Xamarin Store on trouvera aussi “Azure Mobiles Services”, écrit par Microsoft, pour Android et iOS !

Avec cette librairie tout devient facile sous tous les OS mobiles. Par exemple le code ci-dessous montre comment insérer une instance de la classe Item dans un stockage Azure, en une ligne de C# :

azuremobilecode

Bien entendu, cette librairie est gratuite.

Signature Pad

Il s’agit d’un des rares composants payants que j’ai sélectionné. Une raison bien simple : il est tout simplement unique… pas d’alternatives gratuites. De plus il n’est pas trop cher pour le service rendu (150 dollars). Ce composant permet de gérer les signatures digitales avec le doigt directement sur l’écran d’un smartphone ou d’une tablette. Le code fonctionne sous iOS et Android.

signature

Très simple à utiliser, Signature Pad peut faire d’une application quelconque un véritable outil professionnel (faire signer un client pour une livraison, un accusé réception d’un document ou d’un objet remis en mains propres, etc).

L’un des critères de sélection que j’ai appliqué à tous les composants présentés ici : la simplicité d’utilisation. Le code qui suit vous montrera ce que simple veut dire dans ce cas :

signaturecode

L’exemple créé une nouvelle vue puis demande tout simplement au composant de retourner l’image de la signature… (l’exemple ci-dessus est pour iOS mais reste quasi identique à celui pour Android).

SQLite.NET

Pour ceux qui ne le savent pas SQLite est le moteur de base de données intégré à Android. Toute application Android peut ainsi et très facilement créer des bases, des tables, et jongler avec les données sans se prendre la tête. Il est dommage que Microsoft n’ait pas fait un choix aussi simple pour Windows et qu’on s’emmêle un peu les pinceaux dans les différentes versions de SQL Server pour ASP.NET, pour Mobile, pour PC, etc. SQLite étant un SGBD gratuit et open on peut toutefois l’installer aussi sous Windows Phone et sur iPhone ou iPad.

Accéder à une base SQLite est possible directement depuis les API fournies par Android, mais pas aussi directement depuis Windows Phone ou iOS. D’où l’intérêt d’une surcouche portable comme SQLite.NET qui supporte aussi bien Android que iOS et Windows Phone avec le _même_ code C#. Standardiser les accès aux donnés est un énorme avantage pour tout développement cross-plateforme.

L’utilisation de cette librairie est d’une grande simplicité :

sqlitecode

Créer une connexion, insérer directement une instance de classe dans une table, tout cela s’effectue en quelques lignes. On peut bien entendu travailler aussi en SQL ou utiliser la façon de faire de ADO.NET, c’est comme on le veut, selon le besoin.

SQLCipher

Travailler avec une base de données SQLite est une bonne chose, les données sont le nerf de la guerre en informatique. Mais la confidentialité peut être un pré-requis pour certaines applications notamment en entreprise. Dès lors il faut pouvoir chiffrer les données.

Cela n’est pas très difficile en soi, mais faire des appels aux API de chiffrement à chaque lecture ou insertion de données peut devenir infernal et conduire à un code lourd. Mieux vaudrait que la couche d’accès aux données le fasse toute seule…

sqlcipher

C’est justement ce que propose SQLCipher. Cette librairie est une copie de SQLite.NET présentée plus haut, les API sont les mêmes, à la nuance près qu’un mot de passe est réclamé comme paramètre supplémentaire dans les appels de méthodes.

On peut ainsi transformer une application conçue pour SQLite.NET en une application sécurisée en changeant juste le “using” et en ajoutant le paramètre manquant.

Les données sont chiffrées avec une algorihme AES-256, ce qui assure une sécurité très élevée.

Cette librairie n’est pas gratuite mais d’une part son prix est raisonnable (150 dollars) et d’autre part il se justifie pleinement dans le cadre dans une application professionnelle.

Ici aussi le critère de simplicité est parfaitement rempli : les API sont les mêmes que SQLite.NET et interchangeables (au paramètre mot de passe près).

sqlciphercode

Le code ci-dessus montre l’accès à une instance de la classe Model, en une ligne. Cela est conforme à SQLite.NET mais on remarque le paramètre supplémentaire “Password”.

 

sqlciphercode2

Ici on utilise SQL et les méthodes d’accès typiques de AD.NET, là encore tout est similaire à SQLite.NET sauf l’appel à SetPassword sur la connexion.

Le chiffrement des données dans toutes les opérations CRUD est ainsi totalement transparent, sans risque d’erreur ce qui renforce la sécurité de l’application.

Radial Progress

Faire des opérations longues, surtout sur un smartphone ou une tablette à la puissance réduite peut s’avérer plus fréquent qu’on le pense, de même qu’accéder via la 3G à des données distantes ce qui est rarement très rapide…

Avec Radial Progress on peut donner un look plus attrayant à cette attente, et c’est toute l’UX qui s’en trouve améliorée car une UI bien faite facilite aussi la prise en main et augmente la satisfaction de l’utilisateur.

Gratuit, disponible pour iOS et Android, ce composant est très simple mais bien fait.

radial

JSon.NET

JSON est à la mode, personnellement je n’ai jamais bien vu son avantage sur XML car sa réputation d’être moins “verbeux” a souvent été contredite par mes propres expériences. Mais la question n’est pas là, c’est à la mode… Il existe donc des tas de façon d’accéder à des données JSON mais JSON.NET est “the” librairie la plus utilisée dans le monde .NET d’autant plus qu’elle est supportée dans toutes les versions possibles : WPF, SL, WinRT, Windows Phone, et ici iOS et Android aussi.

Cette librairie est tellement bien faite que l’utiliser dépasse l’effet de mode. Il y a des possibilités réellement immenses, une gestion des cycles intelligente, des passages facilités entre JSON et XML dans les deux sens, etc.

Gratuite, puissante, très optimisée, cette couche dédiée à JSON est d’une grande utilité.

ZXing.Net.Mobile

Au début on pense que c’est un truc chinois “ZXing”, en fait non… Quand on connait ces facétieux américains on comprend qu’il s’agit encore d’une de leur farce de langage comme ils en ont le secret, il faut prononcer “Zebra Crossing”. Pourquoi des zèbres qui traversent ? Tout simplement parce que c’est le nom qu’on donne aux passages piétons aux USA, en raison de la ressemblance avec les rayures noires et blanches des Zèbres…

Et pourquoi des passages piétons ? … L’imagination n’a pas de limite, tout simplement parce qu’un code barre ressemble lui-aussi à ce même motif de lignes noires et blanches.

Aller du zèbre africain aux codes barres en passant par la jungle urbaine, le parlé (et l’écrit) américain est plein de vie, d’images que je trouve très créatives. Car il y a aussi un message plus “subliminal” dans le nom choisi : le fameux “crossing”, traverser. Ici la librairie traverse aussi les OS puisqu’elle est cross-plateforme. Joli non ?

Bref vous l’aurez compris ZXing est une librairie portable permettant de reconnaître les codes barres mais aussi les QR codes. Elle fonctionne sous iOS, Android et Windows Phone, et comble du bonheur elle est gratuite et facile à utiliser !

zxing

D’iOS à gauche à Windows Phone à droite en passant par Android au milieu…

Et voici le code, le même pour toutes les plateformes, permettant d’obtenir la valeur d’un code (barre ou QR) :

zxingcode

J’ai testé et c’est vraiment très bien fait. On peut obtenir de nombreuses informations sur le code, comme sa nature (ISBN d’un livre, code d’un produit, etc). Il est ensuite assez facile d’aller faire une requête à Amazon ou Google pour obtenir le détail du produit. De même il est possible d’utiliser la vue par défaut ou bien de fournir une vue personnalisée pour le scan. La reconnaissance est très bonne (en tout cas sur mon SIII dont l’appareil photo et la vitesse ne sont pas représentatifs du smartphone moyen malgré tout). Il existe plusieurs applications sur le Play Store qui utilisent cette librairie, celles que j’ai testées étaient très réactives même sur un Galaxy Ace qui commence à dater (mais représente la norme en terme de puissance du parc Android actuel, que cela soit en puissance pure qu’au niveau du format écran).

Les QR codes peuvent contenir des adresses web, du texte, on peut bien entendu traité tout cela ce qui offre des possibilités infinies.

Xamarin Social

Xamarin a produit aussi quelques librairies bien utiles et gratuites. Xamarin.Social en fait partie. Comme le nom le laisse entendre il s’agit ici de pouvoir accéder aux réseaux sociaux pour écrire directement sur un mur Facebook ou tweeter comme un pinson automatiquement…

Cette librairie est encore un peu “jeune” et ne supporte encore pas G+ ou LinkedIn, mais elle simplifie grandement les choses pour Facebook, Twitter, Pinterest, Flickr ou App.Net.

Xamarin.Social est gratuite et fonctionne sous iOS et Android.

Xamarin.Mobile

Xamarin est conçu pour coder sur des appareils mobiles, alors pourquoi cette librairie ? Tout simplement parce que justement Xamarin est cross-plateforme par essence et qu’il est bien agréable de pouvoir disposer gratuitement d’une couche unifiant les appels aux principaux services de tous les OS plutôt que de farcir le code final de nombreux appels natifs qui ne se ressemblent pas !

Xamarin.Mobile permet ainsi d’unifier par un même code l’appel à la géolocalisation, à la liste des contacts et au média picker. C’est autant de code spécifique à chaque OS qu’il n’y a plus besoin de coder…

La librairie fonctionne sous iOS, Android et Windows Phone.

Xamarin.Auth

Encore une librairie gratuite simplifiant le travail. Ici Xamarin.Auth offre un moyen simple d’authentifier un utilisateur auprès de tout service suivant la norme OAuth 1.0 ou  2.0. Elle fonctionne sous iOS et Android.

Voici un exemple d’authentification utilisant les services Facebook :

xamauthcode

C’est simple, et pratique.

Bar Chart

Il fut un temps où on disait “dites-le avec des fleurs”, aujourd’hui on dirait “dites-le avec un graphique”… Une application la plus simple soit-elle se doit d’offrir des graphiques pour faire sérieux et en même être attractive. Bien entendu si cela sert aussi le fonctionnel alors c’est merveilleux !

Bar Chart est un composant gratuit tournant sous iOS et Android qui offre des graphes à barre propres et riches à la fois.

barchart

Scrolling, libellés, gestion automatique de l’orientation, Bar Chart offre gratuitement tout le nécessaire. Le code d’appel est lui aussi d’une grande simplicité.

Conclusion

Le Xamarin Store contient bien d’autres choses que je vous incite à découvrir par vous-même. J’espère avoir ici excité votre curiosité en même temps que vous avoir fait découvrir à quel point le monde Xamarin est riche en solutions qui vous simplifieront vos développements cross-plateformes.

La cohabitation des OS est une chose entendue pour longtemps, aucun n’écrasera à 100% le marché. le BYOD s’impose comme une réalité aux entreprises. En utilisant les bons outils et les bons composants un développeur peut réaliser des prouesses …

Bon dev, et Stay Tuned !

blog comments powered by Disqus