SMS-Versand mit Swift (iOS/macOS): API der MessageUI-Bibliothek

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): API der MessageUI-Bibliothek



In der modernen mobilen Entwicklung bleibt die Möglichkeit, SMS direkt aus der App zu versenden, eine gefragte Funktion. Auf den Apple-Plattformen (iOS und macOS) wird diese Aufgabe durch die integrierte Bibliothek MessageUI.framework gelöst. Sie bietet eine benutzerfreundliche Oberfläche zum Erstellen und Versenden von Textnachrichten, ohne dass die Einbindung von Drittanbieterdiensten erforderlich ist. In diesem Artikel werden wir im Detail besprechen, wie man die MessageUI-API zum Versenden von SMS mit Swift verwendet, Codebeispiele, Fehlerbehandlung und Besonderheiten der Arbeit auf verschiedenen Geräten betrachten.



Was ist MessageUI.framework?

MessageUI ist ein systemeigenes Apple-Framework, das es Apps ermöglicht, sich in die integrierte App „Nachrichten“ zu integrieren. Die Hauptklasse für die Arbeit mit SMS ist MFMessageComposeViewController. Sie stellt einen fertigen UI-Controller zum Verfassen und Versenden von Nachrichten bereit. Es ist wichtig zu beachten, dass diese API nur auf echten Geräten mit aktiver SIM-Karte (für iOS) oder auf Macs mit eingerichtetem iMessage (macOS 10.15+) funktioniert. Im Simulator ist die Funktionalität nicht verfügbar.



Projektvorbereitung

Für die Verwendung von MessageUI ist Folgendes erforderlich:

  • Das Framework MessageUI zum Projekt hinzufügen (normalerweise ist es bereits in der Standardbibliothek enthalten).
  • Einen Import in die Datei einfügen, in der der Versand aufgerufen wird: import MessageUI.
  • Sicherstellen, dass das Gerät SMS senden kann – überprüfen mit MFMessageComposeViewController.canSendText().


Basisbeispiel für den SMS-Versand

Betrachten wir ein einfaches Beispiel: Erstellen des Controllers, Festlegen des Empfängers und des Textes, anschließend dessen Anzeige.



import UIKitimport MessageUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

@IBAction func sendSMSTapped(_ sender: UIButton) { // Prüfen, ob das Gerät SMS senden kann guard MFMessageComposeViewController.canSendText() else { print("Das Gerät unterstützt keinen SMS-Versand") return }

// Instanz des Controllers erstellen let messageVC = MFMessageComposeViewController() messageVC.messageComposeDelegate = self

// Empfänger festlegen messageVC.recipients = ["+79991234567"]

// Text der Nachricht festlegen messageVC.body = "Hallo! Dies ist eine Testnachricht aus meiner App."

// Controller anzeigen present(messageVC, animated: true, completion: nil) }

// MARK: - MFMessageComposeViewControllerDelegate func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { // Controller nach dem Senden/Abbrechen schließen dismiss(animated: true, completion: nil)

// Ergebnis verarbeiten switch result { case .sent: print("Nachricht erfolgreich gesendet") case .cancelled: print("Versand vom Benutzer abgebrochen") case .failed: print("Fehler beim Senden der Nachricht") @unknown default: print("Unbekanntes Ergebnis") } }}


In diesem Code haben wir:

  • Die Versandmöglichkeit mit canSendText() überprüft.
  • Einen MFMessageComposeViewController erstellt und Empfänger sowie Nachrichtentext konfiguriert.
  • Den Delegaten (messageComposeDelegate) zur Verarbeitung des Ergebnisses festgelegt.
  • In der Delegatenmethode vier mögliche Ergebnisse verarbeitet: gesendet, abgebrochen, Fehler, unbekannter Status.


Zusätzliche Funktionen

MessageUI unterstützt nicht nur einfachen Text, sondern auch Anhänge:



// Hinzufügen eines Anhangs (z. B. eines Bildes)if let imageData = UIImage(named: "photo")?.pngData() {    messageVC.addAttachmentD                    

Empfehlungen