Action Extension: mi ez, hogyan működik és bővítmény fejlesztése

Szerző: IT Sectr Megjelenés: 2026-06-15 Olvasási idő: 10 perc

Az Action Extension egy iOS-bővítmény, amely egyéni műveleteket hajt végre más alkalmazásokból származó tartalommal anélkül, hogy kontextust váltana. Ellentétben a Share Extension-nel, amely adatokat küld egy másik alkalmazásba, az Action Extension a tartalmat helyben alakítja át: szöveget fordít, képészeti szűrőket módosít, helyesírást ellenőriz vagy PDF-et generál. A Apple (2024) adatai szerint az Action Extension a második legnépszerűbb bővítménytípus a Share Extension után, amelyet az alkalmazások 42%-ában használnak a „Termelékenység” kategóriában. Azonnali művelet a fő alkalmazás elindítása nélkül — kulcsfontosságú előny a felhasználó számára.

Főbb pontok

  • Action Extension — iOS-bővítmény a tartalom átalakításához a gazdaalkalmazásban.
  • NSExtensionContext — végrehajtási kontextus bemeneti és kimeneti adatokkal.
  • UTI — Uniform Type Identifiers a feldolgozott tartalom típusának meghatározásához.
  • UIActivity — régi mechanizmus a műveletek megvalósításához iOS 6–7 rendszerben.
  • App Groups — a feldolgozott adatok visszaküldése az alkalmazásba.

Mi az Action Extension

Action Extension — az iOS alkalmazásbővítmény egy típusa, amely lehetővé teszi egy művelet végrehajtását a tartalmon közvetlenül a gazdaalkalmazás kontextusában. A felhasználó kijelöl egy szöveget a Safari-ban, megnyomja a „Műveletek” gombot, és kiválasztja például a „Helyesírás-ellenőrzés” lehetőséget — a bővítmény feldolgozza a szöveget, és visszaadja az eredményt anélkül, hogy elhagyná a böngészőt. A bővítmény a bemeneti adatokat NSExtensionContext segítségével kapja, és visszaküldheti a módosított tartalmat.

Az Action Extension az iOS 8-ban jelent meg az alkalmazásbővítmények architektúrájának részeként. Kulcsjellemzője, hogy a bővítménynek nincs saját felülete (opcionális), és a gazdaalkalmazás kontextusában fut. A felhasználó nem hagyja el az aktuális képernyőt, ami minimális kognitív megszakítást biztosít. Az Apple szerint az Action Extension az egyetlen bővítménytípus, amely egyszerre tudja olvasni és módosítani a gazdaalkalmazás tartalmát (NSExtensionContext segítségével az eredmény visszaküldésével).

Hol alkalmazzák az Action Extension-t

Az Action Extension-t különböző forgatókönyvekben használják: szöveg fordítása a böngészőben, PDF készítése weboldalról, szűrő alkalmazása egy fényképre a galériában, helyesírás ellenőrzése bármely szövegmezőben, URL rövidítése, szöveg titkosítása és könyvjelzőkhöz adás. Az Action Extension sokoldalúsága népszerű eszközzé teszi a „Segédprogramok” és „Termelékenység” kategóriájú alkalmazások számára.

Action Extension kontra Share Extension

Az Action Extension és a Share Extension gyakran összetéveszthető, de a céljuk alapvetően különbözik. A Share Extension tartalmat küld a gazdaalkalmazásból az Ön alkalmazásába; az Action Extension feldolgozza a tartalmat és visszaküldi azt. A különbség hatással van az architektúrára, a felhasználói élményre és az Info.plist konfigurációs követelményekre.

JellemzőAction ExtensionShare Extension
CélTartalom átalakításaTartalom küldése az alkalmazásba
FelületOpcionális (egyéni)SLComposeServiceViewController
Adatok visszaküldéseIgen, a completeRequest segítségévelNem
KontextusA gazdaalkalmazásban maradÁtvált a bővítményre
Pozíció a menübenAction Sheet (felső rész)Share Sheet (alsó rész)
Tipikus műveletFordítás, javítás, szűrőMentés, közzététel

Hogyan választja ki a felhasználó a műveletet

Az Action Extension a műveletek menüjében (Action Sheet) jelenik meg a „Megosztás” vagy „...” gomb megnyomásakor. Az iOS automatikusan az Action Extension-öket a lap felső részébe (műveletek), a Share Extension-öket pedig az alsó részbe (alkalmazások) helyezi. Felhasználói forgatókönyv: kijelölte a szöveget → megnyomta a „Műveletek” gombot → kiválasztotta az Ön Action Extension-jét → megkapta a feldolgozott eredményt anélkül, hogy alkalmazást váltott volna.

