Envoi de SMS en Swift (iOS/macOS) : API de la bibliothèque MessageUI

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) : API de la bibliothèque MessageUI



Dans le développement mobile moderne, la possibilité d'envoyer des SMS directement depuis une application reste une fonctionnalité très demandée. Sur les plateformes Apple (iOS et macOS), cette tâche est résolue par la bibliothèque intégrée MessageUI.framework. Elle fournit une interface pratique pour créer et envoyer des messages texte, sans nécessiter de services tiers. Dans cet article, nous allons détailler comment utiliser l'API MessageUI pour envoyer des SMS en Swift, examiner des exemples de code, la gestion des erreurs et les particularités de fonctionnement sur différents appareils.



Qu'est-ce que MessageUI.framework ?

MessageUI est un framework système Apple qui permet aux applications de s'intégrer à l'application intégrée « Messages ». La classe principale pour travailler avec les SMS est MFMessageComposeViewController. Elle fournit un contrôleur d'interface prêt à l'emploi pour composer et envoyer des messages. Il est important de noter que cette API fonctionne uniquement sur des appareils réels avec une carte SIM active (pour iOS) ou sur un Mac avec iMessage configuré (macOS 10.15+). La fonctionnalité n'est pas disponible sur le simulateur.



Préparation du projet

Pour utiliser MessageUI, il est nécessaire de :

  • Ajouter le framework MessageUI au projet (il est généralement déjà présent dans la bibliothèque standard).
  • Ajouter l'import dans le fichier où l'envoi sera appelé : import MessageUI.
  • Vérifier que l'appareil peut envoyer des SMS — via MFMessageComposeViewController.canSendText().


Exemple de base d'envoi de SMS

Examinons un exemple simple : création du contrôleur, définition du destinataire et du texte, puis affichage.



import UIKitimport MessageUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

@IBAction func sendSMSTapped(_ sender: UIButton) { // Vérifie si l'appareil peut envoyer des SMS guard MFMessageComposeViewController.canSendText() else { print("L'appareil ne prend pas en charge l'envoi de SMS") return }

// Crée une instance du contrôleur let messageVC = MFMessageComposeViewController() messageVC.messageComposeDelegate = self

// Définit le destinataire messageVC.recipients = ["+79991234567"]

// Définit le texte du message messageVC.body = "Bonjour ! Ceci est un message test depuis mon application."

// Affiche le contrôleur present(messageVC, animated: true, completion: nil) }

// MARK: - MFMessageComposeViewControllerDelegate func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { // Ferme le contrôleur après l'envoi/l'annulation dismiss(animated: true, completion: nil)

// Traite le résultat switch result { case .sent: print("Message envoyé avec succès") case .cancelled: print("Envoi annulé par l'utilisateur") case .failed: print("Erreur lors de l'envoi du message") @unknown default: print("Résultat inconnu") } }}


Dans ce code, nous :

  • Vérifions la possibilité d'envoyer avec canSendText().
  • Créons un MFMessageComposeViewController et configurons les destinataires et le corps du message.
  • Définissons le délégué (messageComposeDelegate) pour traiter le résultat.
  • Dans la méthode du délégué, nous traitons quatre résultats possibles : envoyé, annulé, erreur, statut inconnu.


Fonctionnalités supplémentaires

MessageUI prend en charge non seulement le texte simple, mais aussi les pièces jointes :



// Ajout d'une pièce jointe (par exemple, une image)if let imageData = UIImage(named: "photo")?.pngData() {    messageVC.addAttachmentD                    

Recommendations