Vincent Tourraine
Blog

Tous les billets dev

iOS : localisation plus cohérente

Localiser une application est une tâche difficile, qui implique de nombreux aspects au-delà de la simple traduction de texte. iOS inclut des outils qui peuvent faciliter cette localisation, et l’adapter aux réglages de l’utilisateur.
#dev #iOS

MiXiT 2018

MiXiT est une conférence très sympathique pour beaucoup de raisons, mais notamment parce qu’elle propose une API simple pour consulter le programme. Je trouve que c’est une excellente occasion pour construire une petite application.
#mixit #iOS #app #dev

Tester l’exécution d’un block en paramètre avec OCMock

J’utilise OCMock pour écrire des tests unitaires avec Objective-C depuis plusieurs années, mais je viens tout de juste de découvrir un nouveau cas d’utilisation, pas vraiment évident, mais bien pratique. Il s’agit de configurer un mock pour invoquer un block passé en paramètre.
#dev #Objective-C #unit test

Synchroniser les numéros de version des Extensions

Les App Extensions gagnent chaque année en importance. Depuis leur introduction avec iOS 8, elles fonctionnent essentiellement comme des applications indépendantes, avec notamment leur propre numéro de version.
#dev #Xcode

Notations App Store, nouvelle génération

L’importance des notations sur l’App Store a généralisé le concept du « Please rate this app ». Ces alertes encouragent, de façon plus ou moins insistante, l’utilisateur à laisser un avis sur l’App Store. Tout ça pour obtenir le plus de ★★★★★.
#dev #iOS

Tester plusieurs versions d’iOS avec buddybuild

Dès qu’une nouvelle version d’iOS arrive, on aimerait pouvoir abandonner les précédentes. D’une part, pour bénéficier des dernières APIs, mais aussi pour simplifier les conditions d’exécution du code. Or, avec un peu de pragmatisme, il convient généralement de supporter une ou deux versions antérieures afin de ne pas exclure une partie des utilisateurs potentiels.
#iOS #Xcode #dev

Table view avec sections dynamiques

« UITableView » est un élément fondamental de l’interface d’iOS depuis la toute première version du SDK. Elle s’organise en deux niveaux : des sections, et des lignes. Rien de compliqué lorsque le contenu est statique. Mais les choses peuvent vite se corser quand ces sections et ces lignes apparaissent dynamiquement.
#dev #Swift #UIKit

Commentaire en-tête

À la création d’un nouveau fichier, Xcode insère systématiquement un en-tête contenant des renseignements de base : nom du fichier et du projet, le créateur, la date de création, et le nom de l’organisation attachée au projet.
#dev

Code block evaluation

Pour garantir la bonne qualité d’un code source, on conseille souvent de garder les fonctions courtes. Au-delà d’une dizaine de lignes, mieux vaut re-découper. C’est généralement une bonne règle à suivre, mais qui peut entraîner un nouveau problème. En effet, cette contrainte favorise des fonctions plus concises, mais parfois trop fragmentées, ce qui nuit à la lisibilité du code dans son ensemble.
#Objective-C #dev

Mega Moji

Tous les ans c’est la même chose. Une nouvelle version d’iOS arrive, avec son SDK et ses API, et autant de nouvelles opportunités. Je voulais donc en profiter pour construire une nouvelle app, et essayer d’être présent dès le premier jour de disponibilité de l’OS.
#iOS #dev

Mix-IT 2016

La nouvelle édition de Mix-IT se déroulera la semaine prochaine, c’était donc le bon moment pour mettre à jour mon app iOS permettant d’en consulter le programme, initialement publiée l’année dernière.
#mixit #iOS #app #dev

À propos de watchOS 2

J’ai récemment eu l’occasion de mettre à jour une application pour watchOS 2. Un peu en retard, pour un OS disponible depuis septembre dernier. Mais ce passage n’est pas anodin, car le mode de fonctionnement des apps s’en trouve littéralement renversé.
#dev #watchOS #WatchKit