Az Action Extension architektúrája

Az Action Extension egy Xcode-beli target-ből, a felület megjelenítéséhez használt UIViewController-ből (opcionális), az adatok be- és kimenetéhez használt NSExtensionContext-ből és az Info.plist konfigurációból áll. Az architektúra egyszerűbb, mint a Share Extension esetében: nincs kötelező compose felület, és a bővítmény teljesen UI nélkül is működhet.

Az Action Extension összetevői

Target — különálló bundle a fő alkalmazásból örökölt azonosítóval. UIViewController — opcionális felület a folyamat, beállítások vagy eredmény megjelenítéséhez. NSExtensionContext — tároló bemeneti adatokkal (inputItems) és a completeRequest metódussal az eredmény visszaküldéséhez. Info.plist — aktiválási konfiguráció az NSExtensionActivationRule segítségével és attribútumok (NSExtensionAttributes) a támogatott tartalomtípusok megadásához.

NSExtensionContext és adatfolyamok

Az Action Extension a bemeneti adatokat a extensionContext?.inputItems segítségével kapja — NSExtensionItem-ek tömbje. Minden elem adatokat és UTI-t tartalmazó mellékleteket tartalmaz. Feldolgozás után a bővítmény meghívja a completeRequest(returningItems:) metódust a kimeneti NSExtensionItem-ek tömbjével. A gazdaalkalmazás megkapja a feldolgozott adatokat és megjeleníti azokat. Aszinkron modell: a bővítmény hosszú műveleteket végezhet, a kontextust akár 30 másodpercig is fenntartva.

Action Extension létrehozása

Vizsgáljuk meg egy Action Extension létrehozását Swift-ben a kijelölt szöveg fordításához. A bővítmény megkapja a szöveget a gazdaalkalmazásból, elküldi egy fordítási szerverre, és visszaadja az eredményt. ActionViewController — az alapvezérlő, amelyet az Xcode hoz létre a target hozzáadásakor.

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
                    }
                }
            }
        }
    }
}

A feldolgozás után a bővítmény visszaküldi az eredményt a gazdaalkalmazásba. completeRequest kimeneti adatokkal — alternatív forgatókönyv, amikor a bővítmény nem jelenít meg UI-t, hanem azonnal visszaküldi a feldolgozott tartalmat.

swift
// Feldolgozott szöveg visszaküldése a gazdaalkalmazásba
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
)

Adatfeldolgozás és eredmény visszaküldése

Az Action Extension két módban működhet: UI-val és UI nélkül. UI nélküli módban a bővítmény a műveletet teljesen a háttérben hajtja végre, és a feldolgozás után azonnal meghívja a completeRequest-et. UI-val rendelkező módban a bővítmény megjelenít egy vezérlőt, a felhasználó megerősíti a műveletet, és csak ezután küldi el a completeRequest az eredményt. A mód kiválasztása a művelet összetettségétől és a felhasználói bevitel szükségességétől függ.

Adatok betöltése a mellékletből

A loadItem(forTypeIdentifier:) metódus aszinkron módon működik — az adatok nagyok lehetnek (képek, videók). Az NSItemProvider kezeli a streamelő betöltést és a gyorsítótárazást. Képekhez használja a kUTTypeImage, fájlokhoz a kUTTypeFileURL értéket. Fontos: a loadItem meghívható háttérszálon — a UI-t csak a DispatchQueue.main segítségével frissítse.

Módosított adatok visszaküldése

Az Action Extension a feldolgozott adatokat a completeRequest segítségével küldi vissza egy NSExtensionItem tömbön keresztül. Minden elem megfelel a kimeneti adattípusnak. A gazdaalkalmazás lecserélheti az eredeti tartalmat a feldolgozottra — például lecserélheti az eredeti képet egy szűrttel. NSExtensionItem ugyanazokat a UTI-ket támogatja, mint a bemenetnél, plusz továbbiakat (például public.html a webes tartalomhoz).

Action Extension használati forgatókönyvek

Az Action Extension-t több tucat forgatókönyvben alkalmazzák — az egyszerű segédprogramoktól a bonyolult üzleti folyamatokig. Klasszikus példák szöveges, grafikus és fájlműveleteket, valamint webes tartalommal való integrációt foglalnak magukban.

