Comme je l’ai déjà dit ici même: je travaille en ce moment sur un projet d’application pour l’iPhone 2.0. Ca va maintenant faire un mois que j’ai commencé ce projet (avec une coupure pour aider sur un projet WebDev) et je pense qu’il est temps de faire le point sur mes impressions.
Une doc bien, mais pas top …
Tout d’abord l’impression de départ: submergé ! Ce n’est pas une chose aisée d’attaquer le développement sur iPhone quand on n’a jamais eu l’occasion de développer en Objective-C ni avec le framework Cocoa. Mais bon, j’aime bien quand il y a tout à apprendre. Au début, la documentation va à foison (et ce que ce soit en vidéo ou en texte). Seulement quand on commence à avancer un peu dans l’apprentissage on se rend compte qu’on a certains points hyper-documentés et d’autre non. Donc premier point noir: documentation quelques fois spartiate.
Ce problème de documentation fait que l’on cherche pendant quelques temps certaines fonctionnalités que l’on sait présentes … Ou que l’on croit savoir présente. En effet, Apple n’a pas implanté certaines choses pourtant essentielles. On va prendre un exemple simple: le calendrier.
Un calendrier scellé
L’une des fonctionnalités de mon application est la gestion d’un certain nombre de rendez-vous. Pour moi le schéma était simple: j’allais inscrire les rendez-vous dans le calendrier de l’iPhone … Ou au moins j’allais les lire (laissant l’utilisateur passer par l’interface dédiée). Après moult recherches j’en arrive à la conclusion qu’il n’y a pas de moyen d’y accéder directement (avec un objet du genre ABPeoplePickerNavigationController) … En continuant mes recherches, je me rends compte que le calendrier n’est ni plus ni moins qu’une base de données SQLite. Génial: quelques requêtes et ça roule ! Oui mais voilà: ils sont où les schémas SQL ? Bon, ça encore ça se récupère. Mais ce genre de pratique est contre la politique d’Apple.
Et alors ? me direz-vous… Et bien dans le système actuel être contre la politique d’Apple signifie ne pas pouvoir être présent sur l’Appstore . Ainsi, si une application n’est pas présente sur l’Appstore, elle ne pourra pas être distribuée. Il n’est pas utile de développer une application si elle ne sera pas distribuée. Donc: on va suivre la politique Apple. J’avoue que, en tant que développeur, ça me fait ch*** de me retrouver à utiliser le calendrier Google dans une application embarquée alors qu’il y a un calendrier sur le même terminal !
Un GPS qui dit où on est mais pas où aller
Ce n’est qu’une limitation comme ça, il la prend en exemple mais il n’y en a pas d’autres … J’aimerais bien ! Dans mon application, il y a aussi de la géo localisation … Le but est de repérer l’iPhone de l’utilisateur par rapport à des coordonnées GPS mobiles pour qu’il aille à leurs rencontre. A l’origine, je devais faire un système de guidage simple (on ne va pas redévelopper TomTom non plus). Résultat: interdit par la licence du SDK.
Pourquoi Apple interdirait ce genre de pratique qui est pourtant évidente sur un terminal doté d’un GPS interne ? J’avoue que j’ai ma petite idée: pour refiler le monopole du guidage GPS à un partenaire (Route 66, TomTom, etc …). Des exemples comme ça, j’en il y en a d’autres: je ne vais pas vous en faire la liste …
Une communauté réduite
Un point qui fait plutôt mal, c’est celui de la communauté. Même si l’ouverture de l’iPhone aux développeurs tiers est récente (mars dernier), je m’attendais à trouver une communauté un minimum développée avec laquelle échanger … Et bien non ! Les seules communautés de développeurs fournies que j’ai pu trouver concernent les applications pour iPhone déverrouillés … Peu parlent de leur expérience avec Cocoa Touch.
Pourquoi ? Parce que ce n’est pas dans la politique d’Apple de laisser communiquer sur le SDK en public. D’ailleurs, chaque développeur signe une clause de confidentialité (enfin, on coche une case j’ai lu et j’accepte … ).
Bref, l’iPhone est certes un bon produit (perfectible). Certes, il est facile et rapide de faire de très belles interfaces … Oui mais il n’est pas vraiment ouvert ! Les limitations à vocations commerciales d’Apple mettent vraiment les battons dans les roues. C’est la première fois que je fais l’expérience de ce genre de choses à une telle échelle. Et ce n’est pas du tout agréable !


