Categories
Non classé

19h15

Le dialogue qui affiche les infos sur l’appli est terminé:

LineoInfo

J’ai aussi fait une icône assez moche (oui, je sais, c’est le principal critère pour télécharger une appli, mais je n’ai juste pas le temps):

AppIcon320

Pour finir, je vais lancer un petit coup d’Instruments et d’analyse statique sous Xcode. Aurai-je le temps de proposer l’appli à Apple avant 20 h ?

Categories
Non classé

Deuxième molette

J’ai remanié un peu le code et implémenté la molette verticale. Le rendu ne me plait pas trop; à vrai dire, c’est assez difficile graphiquement parce que la lumière est sensée venir du haut. J’ai tout de même un résultat qui indique clairement le rôle de la molette:

MoletteHorizontale

Bon, ce n’est clairement pas parfait, mais il ne reste plus que deux heures et j’ai encore une boite de dialogue et l’icône de l’application à faire.

Categories
Non classé

Première molette

La molette verticale fonctionne. Voici ce que ça donne graphiquement:

MoletteVerticale

Pour simuler le mouvement de rotation, j’ai eu recours à une astuce. Comme il faut au moins trois étapes d’animation pour suggérer la direction d’un mouvement, j’ai tracé un segment horizontal (une rainure) tous les trois points. En fonction du mouvement imprimé, je change l’ordonnée du premier segment horizontal tracé. Ainsi dans le code, on a ça:

animationGrooveDelta = (animationGrooveDelta + (int)pointsDelta) % kAnimationsSteps;
  • animationGrooveDelta est le décalage de l’ordonnée du premier segment
  • pointsDelta est la distance du glisser du doigt
  • kAnimationsSteps vaut 3

L’illusion de mouvement est parfaite, mais je ne suis très satisfait du rendu.

Categories
Non classé

Point à 13 h

Comme prévu, ce matin, j’ai travaillé le graphisme. Voilà ce que ça donne:

Capture13h

J’ai essentiellement ajouté des ombres pour donner du volume et rendre l’objet plus réaliste. Evidemment, il reste un gros travail sur les molettes que je réserve à cet après-midi. J’ai commencé par ajouter une barre de navigation. Je n’étais pas très sûr de vouloir le faire pour des questions esthétiques. Finalement, je trouve que ça va. Pour fixer la couleur, j’ai utilisé les nouvelles API UIAppearance de iOS 5.

Pour ce qui est des outils de dessin, j’ai commencé avec Lineform. Ce logiciel était ce qui se faisait de mieux dans cette gamme de prix quand je l’ai acheté, il y a quelques années. Seulement, son auteur a été embauché par Apple, le logiciel a été racheté par son distributeur, et depuis, les bugs restent. Bref, j’aurais préféré qu’il soit racheté par une équipe compétente.

En l’occurence, j’ai fait tout le travail pour me rendre compte de gros problèmes de correspondance des couleurs. De fait, j’ai fait une copie d’écran et fini sous PixelMator. Au départ, je voulais découper l’écran en plusieurs parties pour réduire la taille de l’appli. Mais le .png ne pèse que 40 ko, ce qui est très acceptable; j’utilise donc une seule UIImageView en fond. J’ai superposé ma vue de dessin en la rendant non-opaque. Au bas, j’ai placé un petit bouton avec le logo de Céroce. L’appuyer affichera un écran modal pour présenter la société et renvoyer vers son offre de prestation.

Categories
Non classé

Dessin à la molette

J’ai amélioré l’application, et on peut maintenant dessiner:

chateau

(je voulais vous dessiner la “Naissance de Vénus”, mais faute de temps, j’ai choisi un sujet plus simple). Et on peut aussi effacer l’écran en secouant l’iPad. Ça suffit pour aujourd’hui. Demain, je travaillerai la partie graphique (voire sonore).

Categories
Non classé

Premier prototype

Je viens de prendre ma pause déjeuner, et je vais maintenant me mettre à coder. L’essentiel de la programmation concerne la partie graphique et l’interface homme-machine. Pour l’instant, j’essaie de dégrossir le travail, à savoir où doivent se placer les éléments de l’interface et quelle taille leur donner.

Les bases de l’interface

Vue principale

L’application est pour ainsi dire constituée d’une seule vue. Celle-ci est forcément horizontale, il n’y a donc pas de rotation d’écran à gérer.

Vue de dessin

Une sous-classe de UIView affichera le dessin. Pour l’instant, je vais simplement afficher une croix qui représente la mine qui gratte la vitre.

Molettes

