Action Extension: Was es ist, wie es funktioniert und Entwicklung der Erweiterung

Autor: IT Sectr Veröffentlicht: 2026-06-15 Lesezeit: 10 Min.

Action Extension ist eine iOS-Erweiterung, die benutzerdefinierte Aktionen für Inhalte aus anderen Apps ausführt, ohne den Kontext zu wechseln. Im Gegensatz zur Share Extension, die Daten an eine andere App sendet, transformiert Action Extension den Inhalt direkt vor Ort: Text übersetzen, Bildfilter ändern, Rechtschreibung prüfen oder PDF erstellen. Laut Apple (2024) ist Action Extension nach Share Extension der zweitbeliebteste Erweiterungstyp, der in 42% der Apps der Kategorie „Produktivität“ verwendet wird. Die sofortige Aktion ohne Start der Haupt-App ist der entscheidende Vorteil für den Benutzer.

Wichtige Punkte

  • Action Extension — iOS-Erweiterung zur Transformation von Inhalten in der Host-App.
  • NSExtensionContext — Ausführungskontext mit Eingabe- und Ausgabedaten.
  • UTI — Uniform Type Identifiers zur Bestimmung des verarbeiteten Inhaltstyps.
  • UIActivity — Legacy-Mechanismus zur Implementierung von Aktionen in iOS 6–7.
  • App Groups — Übertragung verarbeiteter Daten zurück zur App.

Was ist Action Extension

Action Extension ist eine Art iOS-App-Erweiterung, die es ermöglicht, Aktionen für Inhalte direkt im Kontext der Host-App auszuführen. Der Benutzer wählt Text in Safari aus, tippt auf „Aktionen“ und wählt zum Beispiel „Rechtschreibung prüfen“ — die Erweiterung verarbeitet den Text und gibt das Ergebnis zurück, ohne den Browser zu verlassen. Die Erweiterung empfängt Eingabedaten über NSExtensionContext und kann modifizierte Inhalte zurückgeben.

Action Extension erschien in iOS 8 als Teil der App-Erweiterungsarchitektur. Das Hauptmerkmal ist, dass die Erweiterung keine eigene Oberfläche hat (optional) und im Kontext der Host-App ausgeführt wird. Der Benutzer verlässt den aktuellen Bildschirm nicht, was für minimale kognitive Reibung sorgt. Laut Apple ist Action Extension der einzige Erweiterungstyp, der gleichzeitig Host-App-Inhalte lesen und ändern kann (via NSExtensionContext mit Ergebnisrückgabe).

Wo Action Extension verwendet wird

Action Extension wird in verschiedenen Szenarien eingesetzt: Text im Browser übersetzen, PDF aus einer Webseite erstellen, Filter auf ein Foto in der Galerie anwenden, Rechtschreibung in jedem Textfeld prüfen, URL kürzen, Text verschlüsseln und Lesezeichen hinzufügen. Die Vielseitigkeit macht Action Extension zu einem beliebten Werkzeug für Apps der Kategorien „Dienstprogramme“ und „Produktivität“.

Action Extension vs Share Extension

Action Extension und Share Extension werden oft verwechselt, aber ihre Zwecke sind grundlegend verschieden. Share Extension sendet Inhalte von der Host-App an Ihre App; Action Extension verarbeitet Inhalte und gibt sie zurück. Der Unterschied wirkt sich auf die Architektur, das Benutzererlebnis und die Info.plist-Konfigurationsanforderungen aus.

EigenschaftAction ExtensionShare Extension
ZweckInhaltstransformationInhaltsübertragung zur App
OberflächeOptional (benutzerdefiniert)SLComposeServiceViewController
DatenrückgabeJa, über completeRequestNein
KontextBleibt in der Host-AppWechselt zur Erweiterung
MenüpositionAction Sheet (oberer Teil)Share Sheet (unterer Teil)
Typische AktionÜbersetzung, Korrektur, FilterSpeichern, Veröffentlichen

Wie der Benutzer eine Aktion auswählt

Action Extension erscheint im Aktionsmenü (Action Sheet) beim Tippen auf die Schaltfläche „Teilen“ oder „...“. iOS platziert Action Extensions automatisch im oberen Teil des Blatts (Aktionen) und Share Extensions im unteren Teil (Apps). Benutzerszenario: Text ausgewählt → „Aktionen“ getippt → Ihre Action Extension ausgewählt → verarbeitetes Ergebnis erhalten ohne App-Wechsel.

Architektur von Action Extension

