Tutoriel Swift : formatage de numéros de téléphones avec PhoneNumberKit

PhoneNumConverterExample

Dans le cadre de mon activité de freelance, j’ai récemment dû répondre à une offre dans laquelle il était demandé :

 

– De créer un champ texte intégrant un numéro de téléphone

 

– Ce champ texte devra formater le numéro de téléphone pour avoir le même affichage que dans l’appli « Contacts » d’Apple.

 

– Le formatage doit se faire dans les normes locales de chaque pays.

 

– Puis le numéro de téléphone doit, toujours en fonction de la localisation, être converti à la norme E164.

 

– L’utilisation de frameworks externes est autorisée.

 

– Forcément, il faut réaliser tout cela pour moins de 5 euros et en 5 mn 😦 …

 

Comme j’ai trouvé le challenge intéressant (et avec l’espoir de facturer à un tarif un peu plus décent…), je me suis penché sur la question.

La première option qui m’est venue à l’esprit est de partir d’une « page blanche », et de tout coder. Après tout, filtrer et formater des entrées utilisateur n’est pas bien compliqué.

Oui mais pour que cela fonctionne pour tous les pays, cela devient nettement plus gourmand en temps et en neurones…

C’est ainsi que j’ai découvert le génialissime framewok « PhoneNumberKit« 

PhoneNuberKit est un framework créé par Marmelroy, écrit entièrement en Swift, qui permet de formater et valider des numéros de téléphone, inspiré par Google Libphonenumber.

C’est exactement ce qu’il me fallait pour relever ce challenge !

Allez, place à la démo !

 

Comme d’habitude, on crée un nouveau projet, et on y intègre le framework PhoneNumberKit grâce à Cocoapods :

PodFilePhoneNumConverterExample.png

 

Ensuite on prépare une vue contenant un bouton et un champ texte, et 2 ou 3 fioritures 🙂 :

PhonenumberExampleStoryboard

Tant que nous sommes sur le storyborad, nous allons attribuer le Text Field à une classe personalisée, fournie par le framework : « PhoneNumberKitTextField » :

TextFieldPhoneNumberKitExample

Et l’air de rien, sans avoir écrit aucune ligne de code, si on entre un numéro de téléphone comme 0123456789 dans le textfield, il est automatiquement formaté en 01 23 45 67 89 ! Idem pour les autres pays ! Magique je vous dit !

Et voilà la première partie du challenge réalisée !

Pour la seconde partie, va falloir coder un peu (quand même…), mais vous allez voir, rien de très compliqué :

FilePhoneNumConverterExampleMain

Et voilà, 1 outlet pour le textfield, 3 variables, 1 action pour le bouton, et la seconde partie du challenge est terminée !

Bon j’avoue que le temps réfléchir à la bonne approche, de trouver et de prendre en main le framework, finaliser le challenge m’a pris 2 heures…

On est donc loin des 5 mn 😦 Mais quand même, un giga merci à PhoneNumberKit !

Comme toujours, vous retrouverez le code source du tutoriel ici : https://gitlab.com/vinceBar/phonenumconverterexample

Et si vous avez des questions, des idées… Commentez et likez !

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.