Vincent Tourraine
Blog

Ouvrir le client mail choisi par l’utilisateur

#dev #iOS

Une application iOS peut facilement invoquer Apple Mail avec MFMailComposeViewController. Pour les autres clients mail (Gmail, Outlook, etc), j’ai créé ThirdPartyMailer. Cette bibliothèque utilise les custom URL schemes pour invoquer des applications spécifiques, avec certaines options : destinataire du mail, sujet, contenu, CC/BCC. Pratique, mais le développeur doit choisir le client à utiliser, ou offrir ce choix à l’utilisateur dans l’application.

Or, depuis iOS 14, un utilisateur peut définir un client mail par défaut autre qu’Apple Mail. J’ai récemment découvert, grâce à cet article de Chris Mash, que MFMailComposeViewController ne respecte pas ce choix. Les URLs mailto, en revanche, redirigent correctement. Cela m’est apparu être une opportunité pour ThirdPartyMailer.

Je préparais justement une version 2.0. Il m’a suffit de définir un nouveau client, systemDefault, avec le scheme mailto. Mieux, je l’ai assigné comme valeur par défaut du paramètre correspondant. Concrètement, ThirdPartyMailer peut maintenant très facilement ouvrir le client choisi par l’utilisateur :

// Ouverture simple
ThirdPartyMailer.openCompose()

// Ouverture avec paramètres
ThirdPartyMailer.openCompose(recipient: "friend@mail.com", subject: "Hello", body: "Good morning…", cc: "cc@mail.com", bcc: "bcc@mail.com")

Ça paraît tellement évident qu’on dirait une fonctionnalité native du SDK.

Si votre application invoque MFMailComposeViewController, je vous invite à utiliser ThirdPartyMailer à la place. Vos utilisateurs vous en seront reconnaissants.