Action Extension besteht aus einem Target in Xcode, einem UIViewController zur Anzeige der Oberfläche (optional), NSExtensionContext für Daten-Ein-/Ausgabe und Info.plist-Konfiguration. Die Architektur ist einfacher als bei Share Extension: Es gibt keine obligatorische Compose-Oberfläche, und die Erweiterung kann vollständig ohne UI arbeiten.

Komponenten von Action Extension

Target — ein separates Bundle mit einer von der Haupt-App geerbten Kennung. UIViewController — optionale Oberfläche zur Anzeige von Fortschritt, Einstellungen oder Ergebnissen. NSExtensionContext — ein Container mit Eingabedaten (inputItems) und der Methode completeRequest zur Ergebnisrückgabe. Info.plist — Aktivierungskonfiguration über NSExtensionActivationRule und Attribute (NSExtensionAttributes) zur Angabe unterstützter Inhaltstypen.

NSExtensionContext und Datenflüsse

Action Extension empfängt Eingabedaten über extensionContext?.inputItems — ein Array von NSExtensionItem. Jedes Element enthält Anhänge mit Daten und UTI. Nach der Verarbeitung ruft die Erweiterung completeRequest(returningItems:) mit einem Array von Ausgabe-NSExtensionItems auf. Die Host-App empfängt die verarbeiteten Daten und zeigt sie an. Asynchrones Modell: Die Erweiterung kann langlaufende Operationen durchführen, wobei der Kontext bis zu 30 Sekunden gehalten wird.

Action Extension erstellen

Betrachten wir die Erstellung einer Action Extension in Swift zur Übersetzung von ausgewähltem Text. Die Erweiterung empfängt Text von der Host-App, sendet ihn an einen Übersetzungsserver und gibt das Ergebnis zurück. ActionViewController ist der Basis-Controller, der von Xcode beim Hinzufügen eines Targets erstellt wird.

swift
import UIKit
import MobileCoreServices

class ActionViewController: UIViewController {

    @IBOutlet var resultLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        extractTextAndTranslate()
    }

    func extractTextAndTranslate() {
        guard let item = extensionContext?.inputItems.first
                as? NSExtensionItem
        else { return }

        for attachment in item.attachments ?? [] {
            attachment.loadItem(
                forTypeIdentifier: kUTTypePlainText as String
            ) { [weak self] (text, error) in
                guard let inputText = text as? String else { return }
                TranslationService().translate(inputText, from: "en", to: "ru") {
                    translated in
                    DispatchQueue.main.async {
                        self?.resultLabel?.text = translated
                    }
                }
            }
        }
    }
}

Nach der Verarbeitung gibt die Erweiterung das Ergebnis an die Host-App zurück. completeRequest mit Ausgabedaten ist ein alternatives Szenario, bei dem die Erweiterung keine UI anzeigt, sondern sofort den verarbeiteten Inhalt zurückgibt.

swift
// Returning processed text to host app
let resultItem = NSExtensionItem()
let resultData = translated.data(using: .utf8)!
let attachment = NSItemProvider(
    item: resultData,
    typeIdentifier: kUTTypePlainText as String
)
resultItem.attachments = [attachment]
extensionContext?.completeRequest(
    returningItems: [resultItem], completionHandler: nil
)

Datenverarbeitung und Ergebnisrückgabe

Action Extension kann in zwei Modi arbeiten: mit UI und ohne UI. Im Modus ohne UI führt die Erweiterung die Aktion vollständig im Hintergrund aus und ruft completeRequest sofort nach der Verarbeitung auf. Im UI-Modus zeigt die Erweiterung einen Controller an, der Benutzer bestätigt die Aktion, und erst dann sendet completeRequest das Ergebnis. Die Modusauswahl hängt von der Komplexität der Aktion und der Notwendigkeit von Benutzereingaben ab.

Daten aus Anhang laden

Die Methode loadItem(forTypeIdentifier:) arbeitet asynchron — Daten können groß sein (Bilder, Videos). NSItemProvider verwaltet Streaming und Caching. Für Bilder verwenden Sie kUTTypeImage, für Dateien kUTTypeFileURL. Wichtig: loadItem kann in einem Hintergrundthread aufgerufen werden — aktualisieren Sie die UI nur über DispatchQueue.main.

Modifizierte Daten zurückgeben

Action Extension gibt verarbeitete Daten über completeRequest mit einem Array von NSExtensionItem zurück. Jedes Element entspricht dem Ausgabedatentyp. Die Host-App kann den ursprünglichen Inhalt durch den verarbeiteten ersetzen — zum Beispiel das Originalbild durch ein gefiltertes ersetzen. NSExtensionItem unterstützt dieselben UTIs wie die Eingabe sowie zusätzliche (z.B. public.html für Webinhalte).

