Cet article couvrira certains des concepts et des décisions impliqués dans la conception d'une application mobile pour plusieurs plates-formes. Les considérations abordées porteront principalement sur une application multiplate-forme ciblant Android et iOS, et elle est écrite du point de vue d'un développeur Web faisant ses premiers pas dans le monde de la téléphonie mobile. Nous examinerons certaines des différences entre les plates-formes et la conception de leur interface utilisateur, ainsi que les avantages et les inconvénients du développement multiplate-forme en général, ainsi que les détails spécifiques de la plupart des cadres multi-plateformes les plus populaires..
Il y a beaucoup de choses à considérer lors de la conception d'une application mobile. Avant de pouvoir même dessiner une structure filaire ou écrire une ligne de code, vous devez penser à ce que fera votre application, à qui elle est destinée et où elle sera exécutée. L’une des décisions les plus importantes est peut-être la ou les plates-formes que votre application va cibler. Il y a l'embarras du choix: iOS, Android, MeeGo, WebOS, BlackBerry OS, Symbian, Windows Phone 7, Maemo, etc.!
Bien sûr, la plupart d’entre nous ne sommes intéressés que par les deux grands concurrents: iOS et Android. Si vous souhaitez que votre application ou votre service atteigne le plus large public possible, il est logique de développer au moins ces deux applications..
Une fois que vous avez décidé de concevoir votre dernière application pour plusieurs plates-formes, vous aurez encore plus de décisions à prendre avant de pouvoir écrire votre première ligne de code. Des décisions comme:
Travailler sur la même application ou le même service pour plusieurs plates-formes ne signifie pas qu'il faille réinventer l'application à partir de rien sur chacune d'entre elles. Réutiliser les composants et les éléments de votre conception lorsque cela est possible réduira votre charge de travail et vous aidera à garder votre marque reconnaissable.
Celui-ci est plus compliqué et dépend beaucoup de vos besoins. En ce qui concerne la conception d'interface utilisateur et les éléments graphiques, il y a beaucoup de choses que vous pouvez réutiliser avec seulement des modifications mineures pour adapter votre idée aux deux plates-formes les plus populaires..
Les infrastructures multiplateformes facilitent grandement le recyclage de vos efforts. Cependant, le développement avec un cadre hybride présente des avantages et des inconvénients évidents, par opposition à l’utilisation de la plate-forme native SDK. Il existe également autant de frameworks multi-plateformes que de plateformes actuelles. Plus tard dans cet article, nous examinerons certains des cadres les plus importants disponibles et, à la fin de cet article, nous discuterons des avantages et des inconvénients du développement du choix d'un cadre multiplateforme..
C'est l'un des points les plus importants du développement mobile. Vous pouvez avoir la meilleure idée et un code génial qui l’alimente, mais s’il n’est ni attrayant ni facile à naviguer, les utilisateurs vont chercher ailleurs. L'utilisation d'un SDK multiplate-forme peut avoir un impact considérable sur la conception de votre interface utilisateur. Elle vous permet de réutiliser une grande partie de celle-ci, tout en limitant éventuellement certaines de vos options..
Eh bien, la réponse ici n’est pas un simple "oui" ou "non". Nous en discuterons en détail dans la section suivante.
Une interface utilisateur entièrement personnalisée pour chaque plate-forme de déploiement est un modèle très courant dans la conception de jeux. Cela fonctionne très bien..
Plantes vs Zombies sur Android
Plantes vs Zombies sur iOS
Pourquoi? Une partie du jeu consiste à apprendre le fonctionnement des commandes et de l'interface du jeu, y compris la navigation dans son interface utilisateur. Un comportement original et amusant avec une apparence personnalisée sur mesure est pratiquement essentiel pour créer une bonne expérience de jeu..
Le temps est l’une des plus grandes influences de conception de votre interface utilisateur si vous concevez une application fonctionnelle. Les utilisateurs veulent passer de la première page à la mission accomplie en un minimum de tapotements. Avoir une interface avec indices familiers, le fait que les utilisateurs reconnaissent l’utilisation d’autres applications de la plate-forme et se souviennent de celle-ci rendra votre application plus conviviale et plus simple pour les nouveaux utilisateurs. Mais cela ne signifie pas nécessairement que la porte est complètement fermée lors de la personnalisation.
Que vous choisissiez l’API native ou une API multiplate-forme, vous pouvez faire beaucoup avec la conception de votre interface utilisateur pour la rendre vraiment exceptionnelle sans détruire la confiance de vos utilisateurs ou les pousser trop loin de leur zone de confort..
Et la vérité est que, si vous le souhaitez, concevoir et développer avec des infrastructures multiplates-formes peut signifier que vous n'avez guère d'autre choix que de créer une interface utilisateur personnalisée. Selon la structure que vous avez sélectionnée, vous pouvez ou non avoir accès aux éléments de l'interface utilisateur natifs. Toutefois, même si vous ne disposez pas de contrôles natifs, ou si vous repoussez les limites de l'API native, vous pouvez toujours suivre des modèles de conception permettant aux utilisateurs de se sentir chez eux dans votre application..
Tout est question d'équilibre. Jetez un coup d'œil à quelques-uns des grands noms et à ce qu'ils font avec leurs applications. Prendre le Facebook application par exemple: elle affiche un bon équilibre entre le respect des considérations relatives à la plate-forme UX et la reconnaissance de la marque.
L'App Facebook sur Android
L'application Facebook sur iOS
Elle est immédiatement reconnaissable en tant qu'application Facebook, quelle que soit la plateforme sur laquelle vous vous trouvez. Mais il intègre également ces familier éléments et les patrons auxquels les utilisateurs sont habitués, ce qui permet aussi bien à un propriétaire d’iPhone d’intervenir que de le faire pour un propriétaire de Galaxy.
L'application Tweetdeck est un exemple encore meilleur.
L'application TweetDeck sur Android
L'application TweetDeck sur iOS
Ironiquement, l'application officielle Twitter est à mon avis un très bon exemple de conception multi-plateformes qui tourne mal.
L'application Twitter sur Android
L'application Twitter sur iOS
L'astuce ici est tout dans les barres d'outils et les contrôles de navigation. Les barres en haut et en bas de l'écran, la barre d'action, la barre de navigation et les modèles de conception similaires doivent rester cohérents avec les normes de la plate-forme. Vous pouvez modifier un peu la couleur et le style, mais la fonctionnalité et l'apparence générale doivent être immédiatement reconnaissables. Cependant, votre contenu peut prendre une apparence beaucoup plus unique, vous offrant donc un design d'aspect relativement cohérent sur toutes les plateformes. Jusqu'où pouvez-vous le prendre? Regardez des sites comme TappGala et voyez ce que les autres font avec..
Lors de la conception, soyez conscient des différences subtiles et moins subtiles entre les plates-formes. L’un des plus importants est l’interface physique, les boutons matériels de l’appareil. L'iPhone n'a qu'un bouton s'appuyant sur des boutons souples dans l'interface utilisateur pour tout le reste. Les appareils Android, par contre, ont trois boutons standard. Le menu, le bouton de retour et le bouton d'accueil. Les utilisateurs d'Android seront désorientés si leur utilisation ne produit pas de résultat dans votre application multiplate-forme. Android propose également un menu contextuel, accessible à partir du bouton de menu, qui vous offre un autre emplacement pour les contrôles avancés. Vous devrez adapter votre design iOS à ces boutons et menus manquants avec des options logicielles..
Si vous concevez et développez pour plusieurs plates-formes, vous pouvez recycler plus que vos éléments de conception. En fonction de vos besoins, de nombreux frameworks multi-plateformes peuvent vous aider à consolider votre base de code..
Si vous êtes un développeur web frontend, vous vous sentirez comme à la maison avec PhoneGap. En utilisant vos connaissances existantes en HTML, CSS et JavaScript, vous pouvez développer rapidement des applications. PhoneGap est essentiellement WebKit avec une API JavaScript personnalisée qui enveloppe l'API native. C'est également une excellente option pour le portage de vos applications Web existantes et leur promotion en tant qu'applications mobiles à part entière. Vous pouvez utiliser n’importe lequel de vos outils Web favoris côté client, y compris les infrastructures JavaScript telles que jQuery Mobile ou SenchaTouch..
Malheureusement, votre application ne disposant pas d'une instance de navigateur WebKit, les performances ne seront pas aussi fraîches que celles des applications natives ou même celles fournies par d'autres infrastructures disponibles. Vous n'aurez également aucun accès aux contrôles de l'interface utilisateur native (bien que vous puissiez personnaliser vos propres thèmes pour qu'ils soient similaires avec CSS). PhoneGap fournit un excellent service de construction hébergé, qui vous permet de développer des applications localement, puis de les télécharger et de les construire avec leur service en ligne. C’est formidable si vous n’avez pas de Mac pour le développement et les tests iOS natifs. Avant de décider d'utiliser PhoneGap, assurez-vous qu'il prend en charge toutes les fonctionnalités dont vous avez besoin pour vos plates-formes cibles. Heureusement, le projet PhoneGap est open-source et entièrement extensible. Vous pouvez donc toujours ajouter vous-même les fonctionnalités manquantes s'il le faut..
Pour voir plus d'exemples d'applications construites avec PhoneGap, consultez le site de démonstration officiel..
Les développeurs de Rails vont adorer celui-ci! Avec RhoMobile, vous pouvez développer vos applications en Ruby avec une approche MVC forte! Les vues sont conçues avec HTML, CSS et Javascript afin que vous puissiez apporter toutes vos compétences en développement web avec vous. Encore une fois, ce framework n’a pas de support standard pour les contrôles natifs, mais il y a des extensions disponibles qui vous permettront d’y accéder..
Rhodes dispose également d'un excellent service de construction hébergé, RhoHub, et de fonctionnalités d'entreprise et industrielles intéressantes telles que Rhosync et le support NFC. RhoMobile est une solution parfaitement adaptée aux applications d’entreprise. Le cadre est également extensible, vous pouvez donc ajouter vos propres bibliothèques natives et gemmes Ruby. Les performances sont plutôt bonnes, car votre application sera précompilée en code octet..
Pour voir plus d'exemples d'applications construites avec RhoMobile, consultez le site de démonstration officiel..
Titanium Mobile est un autre cadre qui conviendra aux développeurs Web qui se déplacent dans l’espace mobile. À l’origine, Titanium avait adopté une approche similaire à PhoneGap, offrant une vue Web englobant les API natives. Mais, depuis la v1.0, Titanium est un compilateur croisé entièrement basé sur JavaScript, avec un accès aux éléments de l'interface utilisateur native du périphérique et une augmentation considérable des performances..
La version 1.5 introduisait également JSS, les feuilles de style Javascript, inspirées de CSS, fournissant un système de mise en forme flexible qui peut être utilisé pour personnaliser vos vues pour différents appareils. Des espaces de noms distincts sont également disponibles pour un support spécifique à la plate-forme. Vous pouvez utiliser n'importe quel IDE que vous aimez pour développer votre code, et Titanium Developer est utilisé pour préparer et empaqueter votre application (bien que le débogage puisse s'avérer difficile)..
Pour voir plus d'exemples d'applications construites avec Titanium Mobile, consultez le site de démonstration officiel..
Ansca a été fondée par d'anciens ingénieurs de Flash et Adobe. Leur expérience témoigne de la mise en œuvre de Corona SDK. Corona dispose d’une API bien équilibrée qui met l’accent sur le développement rapide de jeux 2D hautes performances. L'API comprend de nombreuses options pour accélérer le développement de jeux, telles que la physique Box2D, le support OpenGL + OpenAL, les fonctions d'animation et la gestion des images-objets et des scènes. Corona inclut même des outils de migration simples pour les applications Flash et les développeurs ActionScript.
Toute personne ayant une histoire de modding de jeu ou de développement Flash se sentira très à l'aise avec le langage de script Lua et l'ensemble d'outils Corona. Ansca fournit également un environnement en ligne permettant de promouvoir votre application, de partager des ressources de code et de télécharger des additifs tiers. Corona propose également une bibliothèque de widgets d'interface utilisateur et des éléments natifs pour les développeurs d'applications utilitaires. Tout cela est très attrayant, mais son prix est raisonnable: 199 dollars par an pour les développeurs qui se concentrent sur une seule plate-forme (iOS ou Android) et 349 dollars par an pour l'assistance iOS et Android.
Pour voir plus d'exemples d'applications construites avec le SDK Corona, consultez le site de démonstration officiel..
Unity est essentiellement un moteur de jeu scriptable doté de son propre IDE puissant. Conçu pour le développement de jeux haute performance sur une multitude de plates-formes, notamment les consoles et le Web, ce rêve de développeur de jeux devient réalité. Cependant, il ne concerne définitivement que le développement de jeux en 3D, les développeurs d'applications utilitaires devraient donc chercher ailleurs. Bien qu’ils fournissent une version gratuite du cadre, pour profiter pleinement des avantages d’Unity, vous devrez investir une somme raisonnable, avec une licence professionnelle valant 1 500 USD et des frais supplémentaires pour les addons..
Pour voir plus d'exemples d'applications construites avec Unity3D, consultez le site de démonstration officiel..
Vous trouverez ci-dessous une liste des avantages et inconvénients associés à l'utilisation d'un SDK tiers pour développer des applications multiplates-formes..
Une fois que vous vous êtes engagé dans un cadre, vos projets deviennent dépendants d'un tiers. Vous voudrez choisir un cadre stable qui a un développeur dédié (de préférence des développeurs) et une grande communauté. Les frameworks open source offrent une certaine sécurité ici. Parce que vous avez accès au code source, si le développeur abandonne le SDK à l’avenir, vous ou d’autres personnes pourrez poursuivre son développement..
Il faut un certain temps pour que les modifications apportées à l'API de la plate-forme se répercutent sur les différents SDK tiers. Vous devrez peut-être attendre un moment pour que les dernières fonctionnalités soient disponibles, si elles le sont. Encore une fois, vous comptez sur l'engagement du développeur SDK envers le projet..
Les kits de développement multi-plateformes sont une abstraction des différentes plates-formes en une interface uniforme qui devrait théoriquement faciliter le développement. Mais en même temps, cette abstraction rend votre accès à l’API sous-jacent plus flou, ce qui risque de limiter davantage l’ensemble de fonctionnalités. Avec l'API native native, vous n'êtes limité que par le matériel et les décisions de conception occasionnelles prises par Google ou Apple. Un point lié: les tâches les plus difficiles telles que le rendu 3D et le traitement vidéo / audio peuvent être particulièrement limitées dans l'approche que vous pouvez adopter, si elles sont possibles..
L’avantage le plus évident de choisir un SDK multiplate-forme est de réduire l’effort global consacré à un projet donné. En ciblant une seule API, vous économisez beaucoup sur le développement et la maintenance de la base de code..
Cela remonte aux inconvénients de la fraîcheur des API et du contrôle limité. De nombreux frameworks incluent une architecture d'extension ou de plug-in qui vous permet de créer une bibliothèque native et de l'intégrer au SDK. Cela vous donne vraiment le meilleur des deux mondes, vous pouvez développer des fonctionnalités manquantes ou avancées avec les outils natifs, puis utiliser le SDK multiplate-forme pour les tâches courantes..
La sélection d'un SDK multiplate-forme qui correspond à votre ensemble de compétences actuel réduit votre courbe d'apprentissage. Dans les grandes équipes disposant d'un seul outil pour le travail, cela peut également signifier moins de temps de conception, de formation et moins de développeurs requis pour mettre en œuvre le projet..
La majorité des infrastructures multiplateformes fournissent non seulement un outil pour de nombreux travaux, mais simplifient également le développement avec des langages dynamiques et des bibliothèques complètes pour les tâches répétitives courantes..
Pour vous simplifier la vie, plusieurs des principaux frameworks disposent de référentiels officiels permettant de partager le code et les actifs ou de les acheter à d'autres développeurs..
Vous ne devriez envisager un cadre multi-plateforme que s'il convient à la fois à vos exigences et à vos compétences. Faites des recherches approfondies et assurez-vous que l'outil de développement de votre choix prend en charge toutes les fonctionnalités que vous souhaitez inclure dans votre application. Il n'y aurait rien de pire que de terminer le développement à mi-chemin avant de vous rendre compte qu'une exigence fonctionnelle clé n'est pas prise en charge par le SDK que vous utilisez. N'oubliez pas que de nombreux frameworks prennent en charge les extensions, ce qui vous permet d'ajouter des modules natifs pour combler les lacunes laissées par les développeurs principaux de SDK. En fin de compte, un cadre multiplateforme devrait réduire votre charge de travail et ne pas créer plus de problèmes sur votre emploi du temps déjà chargé.!