SMS-Versand mit Swift (iOS/macOS): Die MessageUI-Bibliothek und Alternativen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

SMS-Versand mit Swift (iOS/macOS): Überblick über Bibliotheken und APIs



In der modernen mobilen Entwicklung bleibt die Möglichkeit, SMS-Nachrichten zu versenden, eine gefragte Funktion – von der Telefonnummernbestätigung bis hin zu Massenbenachrichtigungen. Im Apple-Ökosystem (iOS/macOS) gibt es mit Swift mehrere Ansätze – vom integrierten MessageUI bis zur Integration mit Cloud-SMS-Anbietern. In diesem Artikel analysieren wir die wichtigsten Bibliotheken und APIs, ihre Vor- und Nachteile und geben praktische Codebeispiele.



1. Die integrierte Bibliothek MessageUI



Der einfachste Weg ist die Nutzung des Frameworks MessageUI, das unter iOS und macOS verfügbar ist. Es ermöglicht das Aufrufen der Standard-SMS-Oberfläche (über MFMessageComposeViewController) ohne Einbindung von Drittanbieter-SDKs.



Funktionen:

  • SMS-Versand über die systemeigene App „Nachrichten“.
  • Unterstützung von Anhängen (Bilder, Videos, Kontakte).
  • Keine Registrierung bei einem Anbieter erforderlich.


Einschränkungen:

  • Funktioniert nur auf physischen Geräten (nicht im Simulator).
  • Der Benutzer sieht die Oberfläche und bestätigt den Versand.
  • Nicht geeignet für automatischen (serverbasierten) Versand.


Codebeispiel in Swift (iOS):

import MessageUIimport UIKit

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

@IBAction func sendSMSTapped(_ sender: UIButton) { guard MFMessageComposeViewController.canSendText() else { print("Das Gerät unterstützt keinen SMS-Versand") return } let messageVC = MFMessageComposeViewController() messageVC.body = "Hallo! Dies ist eine Test-SMS aus Swift." messageVC.recipients = ["+49123456789"] messageVC.messageComposeDelegate = self present(messageVC, animated: true, completion: nil) }

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { switch result { case .sent: print("SMS gesendet") case .cancelled: print("Vom Benutzer abgebrochen") case .failed: print("Fehler beim Senden") @unknown default: break } controller.dismiss(animated: true, completion: nil) }}


Für macOS wird NSSharingService mit dem Typ .composeMessage verwendet, dessen Funktionalität jedoch eingeschränkt ist.



2. Twilio – Cloud-API für SMS



Twilio ist einer der beliebtesten Dienste für den programmatischen SMS-Versand. Die Integration in eine Swift-App erfolgt über die REST-API oder den offiziellen Swift-Client twilio-swift.



Vorteile:

  • Hohe Zustellgeschwindigkeit, Unterstützung für über 100 Länder.
  • Möglichkeit des Versands ohne Benutzereingriff (Serverlogik).
  • Flexible Einstellungen: Absender, Vorlagen, Webhooks.


Beispiel für den Versand über URLSession:

import Foundation

func sendSMSviaTwilio(to phoneNumber: String, message: String) { let accountSID = "YOUR_ACCOUNT_SID" let authToken = "YOUR_AUTH_TOKEN" let fromNumber = "+1234567890" // Ihre Twilio-Nummer 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)"

Empfehlungen