Anwendungsfälle für Action Extension

Action Extension wird in Dutzenden von Szenarien eingesetzt — von einfachen Dienstprogrammen bis hin zu komplexen Geschäftsabläufen. Klassische Beispiele umfassen Text-, Grafik- und Dateioperationen sowie die Integration von Webinhalten.

Textszenarien

Action Extension für Text: Übersetzung, Rechtschreibprüfung, Zeichenzählung, Groß-/Kleinschreibung ändern, Verschlüsselung, QR-Code aus Text erstellen. Der Benutzer wählt Text in einer beliebigen App mit Textfeld (Safari, Notizen, Mail) und führt die Aktion mit einem Tippen aus. Syntaxhervorhebung von Code, Markdown-Formatierung und URL-Kürzung sind beliebte Action Extension-Beispiele für fortgeschrittene Benutzer.

Grafikszenarien

Für Bilder bietet Action Extension: Filter anwenden, Zuschneiden, Größe ändern, Formate konvertieren (HEIC in JPEG), Wasserzeichen hinzufügen, Texterkennung (OCR) und Komprimierung. Die Bildverarbeitung sollte schnell sein — der Benutzer erwartet ein Ergebnis innerhalb von 2–3 Sekunden. Für schwere Operationen verwenden Sie Core Image auf der GPU oder Hintergrundwarteschlangen.

Webszenarien

Action Extension für URLs: PDF aus einer Webseite erstellen, in Pocket/Pinterest speichern, Website-Geschwindigkeit prüfen, Seite archivieren, Open Graph-Metadaten abrufen, Bildschirmfoto der Seite erstellen. Die PDF-Generierung ist eines der gefragtesten Szenarien: Der Benutzer konvertiert eine Webseite in PDF, ohne Drittanbieterdienste zu öffnen.

Häufig gestellte Fragen

Was ist der Hauptunterschied zwischen Action Extension und Share Extension?

Share Extension sendet Inhalte von der Host-App an Ihre App. Action Extension verarbeitet Inhalte vor Ort und gibt das Ergebnis zurück. Share — Übertragung, Action — Transformation. Dieser grundlegende Unterschied bestimmt die Architektur und die UX.

Kann eine Action Extension keine Oberfläche haben?

Ja. Wenn die Aktion keine Benutzereingabe erfordert (z.B. Zeichenzählung), kann die Erweiterung sie im Hintergrund ausführen und das Ergebnis sofort über completeRequest zurückgeben. In Info.plist müssen Sie NSExtensionActivationSupportsWebURL oder eine andere UTI angeben, die dem Datentyp entspricht.

In welchen Apps erscheint Action Extension?

In allen Apps, die UIActivityViewController oder Standard-Aktionscontroller unterstützen. Dazu gehören Safari, Fotos, Dateien, Notizen, Mail und Tausende von Drittanbieter-Apps. Action Extension funktioniert nicht in Apps, die keine standardmäßigen iOS-Aktionsmechanismen verwenden.

Wie gibt man verarbeitete Inhalte an die Host-App zurück?

Über extensionContext.completeRequest(returningItems:) mit einem Array von NSExtensionItem. Jedes Ausgabeelement enthält einen NSItemProvider mit den verarbeiteten Daten. Die Host-App empfängt das Ergebnis im Delegaten von UIActivityViewController oder einem ähnlichen Callback.

Welche Einschränkungen hat Action Extension?

Die Erweiterung läuft maximal 30 Sekunden, danach beendet iOS sie zwangsweise. Es gibt keinen direkten Zugriff auf die Haupt-App — nur über App Groups. Action Extension kann nach Abschluss keine Hintergrundaufgaben ausführen. Für langlaufende Operationen verwenden Sie eine Hintergrund-NSURLSession mit einer Benachrichtigung beim nächsten Start.

Zusammenfassung

  • Action Extension — iOS-Erweiterung zur Transformation von Inhalten direkt in der Host-App.
  • Unterscheidet sich von Share Extension durch die Rückgabe verarbeiteter Daten über NSExtensionContext.
  • Kann mit UI oder vollständig im Hintergrund ohne Oberfläche arbeiten.
  • Unterstützt alle Inhaltstypen: Text, Bilder, URLs, Dateien über UTI.
  • Wird für Übersetzung, Filter, PDF-Generierung, OCR und Rechtschreibprüfung verwendet.
  • Ausführungszeitlimit — 30 Sekunden, App-Zugriff — über App Groups.
  • Action Extension wird in 42% der Apps der Kategorie „Produktivität“ verwendet.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch