Blog de Samuel Liard
RSS icon Email icon Home icon
  • Fuck XCode !

    Oui le titre est vulgaire, mais ça fait du bien de se défouler! Dans le précedent post j’expliquais pourquoi j’avais abandonner PhoneGap pour faire mon application. J’étais alors loin d’imaginer la galère que ça allait être en natif avec XCode.

    Notez que j’avais mis à jour mon XCode à la sortie de iOS 5 pour avoir la dernière version 4.2.

     

    Donc je me lance : « Fichier -> nouveau projet » et je tombe sur un nouveau type d’application « Page-Based Application ». Comme c’est exactement ce que je souhaite faire, je décide de le tester. A la fin de ma journée c’est plié mon application est terminée. Ca fonctionne sur le simulateur et sur mon iPhone mais juste avant de rentrer chez moi je relance rapidement un test mais avec le simulateur iOS 4.3 cette fois. Surprise, ça ne compile pas :( Et oui la classe UIPageViewController n’existe qu’à partir de iOS 5. Ok, je poubellise ma journée..

    Le lendemain je recommence un projet « Single View Application » et on me propose une option « Use storyBoard ». Ok pourquoi pas, ça a l’air plus simple de gérer ses XIB avec un storyBoard. Et donc après une demie journée de travail je termine de nouveau mon application. Et de nouveau ça ne fonctionne pas sur iOS 4.3. J’ai mis plus de temps avant de comprendre que ça venait des storyboards compatibles uniquement iOS 5. Quelqu’un peut m’expliquer pourquoi une nouvelle représentation graphique des vues ne pourrait pas générer du binaire compatible iOS 3 ??

    Donc merci Apple pour toutes ces nouveautés d’XCode 4.2, vraiment merci ! J’ai hâte de pouvoir les utiliser dans 3 ou 4 ans lorsque nos clients sauront tous au moins sur iOS 5. Car aujourd’hui nous avons encore beaucoup de clients avec des iPhones 3G qui ne passeront donc jamais sur iOS 5. Et je ne parle même pas de ceux qui ne mettent jamais leur iPhone à jour.

    Sortir aujourd’hui une application uniquement compatible iOS 5 c’est juste stupide !

    Bref ! J’ai donc recodé mes vues avec de beaux XIB et enfin mon application fonctionnait sous iOS 3 et 4. Miracle !! Je la passe donc à notre équipe de validation. 10 minutes plus tard j’ai un email « impossible de l’installer sur mon iPhone 3G sous iOS4.1″. Mince je l’ai pourtant testée sur un 3GS avec le même OS. Donc je me balade de bureau en bureau pour enfin trouver un iPhone 3G : en effet, impossible de l’installer. Après des recherches sur le net je trouve (sur ce site) les options de compilations à ajouter. Car à partir de l’iPhone 3GS l’architecture est basée sur du armv7 alors que l’iPhone 3G est armv6.

    Là c’est clair Apple a définitivement oublié l’iPhone 3G. Par défaut votre application ne fonctionnera pas sur ce terminal.

    Avec ces options j’arrive enfin à installer l’application sur un iPhone 3G ! Mais resurprise : elle se lance mais ne fonctionne pas correctement. Mes 3 vues qui étaient côte à côte dans une UIScrollView se superposent. A ne rien y comprendre. Après une longue soirée à débugguer j’ai trouvé une solution en modifiant mon code :

    if ([device isEqualToString:IPHONE_3G]) {
        frame.origin.x = 0;
        frame.origin.y = frame.size.width * i;
    } else {
        frame.origin.x = frame.size.width * i;
        frame.origin.y = 0;
    }

    Ne me demandez pas pourquoi, mais sur le 3G l’axe des X et l’axe des Y de ma ScrollView sont inversés. Je ne cherche même plus à comprendre à ce niveau…

    Je retourne donc une nouvelle version pour validation et j’ai comme retour :

    • 3G ios 4.2.1 -> OK
    • 3G ios 4.0.2 -> KO
    • 3G ios 3.1.3 -> KO
    • 3GS ios 3.1.3 -> OK

    Je tente donc un dernier changement au niveau de ma compilation. XCode 4.2 utilise par défaut le compilateur  » Apple LLVM compiler 3.0″. Je passe donc en « LLVM GCC 4.2″

    • 3G ios 4.2.1 = installation OK, et icône OK
    • 3G ios 4.0.2 = installation OK, mais icône KO
    • 3G ios 3.1.3 = installation KO

    C’est un peu mieux et cette fois j’abandonne, je vais en rester là.

    Moralité de l’histoire : réfléchissez avant de passer sur XCode 4.2. C’est beaucoup de problèmes et les nouveautés sont juste inutilisables pour le moment.

    Et oui il y a des semaines comme ça où : FUCK XCODE !

  • Premier essai de PhoneGap

    Dernièrement j’avais à développer une application mobile sans grosse difficulté technique. J’ai donc eu envie d’essayer de la réaliser avec PhoneGap.

    Je ne vais pas faire d’article pour expliquer comment fonctionne PhoneGap car beaucoup l’on déjà fait mieux que je ne peux le faire (comme octo par exemple) mais juste faire un petit retour d’expérience.

    La base de PhoneGap c’est de pouvoir faire des applications mobiles mutliplate-forme en développement en HTML/CSS/Javascript.

    Je ne suis vraiment pas un spécialiste du HTML et encore moins du Javascript. Mais je pense qu’il est grand temps de s’y mettre et ce petit projet est une bonne occasion.

    Je débute donc et rapidement je tombe sur un premier problème : le titre dans la nav bar en haut de page est tronqué. J’ai rapidement trouvé où changer le CSS pour corriger cela. Ouf :)

    Je développe avec Dreamweaver et c’est assez agréable. En effet il supporte JQuery et PhoneGap. Ca me permet d’avoir un aperçu direct du rendu de mon code et en 2 cliques ça me génère un projet XCode et lance directement le simulateur iPhone pour tester l’application.

    Par contre on arrive vite aux limites de Dreamweaver au moment où on utilise du javascript PhoneGap. Par exemple, j’avais besoin de gérer le changement d’état de l’application (passage en background, retour au premier plan..). Pour ça il faut utiliser la méthode :

    document.addEventListener("resume", onResume, false);

    Mais impossible de le tester dans un navigateur ou dans Dreamweaver. Ca ne fonctionne bien sûr que sur l’iPhone.

    Et là, re-problème, ma méthode onResume ne se lance jamais :( Je suis donc parti sur une longue demi-journée de debug à base de alert(« je passe là ») pour finir par comprendre que Dreamweaver utilise une ancienne version de PhoneGap ne gérant pas l’évènement « resume ». Impossible de trouver le numéro de version PhoneGap utilisé ! Et pas d’explication non plus sur comment utiliser une autre version. J’ai même bêtement intégré le fichier phonegap-1.1.0.js dans mon projet : marche pas car c’est la lib PhoneGap du projet XCode généré qu’il faut changer.

    J’ai donc fini par abandonner la génération PhoneGap intégré par DreamWeaver. J’utilise PhoneGap normalement dans XCode et Dream ne me sert que d’éditeur de texte car la complétion et l’aperçu c’est quand même bien pratique.

    J’avais l’impression d’avoir réalisé le plus dur. Il me restait à ouvrir une simple petite fenêtre popup. Et là, catastrophe, le rendu sur un navigateur est différent de celui sur l’iPhone. Plus grave la transition au moment de la fermeture de la popup fonctionne si elle est ouverte depuis la première page mais pas depuis les autres. Je pense que c’est un problème JQuery et pas PhoneGap puisque je constate le même problème sur un navigateur.

    Comment faire pour débugger ??

    C’était trop pour moi, j’ai préféré abandonner et repasser sur de l’Objective-C. En une journée j’ai refait ce que j’avais mis 3 jours à faire en Javascript (normal, je maitrise mieux) et hop ça marche !

    Donc non PhoneGap ne m’a pas convaincu. En fait pour être plus juste, c’est plus le Javascript qui m’a bloqué. Déjà je n’ai pas assez d’expérience avec ce langage, mais c’est surtout une vraie galère à débugger !

  • Retour de la WWDC 2010

    Et voilà je suis de retour en France après une semaine à San Francisco pour la WWDC 2010. Je ne peux pas vous faire un article par session car il est strictement interdit de communiquer sur ce que nous avons entendu. Mais par contre je peux vous résumer le voyage, la Key Note et l’ambiance.

    img_0016

    Le voyage

    Comme je suis de Lannion, le trajet pour Paris c’est déjà une aventure :) Je vous passe les détails des 4 heures de train au milieu d’un groupe de 50 gamins de 12 ans. Ensuite il faut 11 heures d’avion pour arriver à San Francisco. C’est en me baladant dans l’avion que j’ai vite compris que pas mal de monde allait aussi à la WWDC au vu du nombre d’iPad. 11h de vol c’est un très bon test pour la batterie, et bien même en regardant des films et en jouant avec l’iPad ça passe.

    J’arrive donc à San Francisco le Samedi vers 13h, le temps de s’installer à l’hôtel et on court direct à l’Apple store. Un collègue en profite pour acheter un iPad 64Go :) Après un peu de shopping et un bon gros hamburger, à 20h on est claqué (5h du matin en France). Arrive donc Dimanche après une nuit un peu chaotique. Comme c’était ma première visite à San Francisco j’ai fait le tour classique :

    • Cable car
    • Golden Gate
    • Fisherman’s Wharf

    4683917181_a580bdc71c4683991987_a0e3df67a94684723542_f862d144c04683907607_f637a5a240

    C’est très impressionnant de voir les rues de San Francisco, on retrouve vraiment l’ambiance des films et séries tournés ici.

    La KeyNote

    C’est à ce moment que la folie commence. Comme c’est Steve Jobs qui présente la Key Note et que la salle n’est pas assez grande pour accueillir tous les participants, il faut se lever tôt pour avoir une place. Personnellement j’étais présent à 5h30 alors que la conf commençait à 10h. Et bien il y avait déjà plus de 400 personnes devant moi.

    4684681752_bd1bc99e534684056775_9f7a815493

    Le premier était arrivé la veille à 18h. Une grand bande de fous dont je faisais partie :) Après 4 bonnes heures à poireauter, c’est le moment d’entrer dans la salle. Je me retrouve donc au troisième rang grâce à un petit tour de passe passe. Je peux vous dire que je pouvais presque toucher Steve Jobs, un grand moment que je garderais longtemps en mémoire.

    img_00454684079541_3a8d7f14ab

    Je ne vais pas vous refaire la Key Note, beaucoup l’on fait avant moi mais l’événement marquant a bien-sûr été la présentation de l’iPhone 4.

    La démo de l’appel video entre Steve Jobs et Jonathan Ive était impressionnante. Mais le moment le plus fort dans la salle s’est produit pendant la diffusion de la vidéo résumant la fonction visio au moment où deux sourds et muets communiquaient par langage des signes via FaceTime.

    Les conférences

    On ne peut qu’admirer l’organisation parfaite de la semaine par Apple. Jamais je n’avais participé à un séminaire où 100% des sessions commencent et terminent à l’heure, leur timing est hallucinant. Le professionnalisme des présentateurs est aussi remarquable. Après renseignement j’ai appris que les slides présentés étaient tous réalisés par une équipe de designer et que les présentateurs étaient suivis pas un coach pour parfaire la prestation. Et bien le résultat est simplement parfait !

    Pour vous mettre dans la même ambiance, vous pouvez écouter ci-dessous la musique qui tournait en boucle entre les sessions.

    Comme je l’ai expliqué plus haut, il nous est interdit de communiquer sur le contenu des présentations. Mais je peux vous dire que c’était souvent assez technique et très enrichissant.

    J’ai donc appris beaucoup au niveau développement pendant une semaine et je n’ai maintenant qu’une envie c’est d’y retourner l’année prochaine!

  • Départ pour San Francisco !

    Voila c’est parti Demain j’arrive à San Francisco pour participer à la WWDC 2010. Je ne suis pas sur d’avoir le temps de faire de gros articles sur le blog et dans ce cas Twitter est peut être mieux adapté.
    Donc même si je ne suis pas un Twitter, je vais tester l’exercice pendant ce voyage et surtout pendant la Key Note avec Steve Jobs !
    Vous pourrez donc me suivre sur : http://twitter.com/sliard

  • Premier bilan pour iMovies Collection

    Cela fait maintenant un peu plus d’un mois que l’application iMovies Collection est en ligne, je vais donc vous faire un premier petit bilan.

    Début difficile

    Première bonne surprise, l’application a été validée du premier coup et en trois jours. Ca été même un peu trop rapide, la FAQ et la doc sur le site n’étaient pas prètes. J’avais aussi laissé un gros bug. Même si je l’ai corrigé directement et que Apple l’a validé dans la journée, cela a quand même nuit à l’image de l’application. :(

    Version Lite

    Après deux commentaires de personnes n’arrivant pas à faire fonctionner l’application, j’ai réalisé une version  »Lite » gratuite de iMovies (limitée à 20 films). L’idée était à la fois de montrer que l’application fonctionnait mais aussi d’aider les indécis. Au même moment j’ai augmenté le prix de l’application de $0,99 à $1,99.

    Evolution rapide

    Après deux semaines de discussions avec les utilisateurs j’ai ajouté des fonctionnalités et optimisé le temps de chargement de l’application pour publier la version 1.1.0. Mine de rien j’ai passé beaucoup de temps à répondre aux questions par email et sur les forums.

    Premier paiement

    Alors tout est relatif bien-sûr mais je suis assez content, j’ai plus de 400 téléchargements ce qui fait à peu près 400 Euros. Maintenant c’est assez stable j’ai autour de 12 achats par jour. La première bonne nouvelle c’est que je vais au moins rembourser mes frais. Ensuite je pensais bêtement recevoir un virement de 400 € d’Apple, en fait c’est pas si simple. Déjà il faut avoir plus de 150$ pour être payé et je pensais répondre facilement au critère, en fait il faut 150$ par zone monétaire :

    pays

    Et là c’est moins drôle. Pour le moment j’ai eu deux achats au Japon, va falloir encore pas mal de temps pour arriver à 150$. Heureusement le plus gros des achats a été fait aux USA et en Europe, j’ai donc reçu 116 Euros pour le mois de Janvier en Europe. Mais pour le moment si on cumule Canada, Angleterre, Japon, Australie et « le reste du monde » on arrive quand même à 120$. A la lecture de forum, Apple doit payer ces « petites sommes » en fin d’année (si le montant par zone est supérieur aux frais de virement bien-sûr).

    Bilan

    Je retiens donc plusieurs leçons :

    • Peaufiner un maximum votre première version

    Les nouvelles applications sont mises en avant sur l’AppStore il faut donc en profiter un maximum. Comme vos premières notes sont assez déterminantes il faut donc proposer une application bien faite.

    • Mettre l’accent sur l’ergonomie

    Si l’utilisateur n’arrive pas à faire fonctionner l’application en 2 minutes, l’application est jetée. Et c’est justement au moment où on supprime l’application qu’Apple propose de la noter. N’oubliez pas non plus qu’il est impossible de répondre aux mauvaises critiques, et ça c’est très frustrant.

    • Proposer une version gratuite

    Tester l’application avant de l’acheter c’est vraiment important pour l’utilisateur.

    • Bien choisir son prix

    Il y a beaucoup d’applications complètement creuses à 1$, mettre son application un peu plus chère peut montrer qu’elle a plus de contenu.

  • Peut-on vendre du vent sur l’AppStrore ?

    Suite à la publication de iMovies Collection sur l’AppStore, j’ai eu envie de réaliser une petite expérience. Je voulais savoir si grâce au volume important d’iPhone il était possible de vendre facilement une application pratiquement vide à 1$. J’ai donc cherché une idée la plus simple possible et avec très peu de développement. Ensuite je l’ai réalisée en 1h chrono un Dimanche après midi sur mon canapé.

    L’idée est simple : afficher des photos de chatons.

    J’ai donc trouvé sur le net des photos libres de droits pour ensuite les afficher sur l’iPhone. Pour faire un peu moins vide, j’ai ajouté un son de miaulement :) Adorables Chatons est donc sorti le 27 Janvier sur l’AppStore !

    icon

    Et bien la réponse est simple : non ça ne se vend pas.

    Même si j’ai eu un pic de 16 ventes le premier jour ça s’est très vite arrêté. J’en ai vendu pour le moment 29.

    Alors bien-sûr il ne faut peut-être pas généraliser et il y a peut-être de meilleures idées aussi simples qui se vendent, mais à mon avis pour cela il me manquait deux choses importantes

    • Une application plus fun
    • Un gros buzz au lancement

    Pour compléter cette expérience j’ai eu envie de tester l’affichage de publicité sur iPhone. J’ai donc ajouté un bandeau admob sous les chatons pour réaliser une version gratuite de « Adorables chatons »

    icon1

    Là, bien-sûr, j’ai eu beaucoup plus de téléchargements (857 en une semaine). Ce qui a généré 2376 demandes de publicité pour 1894 affichages. Je ne sais pas pourquoi mais de temps en temps la pub ne s’affiche pas lorsqu’on lance l’application, ce qui explique la différence entre ces deux chiffres. Il y a eu 259 clics sur la pub ce qui a généré un revenu de $8,20. Quand on sait que c’est sur la première semaine qu’il y a le plus de téléchargements, j’ai peu de risque de payer l’ISF cette année ;)

    admob

    Mais là aussi ce n’est peut-être pas l’application idéale pour générer des revenus publicitaires. En effet on a pas forcement envie de lancer très souvent une application qui affiche toujours les mêmes images.

    Voilà pour mes premiers tests sur l’appStore, je prépare un article pour vous faire un premier bilan sur iMovies Collection.