SMS-Versand mit Swift (iOS/macOS): API und Bibliotheken
Bei der Entwicklung für iOS und macOS besteht häufig die Notwendigkeit, SMS-Nachrichten zu versenden – zur Benutzerverifizierung, zum Senden von Benachrichtigungen oder zur Integration in CRM-Systeme. In diesem Artikel betrachten wir zwei grundlegende Ansätze: die Verwendung des integrierten Frameworks MessageUI zum Versenden von SMS über die System-App und die Integration mit Cloud-SMS-Anbietern (Twilio, Nexmo/Vonage) über die HTTP-API. Wir besprechen auch Einschränkungen und bewährte Verfahren.
1. SMS-Versand über MessageUI (nur iOS)
Das Framework MessageUI stellt den Controller MFMessageComposeViewController bereit, mit dem Sie SMS aus Ihrer App über die Standard-iOS-Oberfläche senden können. Wichtig: Diese Methode funktioniert nur auf echten Geräten (nicht im Simulator) und erfordert eine aktive SIM-Karte.
Schritt 1: Framework einbinden
Fügen Sie den Import in die Datei ein, in der Sie mit SMS arbeiten:
import MessageUISchritt 2: Überprüfung der Sendemöglichkeit
Prüfen Sie vor dem Aufruf des Controllers unbedingt, ob das Gerät SMS senden kann:
if MFMessageComposeViewController.canSendText() { // Senden möglich} else { // Fehler dem Benutzer anzeigen}Schritt 3: Controller erstellen und konfigurieren
let messageVC = MFMessageComposeViewController()messageVC.body = "Ihr Bestätigungscode: 123456"messageVC.recipients = ["+79001234567"]messageVC.messageComposeDelegate = self // Delegaten nicht vergessenpresent(messageVC, animated: true, completion: nil)Schritt 4: Delegaten implementieren
extension YourViewController: MFMessageComposeViewControllerDelegate { func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { controller.dismiss(animated: true) { switch result { case .sent: print("SMS gesendet") case .cancelled: print("Abgebrochen") case .failed: print("Sendefehler") @unknown default: break } } }}Einschränkungen:
- Funktioniert nicht im Simulator.
- Der Benutzer sieht die Oberfläche und kann die Nachricht ändern.
- Nicht geeignet für automatischen Versand (z. B. serverseitig).
- Nicht auf macOS verfügbar (nur iOS).
2. SMS-Versand über Drittanbieter-APIs (Twilio, Nexmo u. a.)
Für den serverseitigen SMS-Versand (ohne Benutzereingriff) verwenden Sie die HTTP-API von Cloud-Anbietern. Betrachten wir ein Beispiel mit Twilio – einem der beliebtesten Dienste.
Schritt 1: Anmeldedaten abrufen
Registrieren Sie sich bei Twilio, erhalten Sie Account SID, Auth Token und die Telefonnummer des Absenders (z. B. +15005550006 für Tests).
Schritt 2: POST-Anfrage senden
Verwenden Sie URLSession zum Aufruf der Twilio-API:
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 Auch in der Bibliothek
MapKit für Swift: Komplettleitfaden mit Beispielen
QR-Code-Generator in Go (Golang): Bibliothek go-qrcode
Catch2 Matchers für C++: Vollständiges Tutorial mit Beispielen
Arbeiten mit ZIP-Archiven in PHP: ZipArchive und Bibliotheken zur Komprimierung
Entity Framework Core für C# (.NET): Vollständiger Leitfaden mit Beispielen