Envoi de SMS en Swift (iOS/macOS) : bibliothèque MessageUI et alternatives

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Envoi de SMS en Swift (iOS/macOS) : aperçu des bibliothèques et API



Dans le développement mobile moderne, la possibilité d'envoyer des messages SMS reste une fonctionnalité très demandée : de la confirmation du numéro de téléphone aux notifications de masse. Dans l'écosystème Apple (iOS/macOS) avec le langage Swift, il existe plusieurs approches — de la bibliothèque intégrée MessageUI à l'intégration avec des fournisseurs de SMS cloud. Dans cet article, nous analyserons les principales bibliothèques et API, leurs avantages et limitations, et fournirons des exemples pratiques de code.



1. Bibliothèque intégrée MessageUI



La méthode la plus simple consiste à utiliser le framework MessageUI, disponible sur iOS et macOS. Il permet d'afficher l'interface standard d'envoi de SMS (via MFMessageComposeViewController) sans intégrer de SDK tiers.



Fonctionnalités :

  • Envoi de SMS via l'application système « Messages ».
  • Prise en charge des pièces jointes (images, vidéos, contacts).
  • Ne nécessite pas d'inscription auprès d'un fournisseur.


Limitations :

  • Fonctionne uniquement sur des appareils physiques (pas dans le simulateur).
  • L'utilisateur voit l'interface et confirme l'envoi.
  • Ne convient pas à l'envoi automatique (côté serveur).


Exemple de code en Swift (iOS) :

import MessageUIimport UIKit

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

@IBAction func sendSMSTapped(_ sender: UIButton) { guard MFMessageComposeViewController.canSendText() else { print("L'appareil ne prend pas en charge l'envoi de SMS") return } let messageVC = MFMessageComposeViewController() messageVC.body = "Bonjour ! Ceci est un SMS de test depuis Swift." messageVC.recipients = ["+79123456789"] messageVC.messageComposeDelegate = self present(messageVC, animated: true, completion: nil) }

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { switch result { case .sent: print("SMS envoyé") case .cancelled: print("Annulé par l'utilisateur") case .failed: print("Erreur d'envoi") @unknown default: break } controller.dismiss(animated: true, completion: nil) }}


Pour macOS, on utilise NSSharingService avec le type .composeMessage, mais ses fonctionnalités sont limitées.



2. Twilio — API cloud pour SMS



Twilio est l'un des services les plus populaires pour l'envoi programmatique de SMS. L'intégration dans une application Swift se fait via l'API REST ou le client Swift officiel twilio-swift.



Avantages :

  • Haute vitesse de livraison, prise en charge de plus de 100 pays.
  • Possibilité d'envoi sans intervention de l'utilisateur (logique serveur).
  • Paramètres flexibles : expéditeur, modèles, webhooks.


Exemple d'envoi via URLSession :

import Foundation

func sendSMSviaTwilio(to phoneNumber: String, message: String) { let accountSID = "YOUR_ACCOUNT_SID" let authToken = "YOUR_AUTH_TOKEN" let fromNumber = "+1234567890" // votre numéro Twilio let urlString = "https://api.twilio.com/2010-04-01/Accounts/\\(accountSID)/Messages.json" guard let url = URL(string: urlString) else { return } var request = URLRequest(url: url) request.httpMethod = "POST" let loginString = "\\(accountSID):\\(authToken)" guard let loginData = loginString.data(using: .utf8) else { return } let base64Login = loginData.base64EncodedString() request.setValue("Basic \\(base64Login)", forHTTPHeaderField: "Authorization") let bodyParams = "To=\\(phoneNumber)&From=\\(fromNumber)&Body=\\(message)"

Recommendations