Premiers test sur le terrain pour l’application mobile iOS « Kayak Tracker » !

J’ai réalisé cette semaine les premiers tests sur le terrain de ma nouvelle application mobile destinée aux pratiquant.es de sports tels que le kayak, le rafting, stand up paddle…

Dans un décors aussi magnifique que la vallée de la Loire, il y a des moments meilleurs que d’autres dans la vie de dév !

Cette application est un « must have » !

Grâce à elle, l’utilisateur.rice à accès à ses parcours (avec les détails tels que la distance parcourue, la vitesse moyenne, la vitesse maximum, le dénivelé…), et bien entendu sa position en temps réel.

Mais l’appli permet aussi le suivi des données cardio lors de l’exercice grâce à l’Apple Watch, ainsi que le suivi de la météo locale…

Encore quelques bugs à corriger, et je pense que vous pourrez la retrouver sur l’App Store d’ici une ou deux semaine !

Git Memorandum

Comme pour tous.tes les développeur.ses, Git fait partie de mon quotidien… Et comme tous.tes les développeur.ses, il m’arrive aussi de galérer avec Git 😦 .

C’est pourquoi j’ai décidé de créer ce billet de blog « Aide mémoire », destiné aussi bien aux débutant.es qu’au utilisateur.ices averti.es… Article sur lequel je partagerai bien entendu mes petites galères et mes (grandes) solutions !

Lire la suite

Tutoriel Swift : Introduction au machine learning avec Core ML

Voici le premier d’une série d’articles traitant du machine learning et des réseaux de neurones… tout un programme !


A moins que vous ne viviez au fin fond d’une grotte en Antarctique, il y a peu de chance pour que vous soyez passé à coté de la « déferlante machine learning ». Même si ce terme à parfois tout du buzzword à la mode, le machine learning (ML) permet quand même de réaliser des choses inimaginables il y a encore 10 ans (prédiction de cancers, reconnaissance d’images…) !

Autant dire qu’en tant que développeur.se, nous avons là un terrain de jeu fantastique !

Lire la suite

Tutoriel Android : Changer la limite d’envoi de sms grâce à ADB

Par défaut, le système Android met une limite au nombre de sms que peut envoyer une application de manière automatique.

Et c’est plutôt normal, car cela évite que des applis se mettent à envoyer du spam sms à l’insu de l’utilisateur.

Cependant, il y a des situations où l’on aimerai bien pouvoir changer ce comportement, de préférence sans avoir à « rooter » le téléphone…

C’est là qu’intervient ADB : Android Debug Bridge.

ADB est un ensemble de commandes en mode texte qui permettent de communiquer avec un device Android. ADB est disponible pour MS Windows, Apple MacOS et GNU Linux.

Attention, cela nécessite que votre device Android soit directement branché à l’ordinateur qui exécute ADB.

Installation d’ADB

Là, je ne vais détailler que la procédure que Mac, car je n’ai pas testé sous Windows et Linux. Installation est d’ailleurs un bien grand mot, puisqu’il suffit de :

Lancer ADB

Branchez votre device (déverrouillé) à votre ordinateur, puis dans le dossier où se trouvent les outils ADB, lancez la commande : « adb device« .

Cette commande lance le daemon adb. Si votre device n’a jamais été utilisé pour faire du développement Android, une fenêtre demandant d’autoriser l’usb debuging va s’ouvrir. C’est normal, dites « ok ».

Si tout s’est bien passé, vous pouvez maintenant lancer un shell sur votre device avec la commande « adb shell » (vous remarquerez que le shell est lancé en root 🙂 ):

Et pour mes sms alors ?

Comme je l’ai dit, depuis sa versions 5 (Lollipop), Android limite le nombre de sms envoyé à des destinataires différents à 30 sms maximum en 30 minutes.

Au delà, une fenêtre de confirmation d’envoi s’ouvre pour chaque nouveau sms.

Mais cela se règle avec 2 lignes de commandes ADB. Par exemple, si mon application doit pouvoir envoyer 50 sms en 15 minutes, je vais changer les clés « sms_outgoing_check_max_count » et « sms_outgoing_check-interval_ms » :

Bon, dans ce cas là, j’aurai pu me passer de changer la limite de temps, mais c’était pour vous montrer comment faire. Attention, le temps est exprimé en millisecondes.