Szöveges forgatókönyvek

Action Extension szöveghez: fordítás, helyesírás-ellenőrzés, karakterszámlálás, kis- és nagybetűs átalakítás, titkosítás, QR-kód létrehozása szövegből. A felhasználó kijelöli a szöveget bármely szövegmezővel rendelkező alkalmazásban (Safari, Jegyzetek, Mail), és egyetlen kattintással végrehajtja a műveletet. Kód szintaxiskiemelése, Markdown formázás és URL rövidítés — népszerű Action Extension példák haladó felhasználók számára.

Grafikus forgatókönyvek

Képekhez az Action Extension a következőket kínálja: szűrők alkalmazása, vágás, méretváltoztatás, formátumkonverzió (HEIC JPEG-re), vízjel hozzáadása, szövegfelismerés (OCR) és tömörítés. A képfeldolgozásnak gyorsnak kell lennie — a felhasználó 2–3 másodpercen belül eredményt vár. Nehéz műveletekhez használja a Core Image-et GPU-n vagy háttérvárólistákat.

Webes forgatókönyvek

Action Extension URL-hez: PDF készítése weboldalról, mentés Pocket/Pinterest-be, oldal sebességének ellenőrzése, oldal archiválása, Open Graph metaadatok lekérése, oldal képernyőképének generálása. A PDF-generálás — az egyik legnépszerűbb forgatókönyv: a felhasználó weboldalt konvertál PDF-be anélkül, hogy harmadik féltől származó szolgáltatásokat nyitna meg.

Gyakran Ismételt Kérdések

Mi a fő különbség az Action Extension és a Share Extension között?

A Share Extension tartalmat küld a gazdaalkalmazásból az Ön alkalmazásába. Az Action Extension a tartalmat helyben dolgozza fel és visszaküldi az eredményt. Share — átvitel, Action — átalakítás. Ez az alapvető különbség határozza meg az architektúrát és a UX-et.

Lehet az Action Extension-nek felülete?

Igen, opcionális. Ha a művelet nem igényel felhasználói bevitelt (például karakterszámlálás), a bővítmény a háttérben is végrehajthatja, és azonnal visszaküldheti az eredményt a completeRequest segítségével. Az Info.plist-ben meg kell adni a NSExtensionActivationSupportsWebURL vagy az adattípusnak megfelelő másik UTI-t.

Mely alkalmazásokban jelenik meg az Action Extension?

Minden olyan alkalmazásban, amely támogatja az UIActivityViewController-t vagy a szabványos műveletvezérlőket. Ezek közé tartozik a Safari, a Fotók, a Fájlok, a Jegyzetek, a Mail és több ezer harmadik féltől származó alkalmazás. Az Action Extension nem működik azokban az alkalmazásokban, amelyek nem használják a szabványos iOS mechanizmusokat a műveletekhez.

Hogyan lehet visszaküldeni a feldolgozott tartalmat a gazdaalkalmazásba?

A extensionContext.completeRequest(returningItems:) segítségével egy NSExtensionItem tömbbel. Minden kimeneti elem tartalmaz egy NSItemProvider-t a feldolgozott adatokkal. A gazdaalkalmazás az eredményt az UIActivityViewController delegáltjában vagy egy hasonló callback-ben kapja meg.

Mik az Action Extension korlátozásai?

A bővítmény 30 másodpercig működik, ezt követően az iOS kényszerítetten befejezi. Nincs közvetlen hozzáférés a fő alkalmazáshoz — csak az App Groups segítségével. Az Action Extension nem hajthat végre háttérfeladatokat a befejezés után. Hosszú műveletekhez használjon háttér NSURLSession-t értesítéssel a következő indításkor.

Összefoglaló

  • Action Extension — iOS-bővítmény a tartalom közvetlen átalakításához a gazdaalkalmazásban.
  • Különbözik a Share Extension-től a feldolgozott adatok NSExtensionContext segítségével történő visszaküldésében.
  • Működhet UI-val vagy teljesen a háttérben felület nélkül.
  • Támogatja az összes tartalomtípust: szöveg, képek, URL, fájlok UTI-n keresztül.
  • Fordításhoz, szűrőkhöz, PDF-generáláshoz, OCR-hez és helyesírás-ellenőrzéshez használják.
  • Végrehajtási idő korlát — 30 másodperc, hozzáférés az alkalmazáshoz — App Groups segítségével.
  • Az Action Extension-t az alkalmazások 42%-ában használják a „Termelékenység” kategóriában.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is