Les molettes sont l’aspect le plus difficile de l’application. Il s’agira d’une sous-classe de UIControl, et elle possède des valeurs minimales et maximales, ce qui l’apparente à UISlider, mais le fait qu’il n’y ait pas de curseur indique que je vais devoir créer ma propre sous-classe de UIControl.

Création du projet Xcode

Il y a au moins une bonne raison à choisir le nom de l’application avant toute chose, c’est qu’on en a besoin pour créer le projet Xcode! Certes, ce nom peut être changé par la suite, mais ça représente du travail. Je n’ai qu’à choisir le modèle d’application qui va bien et régler l’orientation de l’écran. Pour ce projet, je ne vais assurer la compatibilité qu’avec iOS 5 (tous les iPad sont compatibles), de fait, je vais utiliser ARC pour gérer la mémoire.

Avancement

Après quelques heures de travail, j’obtiens un premier prototype presque fonctionnel:

Proto1

Pour faciliter la manipulation des molettes avec les pouces, je les ai déportées vers le haut. Elles permettent d’ors et déjà de déplacer la croix à l’écran. Je sais que c’est laid, mais pour l’instant, j’en suis encore à régler précisément les dimensions des éléments, alors je ne veux pas partir tout de suite dans le graphisme.

D’un point de vue fonctionnel, il me reste à gérer le dessin et l’effacement. Faut-il dessiner en bitmap ou en vectoriel ? Je pense que le plus rapide à développer est d’utiliser du vectoriel et je ne pense pas avoir de problème de performances, alors je vais partir sur cette solution.

Categories
Non classé

Design de l’application

Comme je ne dispose que de deux jours, je vais commencer par faire l’application la plus simple possible: elle va reprendre exactement les fonctions de la version réelle du jouet: déplacer la mine et effacer l’écran en le secouant. Pour l’instant, je ne prévois pas d’enregistrement des images, de galerie, etc. Pour la surface de dessin, je vais reprendre le rapport largeur/hauteur de 3/2.

Les molettes rotatives du jouet original ne sont pas pratiques sur un écran tactile; aussi vais-je utiliser des molettes linéaires. Cette entorse à la nostalgie a l’avantage de retirer deux défauts:

  • le jouet doit préciser pour chaque molette si elle transmet un mouvement horizontal ou vertical à la mine.
  • par ailleurs, il existe un doute sur la direction: une rotation de la molette horizontale dans le sens horaire déplace-t-elle la mine vers la droite ou vers la gauche ?

Enfin, je vais opter pour un boitier bleu afin de bien me différencier du modèle original. La forme sera aussi différente.

Categories
Non classé

Analyse marketing

La première étape lorsqu’on crée une appli est de faire une analyse marketing, même pour ma petite appli du week-end. Inutile d’aller trop dans les détails, mais il y a quelques questions à se poser.

Est-ce que ça existe déjà ?

Première recherche avec le nom Télécran utilisé en France. Rapidement, je trouve la référence d’une application, mais il se trouve qu’elle n’est plus proposée… certainement pour des questions de droits. Il faut être particulièrement naïf pour croire qu’on va pouvoir utiliser librement une marque déposée ou copier le design de l’engin.

Je trouve Magic Doodle à 1,59 €. Je n’ai pas essayé l’application, mais on voit bien le problème d’une version iPhone: une fois les molettes à l’écran, il ne reste guère de place !

Seconde recherche avec Etch a Sketch, le nom aux États-Unis. Etch a Sketch HD for iPad à 2,39 €. Ils semblent avoir un accord pour utiliser la marque. L’appli a l’air plutôt bien faite, avec quelques options de partage.

Sketcher HD à 2,39 €. C’est assez moche, et je pense que les auteurs ont tout faux en s’éloignant du concept original en permettant de dessiner au doigt.

Est-ce qu’on se lance ?

Finalement, seule l’application “officielle” se révèle un véritable concurrent. Pour ma part, je n’ai pas d’objectif commercial, juste l’envie de voir mon appli sur tous les iPad. Je vais donc la programmer de toute façon.

À quel prix ?

Là encore, je n’ai pas vraiment d’objectif commercial. Ceci dit, je veux profiter de l’application pour faire connaître les prestations de ma société. De fait, pour ce petit projet de deux jours, l’application sera gratuite. Je me dis que si le succès était au rendez-vous, je pourrais toujours ajouter des fonctionnalités qui seraient débloquées par un achat in-app.

Le nom

Le nom est très important! Comme je ne peux pas utiliser la marque officielle, j’invente mon propre nom. J’ai choisi Telelineo; ça me semble bien exprimer le fait de tracer indirectement des lignes, et je voulais un nom qui sonne latin. J’ai essayé plusieurs noms, mais celui-ci n’a pas l’air déposé, et je peux réserver le telelineo.com.