Découpage des méthodes et fonctions

Comment découper son code en méthodes/fonctions ? Quel est le bon moment pour choisir d’écrire une nouvelle méthode, plutôt que de simplement continuer avec celle déjà existante ? Ces questions sont terriblement basiques, mais je continue de me les poser continuellement.
#dev

Generics avec Objective-C

Après les « nullability annotations » d’Xcode 6.3, voici les « generics » d’Xcode 7. L’intention est la même : faire évoluer Objective-C pour faciliter son interopérabilité avec Swift. Avec, au passage, l’occasion d’améliorer la qualité du code Objective-C pour lui-même, en permettant à Xcode de détecter toute une nouvelle catégorie de bugs.
#Objective-C #Xcode #dev

Comment implémenter Peek et Pop pour 3D Touch

article thumbnail
Tous les ans c’est la même chose, Apple garde quelques API en surprise pour la sortie d’iOS au mois de septembre. Avec iOS 9 et les écrans 3D Touch des nouveaux iPhones, voici donc « Peek » et « Pop », qui remportent conjointement le prix de l’API au nom le plus ridicule à porter. Du côté du code, par contre, il est question de « view controller previewing » et de « commit » du preview, le tout restant associé à Force Touch.
#iOS #UIKit #dev

AcknowList

Cette semaine, j’ai publié une première version d’AcknowList, une bibliothèque en Swift pour afficher les licences CocoaPods à l’intérieur d’une application. Si ça vous rappelle quelque chose, c’est parce que j’avais initialement créé ce projet en Objective-C, il y a presque deux ans. Les temps changent, il faut s’adapter. Toutes les occasions de mettre Swift en pratique sont bonnes à prendre, et on peut bien sûr en tirer quelques leçons.
#Swift #CocoaPods #dev

Indexer le contenu d’une app avec Spotlight pour iOS 9

article thumbnail
Une nouvelle API à la fois simple d’utilisation et intéressante pour la plupart des apps : une combinaison comme on les aime. Avec iOS 9, on peut donc indexer le contenu d’une application, afin de rendre des données accessibles à tout moment depuis le champs de recherche système (a.k.a. « Spotlight »). Une opportunité plutôt rare dans un OS où chaque app est soigneusement sandboxée. Il faudra encore attendre pour une éventuelle API Siri, mais cette nouveauté constitue déjà une amélioration importante.
#iOS #dev

Nullability et initialisation

Mon dernier billet de blog présentait les « nullability annotations », en essayant d’expliquer comment elles contribuent à améliorer un code Objective-C. Avec un peu de recul, et après davantage de temps passé à les mettre en pratique, ces annotations me posent un problème. Un cas particulier, peut-être, mais absolument incontournable, puisqu’il s’agit de l’initialisation des objets.
#Objective-C #Xcode #dev

Nullability avec Objective-C

J’adore quand Xcode trouve des bugs dans mon code. C’est un peu comme si une IA passait mon travail en revue pour m’aider à l’améliorer. Le pair-programming du futur, sans doute.
#Objective-C #Xcode #dev

Comment inspecter une page web (ou une web view) avec iOS

Safari n’est pas exactement le navigateur favori des développeurs web. Il dispose cependant d’une fonctionnalité, un peu cachée et donc relativement méconnue, qui vaut vraiment le détour lorsqu’il s’agit de concevoir un site (ou une app) mobile. Je n’ai probablement pas à vous convaincre de l’intérêt du Web Inspector. Depuis Firebug jusqu’aux _DevTools_ de Chrome, la possibilité d’explorer le DOM avec une interface graphique est devenue incontournable. Mais comment faire pour un smartphone ou une tablette, quand le navigateur mobile ne dispose pas d’une telle fonctionnalité ? Dans le cas d’iOS, Safari s’en occupe très bien, encore faut-il savoir l’activer.
#iOS #web #dev

Impressions WWDC 2015