Il faut rebooter le device pour que les paramètres soient pris en compte.

Et pour connaitre les valeurs des clés sur le divise, c’est la commande « settings list global« .

C’est évident mais je précise, il faut taper « exit » pour sortir du shell…

Bien entendu, ce n’est pas la seule chose que l’on peut faire avec ADB ! Pour vous en rendre compte, jetez un oeil ici : https://adbinstaller.com/commands/

Voilà pour cette introduction à ADB, comme quoi il n’y pas que iOS dans la (ma) vie…

Si la mise en page de mes articles vous paraît changeante ces derniers temps, c’est parce qu’il faut que je m’habitue à Gutenberg 😦 …

Et pour toute question / suggestions, comme d’habitude, commentez !

Tutoriel Swift : envoyer des sms / iMessages

des sms en swift

Suite à la demande d’un client, j’ai pas mal bossé en janvier sur les envois de sms via une application, que cela soit en utilisant les api’s natives (comme ici), ou en utilisant des sms proxys comme Twilio.

C’est donc l’occasion de faire un petit récapitulatif de ce que j’ai découvert et de faire un petit tutoriel sur l’envoi de sms en Swift sur iOS.

Mais d’abord, voici ce que j’ai « découvert » sur la gestion des sms / iMessages par iOS12

D’abord, la différence fondamentale entre un sms et un message type iMessage / mms / rcs… est que le sms ne nécessite pas de réseau « data » pour fonctionner, alors que les 3 autres types de messages nécessitent une connexion avec des données mobiles (3G, 4G…).

De plus, iOS semble « savoir » si votre correspondant.e possède un téléphone iOS, donc la possibilité de recevoir des iMessages, ou si votre le téléphone de votre correspondant.e est sur un autre OS, et donc utilise le format sms. Je précise que cela fonctionne que votre correspondant.e soit enregistré.e dans vos contacts ou non.

It’s a mirical !!!

Et bien non. Il fallait y penser, mais en fait avant d’envoyer votre message, le système vérifie si le numéro de téléphone de votre destinataire se trouve dans la bas de donnée iCloud d’Apple. Et oui. Par contre, en tant que développeur.se, n’espérez pas accéder à cette fonctionnalité… j’ai testé pour vous.

Autre comportement inattendu d’iOS 12, le rendu d’un sms est différent si le numéro de téléphone émetteur est enregistré dans vos contact ou non. Par exemple, si vous envoyez un lien, dans le premier cas, votre destinataire aura un petit carré gris affichant « Touchez pour voir le contenu », et dans le second cas, seule l’url sera visible.

Enfin, iOS, contrairement à Android, impose une confirmation manuelle avant l’envoi d’un message (en fait, on comme vous le verrez, on se contente de faire passer un numéro de téléphone et un message à l’api d’iMessage).

Voila pour la théorie, et maintenant, la pratique !

L’application d’exemple est très simple : un champ texte pour mettre le numéro de téléphone de votre destinataire, une zone de texte pour mettre votre message et un bouton « Envoyer « , et 2 ou 3 décorations 🙂

Sous iOS, pour envoyer un sms / iMessage, nous aurons besoin du framework « MessageUI« . C’est lui qui s’occupe de tout, via MFMessageComposeViewController.

Donc, tout se joue dans les 2 fonctions « sendMessage » et « messageComposeViewController » :

« sendMessage » récupère le contenu des champs « phoneNumber » et « message« . Puis, après avoir controlé que les capacités du device (il n’y à rien à rajouter dans Info.plist), envoie les données à « messageComposeViewController« . On récupère ensuite le résultat.

Comme d’habitude, le code complet de l’application présentée sur trouve sur Gitlab : https://gitlab.com/vinceBar/ios-sms-demo

Et si vous avez des questions, remarques… commentez !

La liste des APIs publiques

Il y a quelques temps, j’avais rédigé un article concernant la parfaite toolkit API pour développeur.se mobile. Cet article est bien sûr régulièrement mis à jour et vous le trouverez ici : https://vincent-barousse.blog/

Cette fois, je vous propose rien de moins que l’annuaire des APIs publiques !

A retrouver sur ce site : https://public-apis.xyz