Categories
Non classé

Une appli pour le week-end

Ma femme étant partie chez ses parents, me voici seul pendant ce long week-end de la Toussaint. J’ai l’intention de mettre à profit ces deux jours pour construire entièrement une application pour iPad.

Cet été, durant mes congés, je me suis rendu dans une petite brocante ou j’ai déniché cet objet pour seulement cinquante centimes:

Telecran

Les plus jeunes de mes lecteurs ne connaîtront peut-être pas ce jeu, aussi je vais résumer son fonctionnement. L’écran est constitué d’une vitre à laquelle adhère, par électricité statique, une poudre dorée. Une mine est appuyée sur la face intérieure de la vitre; la déplacer détache la poudre ce qui permet de dessiner. À cet effet, une molette permet les déplacements horizontaux et une autre les déplacements verticaux.Pour effacer l’écran, il suffit de secouer le jouet pour que la poudre qui se trouve au fond soit à nouveau en contact avec la vitre.

Assez rapidement, l’idée me vient d’en faire une version numérique sur iPad. Je me donne deux jours pour y parvenir.

Categories
Non classé

Déploiement aérien (Over the Air) d’une application iOS

Que vous veuillez envoyer votre application à des testeurs (distribution AdHoc) ou l’installer sur les terminaux de l’entreprise (distribution Enterprise), la manière classique de procéder est de transmettre l’application sous forme d’un fichier .ipa, de glisser celui-ci dans iTunes, puis de brancher et synchroniser le terminal iOS.

Cependant, il existe aussi un déploiement aérien (“Over the Air”) qui consiste à fournir (par courriel ou SMS) une URL vers une page web. En se rendant sur cette page avec le terminal iOS, on touche un simple lien et iOS propose d’installer l’application, puis la télécharge. Cette manière de procéder est peu connue; le fait d’Apple qui l’a documentée dans son guide ”Distributing Enterprise Apps for iOS 4 Devices”, alors que cette procédure est tout à fait permise en mode Ad Hoc.

En pratique

Vous allez créez un répertoire sur votre site web, qui contiendra:

  • le fichier .ipa
  • un fichier index.html qui sera la page web contenant le lien pour télécharger
  • un fichier manifeste, qui est une .plist comportant les renseignements sur votre application.

Le fichier html

Voici un exemple simple, mais bien suffisant:

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<body>
<a href="itms-services://?action=download-manifest&url=http://www.monsite.fr/monappli/
MonAppli.plist">Installer l'application</a>
</body>

Cette page comportera uniquement un lien vers les services d’itunes auxquels on fournit l’adresse du manifeste, MonAppli.plist dans cet exemple. Il est évident que le passage par les services d’iTunes garantit que vous n’abuserez pas du système !

Application et manifeste

La doc d’apple donne un manifeste d’exemple fort compliqué. En fait, Xcode 4 va le générer pour nous. Pour cela:

  • commencez par Archiver l’application.
  • une fois l’archive dans l’Organiseur, cliquez le bouton ”Share…”
  • choisissez ”iOS App Store Package (.ipa)” et le certificat qui convient pour un déploiement Ad Hoc ou Enterprise.
  • conserver le nom du fichier .ipa, et cochez la case ”Save for Enterprise Distribution”
  • des champs apparaissent, renseignez au moins l’URL de l’appli (http://monsite.fr/monappli/MonAppli.ipa) et le titre. Xcode a généré app.ipa et app.plist, vous n’avez plus qu’à les copier dans le répertoire de votre site web.

Si ça ne fonctionne pas

D’expérience, il est assez rare que cela fonctionne au premier essai !

  • Commencez par vérifier l’URL du manifeste dans le fichier HTML
  • Vérifiez ensuite l’URL de l’appli dans le manifeste. L’adresse doit comporter le nom de l’application, donc se terminer par /MonAppli.ipa
  • Jetez un œil à la Console du terminal dans l’Organizer de Xcode. La raison est parfois affichée.
  • Si cela ne fonctionne toujours pas, c’est probablement un problème de certificat. On observe généralement que le téléchargement se termine mais que l’application disparait aussitôt. Dans ce cas, rebranchez votre terminal iOS et tentez une installation filaire pour résoudre ce problème.

Limitations

Ce mode de distribution n’est possible qu’à partir d’iOS 4. Sachez qu’il existe des sites web qui se proposent de stocker le fichier .ipa pour vous; dans le cas ou le terminal tourne sur une version antérieure d’iOS, ils proposent alors d’envoyer un courriel comportant l’URL de l’application pour pouvoir effectuer une installation filaire. Voilà, essayer le déploiement aérien, c’est l’adopter !