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)" Aussi dans la bibliothèque
Symfony/Mailer PHP : guide complet avec exemples
Travailler avec les archives ZIP en PHP : guide complet sur ZipArchive
prometheus/client_golang Go : guide complet avec exemples
Métriques Prometheus en Swift : surveillance des applications iOS/macOS