Envoi de SMS en Swift (iOS/macOS) : API et bibliothèques
Dans le développement iOS et macOS, il est souvent nécessaire d'envoyer des SMS — pour la vérification des utilisateurs, l'envoi de notifications ou l'intégration avec un CRM. Dans cet article, nous examinerons deux approches principales : l'utilisation du framework intégré MessageUI pour envoyer des SMS via l'application système, et l'intégration avec des fournisseurs de SMS cloud (Twilio, Nexmo/Vonage) via l'API HTTP. Nous discuterons également des limitations et des meilleures pratiques.
1. Envoi de SMS via MessageUI (iOS uniquement)
Le framework MessageUI fournit le contrôleur MFMessageComposeViewController, qui permet d'envoyer un SMS depuis votre application en utilisant l'interface standard d'iOS. Important : cette méthode fonctionne uniquement sur des appareils réels (pas sur le simulateur) et nécessite une carte SIM active.
Étape 1 : Importation du framework
Ajoutez l'import dans le fichier où vous travaillerez avec les SMS :
import MessageUIÉtape 2 : Vérification de la possibilité d'envoi
Avant d'appeler le contrôleur, vérifiez impérativement si l'appareil peut envoyer des SMS :
if MFMessageComposeViewController.canSendText() { // peut envoyer} else { // afficher une erreur à l'utilisateur}Étape 3 : Création et configuration du contrôleur
let messageVC = MFMessageComposeViewController()messageVC.body = "Votre code de confirmation : 123456"messageVC.recipients = ["+79001234567"]messageVC.messageComposeDelegate = self // n'oubliez pas de définir le déléguépresent(messageVC, animated: true, completion: nil)Étape 4 : Implémentation du délégué
extension YourViewController: MFMessageComposeViewControllerDelegate { func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { controller.dismiss(animated: true) { switch result { case .sent: print("SMS envoyé") case .cancelled: print("Annulé") case .failed: print("Erreur d'envoi") @unknown default: break } } }}Limitations :
- Ne fonctionne pas sur le simulateur.
- L'utilisateur voit l'interface et peut modifier le message.
- Ne convient pas pour l'envoi automatique (par exemple, côté serveur).
- Indisponible sur macOS (iOS uniquement).
2. Envoi de SMS via des API tierces (Twilio, Nexmo, etc.)
Pour l'envoi de SMS côté serveur (sans intervention de l'utilisateur), utilisez l'API HTTP des fournisseurs cloud. Prenons l'exemple de Twilio — l'un des services les plus populaires.
Étape 1 : Obtention des identifiants
Inscrivez-vous sur Twilio, obtenez votre Account SID, Auth Token et le numéro de téléphone de l'expéditeur (par exemple, +15005550006 pour les tests).
Étape 2 : Envoi d'une requête POST
Utilisez URLSession pour appeler l'API Twilio :
func sendSMSviaTwilio(to recipient: String, message: String) { let accountSID = "YOUR_ACCOUNT_SID" let authToken = "YOUR_AUTH_TOKEN" let fromNumber = "+15005550006" 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)" let loginData = loginString.data(using: .utf8)! let base64LoginString = loginData.base64EncodedString() request.setValue("Basic \\(base64LoginString)", forHTTPHeaderField: "Authorization") let bodyParams = [ "From": fromNumber, "To": recipient, "Body": message ] le Aussi dans la bibliothèque
Apprentissage automatique en Kotlin : aperçu des bibliothèques KMath, Smile, KotlinDL et DeepLearning4J
Client OAuth pour Kotlin : bibliothèque Ktor OAuth pour l'authentification dans les API
Travailler avec les dates en Rust : aperçu des bibliothèques pour le temps et le calendrier
Range-v3 C++ : guide complet avec exemples pratiques