On peut dire que la WWDC est vraiment devenue « worldwide » depuis qu’Apple diffuse les vidéos des sessions pendant le courant de la semaine, allant cette année jusqu’à proposer plusieurs retransmissions en direct. Bref, San Francisco ou pas, tout le monde peut bénéficier de cette avalanche d’informations. Nouvelles versions des OS, nouvelles API, il y a forcément beaucoup de choses à dire, je ne vais donc pas me priver d’y ajouter mon commentaire.
#WWDC #iOS #OS X #watchOS #dev

Rappels pour Apple Watch

Parmi les premières apps Apple Watch disponibles, on trouve de nombreux gestionnaires de rappels. Clear, Wunderlist, Things, tous ont répondu à l’appel de WatchKit. Tous ? Non ! Une application fait clairement défaut : Reminders, a.k.a. Rappels, l’application d’Apple. Vous pouvez demander à Siri de créer un nouveau rappel depuis votre montre, mais vous ne pouvez pas les consulter.
#Apple Watch #WatchKit #dev

WatchKit, version 1

article thumbnail
Comment développer des applications sans jamais avoir utilisé l’OS concerné, ni même la classe de produit en question ? C’est le casse-tête posé par Apple aux développeurs tiers depuis quelques mois avec WatchKit, le SDK de l’Apple Watch. Le grand jour est arrivé, la montre est enfin disponible (pour les pré-commandes les plus rapides), et l’App Store Apple Watch contient environ 3000 apps. Ce nombre est comparable aux apps iPad pour le lancement de la tablette, alors que l’iPhone n’avait de 500 apps pour l’ouverture de l’App Store en 2008. Dernier chiffre pour mettre tout ça en perspective, on trouve environ 1,4 million d’apps iPhone aujourd’hui.
#Apple Watch #WatchKit #dev

Application iOS pour Mix-IT

Mix-IT, c’est un peu la WWDC lyonnaise. L’année dernière, la conférence avait vendu tous les billets en 48 heures ; cette année il aura suffit de 3 heures.
#mixit #iOS #dev

Bilan de ma première application Swift

Je ne me suis pas franchement jeté sur Swift après l’annonce de la WWDC 2014, mais dotSwift est passé par là, et voici maintenant ma première application Swift disponible sur l’App Store (pour être précis, l’application principale est en Swift, l’extension du clavier est encore en Objective-C). À défaut d’être original, je pense que c’est le bon moment pour un premier bilan de ma courte expérience avec ce nouveau langage qui s’annonce, rappelons-le, comme l’avenir du développement pour les plateformes Apple.
#Swift #dev

Ma sélection des pods les plus utilisés

La première fois qu’on me l’a présenté, CocoaPods m’avait laissé sceptique. Gérer ses dépendances et configurer un workspace Xcode était déjà assez compliqué comme ça, pas besoin de rajouter un outil tiers par dessus tout le reste. Bien sûr, c’est pourtant exactement pour cela que CocoaPods est si intéressant, parce qu’aucun développeur Objective-C ne devrait avoir à configurer un workspace pour une quelconque dépendance, ou mettre à jour un code tiers en téléchargeant une archive zip sur GitHub pour ensuite déplacer manuellement un ensemble de fichiers.
#CocoaPods #dev

Introduction au développement OS X (pour développeurs iOS, et pour les autres)

Coincé entre la déferlante iOS et la montée en puissance des web apps, le développement OS X n’est pas franchement au centre des attentions. Il s’agit pourtant d’une plateforme toujours intéressante, pour plusieurs raisons.
#dev #Cocoa #OS X

Structurer un code Objective-C

La qualité d’un code source est avant tout une question de structure. Lorsque je relis un code (notamment le mien), mon premier reproche concerne très souvent le manque de structure. Il n’existe pas de solution universelle, mais les bonnes pratiques en la matière permettent vraiment de développer plus efficacement, seul ou à plusieurs sur un projet. Voici donc un résumé des points qui me paraissent les plus importants pour bien structurer un code Objective-C.
#code #dev #Objective-C #Cocoa