Action Extension: ano ito, paano ito gumagana at pag-develop ng extension

May-akda: IT Sectr Nai-publish: 2026-06-15 Oras ng pagbabasa: 10 min

Ang Action Extension ay isang iOS extension na nagsasagawa ng mga custom na aksyon sa content mula sa ibang mga app nang hindi lumilipat ng konteksto. Hindi tulad ng Share Extension na nagpapadala ng data sa ibang app, ang Action Extension ay nagbabago ng content mismo sa lugar: nagsasalin ng teksto, nagbabago ng mga filter ng larawan, sumusuri ng baybay, o gumagawa ng PDF. Ayon sa Apple (2024), ang Action Extension ay ang pangalawang pinakasikat na uri ng extension pagkatapos ng Share Extension, na ginagamit sa 42% ng mga app sa kategoryang “Produktibidad”. Ang agarang aksyon nang hindi inilulunsad ang pangunahing app — pangunahing bentahe para sa gumagamit.

Mga Pangunahing Punto

  • Action Extension — iOS extension para sa pagbabago ng content sa host app.
  • NSExtensionContext — konteksto ng pagpapatupad na may data ng input at output.
  • UTI — Uniform Type Identifiers para sa pagtukoy ng uri ng content na pinoproseso.
  • UIActivity — lumang mekanismo para sa pagpapatupad ng mga aksyon sa iOS 6–7.
  • App Groups — pagpapadala ng naprosesong data pabalik sa app.

Ano ang Action Extension

Action Extension — ay isang uri ng iOS app extension na nagpapahintulot sa iyo na magsagawa ng aksyon sa content nang direkta sa konteksto ng host app. Pumili ang gumagamit ng teksto sa Safari, pindutin ang “Mga Aksyon” at pumili halimbawa “Suriin ang Baybay” — pinoproseso ng extension ang teksto at ibinabalik ang resulta nang hindi umaalis sa browser. Natatanggap ng extension ang data ng input sa pamamagitan ng NSExtensionContext at maaaring ibalik ang binagong content.

Ang Action Extension ay lumitaw sa iOS 8 bilang bahagi ng arkitektura ng mga extension ng app. Ang pangunahing tampok nito ay ang extension ay walang sariling interface (opsyonal) at tumatakbo sa konteksto ng host app. Hindi iniiwan ng gumagamit ang kasalukuyang screen, na tinitiyak ang minimal na cognitive disruption. Ayon sa Apple, ang Action Extension ay ang tanging uri ng extension na maaaring sabay na magbasa at magbago ng content ng host app (sa pamamagitan ng NSExtensionContext na may pagbabalik ng resulta).

Saan ginagamit ang Action Extension

Ang Action Extension ay ginagamit sa iba't ibang sitwasyon: pagsasalin ng teksto sa browser, paggawa ng PDF mula sa web page, paglalapat ng filter sa larawan sa gallery, pagsuri ng baybay sa anumang field ng teksto, pagpapaikli ng URL, pag-encrypt ng teksto, at pagdagdag sa bookmark. Ang kakayahang magamit ng Action Extension ay ginagawa itong popular na tool para sa mga app sa kategoryang “Mga Kagamitan” at “Produktibidad”.

Action Extension kumpara sa Share Extension

Ang Action Extension at Share Extension ay madalas na napagkakamalan, ngunit ang kanilang layunin ay pangunahing naiiba. Ang Share Extension ay nagpapadala ng content mula sa host app patungo sa iyong app; ang Action Extension ay nagpoproseso ng content at ibinabalik ito. Ang pagkakaiba ay nakakaapekto sa arkitektura, karanasan ng gumagamit, at mga kinakailangan sa pagsasaayos ng Info.plist.

KatangianAction ExtensionShare Extension
LayuninPagbabago ng contentPagpapadala ng content sa app
InterfaceOpsyonal (custom)SLComposeServiceViewController
Pagbabalik ng dataOo, sa pamamagitan ng completeRequestHindi
KontekstoNananatili sa host appLumipat sa extension
Posisyon sa menuAction Sheet (itaas na bahagi)Share Sheet (ibaba na bahagi)
Karaniwang aksyonPagsasalin, pagwawasto, filterPag-save, pag-publish

Paano pinipili ng gumagamit ang aksyon

Ang Action Extension ay lilitaw sa menu ng mga aksyon (Action Sheet) kapag pinindot ang button na “Ibahagi” o “...”. Awtomatikong inilalagay ng iOS ang Action Extensions sa itaas na bahagi ng sheet (mga aksyon), at ang Share Extensions sa ibabang bahagi (mga app). Sitwasyon ng gumagamit: pumili ng teksto → pinindot ang “Mga Aksyon” → pinili ang iyong Action Extension → nakatanggap ng naprosesong resulta nang hindi lumilipat ng app.

Arkitektura ng Action Extension

Ang Action Extension ay binubuo ng target sa Xcode, UIViewController para sa pagpapakita ng interface (opsyonal), NSExtensionContext para sa input-output ng data, at pagsasaayos ng Info.plist. Ang arkitektura ay mas simple kaysa sa Share Extension: walang sapilitang compose interface, at ang extension ay maaaring gumana nang buong-buo nang walang UI.

Mga bahagi ng Action Extension

Target — hiwalay na bundle na may identifier na minana mula sa pangunahing app. UIViewController — opsyonal na interface para sa pagpapakita ng progreso, mga setting, o resulta. NSExtensionContext — lalagyan na may data ng input (inputItems) at pamamaraang completeRequest para sa pagbabalik ng resulta. Info.plist — pagsasaayos ng activation sa pamamagitan ng NSExtensionActivationRule at mga attribute (NSExtensionAttributes) para sa pagtukoy ng mga suportadong uri ng content.

NSExtensionContext at mga daloy ng data

Ang Action Extension ay tumatanggap ng data ng input sa pamamagitan ng extensionContext?.inputItems — array ng NSExtensionItem. Ang bawat elemento ay naglalaman ng mga attachment na may data at UTI. Pagkatapos ng pagproseso, tinatawag ng extension ang completeRequest(returningItems:) na may array ng output na NSExtensionItem. Ang host app ay tumatanggap ng naprosesong data at ipinapakita ang mga ito. Asynchronous na modelo: ang extension ay maaaring magsagawa ng mahabang operasyon, na pinapanatili ang konteksto hanggang 30 segundo.

Paglikha ng Action Extension

Tingnan natin ang paglikha ng Action Extension sa Swift para sa pagsasalin ng napiling teksto. Ang extension ay tumatanggap ng teksto mula sa host app, ipapadala ito sa server ng pagsasalin, at ibinabalik ang resulta. ActionViewController — pangunahing controller na ginagawa ng Xcode kapag nagdaragdag ng target.

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

Pagkatapos ng pagproseso, ibinabalik ng extension ang resulta sa host app. completeRequest na may data ng output — alternatibong sitwasyon kapag ang extension ay hindi nagpapakita ng UI ngunit direktang ibinabalik ang naprosesong content.

swift
// Pagbabalik ng naprosesong teksto sa 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
)

Pagproseso ng Data at Pagbabalik ng Resulta

Ang Action Extension ay maaaring gumana sa dalawang mode: may UI at walang UI. Sa mode na walang UI, ginagawa ng extension ang aksyon nang buo sa background at tinatawag ang completeRequest kaagad pagkatapos ng pagproseso. Sa mode na may UI, nagpapakita ang extension ng controller, kinukumpirma ng gumagamit ang aksyon, at pagkatapos lamang nito ipapadala ng completeRequest ang resulta. Ang pagpili ng mode ay depende sa pagiging kumplikado ng aksyon at pangangailangan ng input ng gumagamit.

Pag-load ng data mula sa attachment

Ang pamamaraang loadItem(forTypeIdentifier:) ay gumagana nang asynchronous — ang data ay maaaring malaki (mga larawan, video). Ang NSItemProvider ay namamahala ng streaming loading at caching. Para sa mga larawan gamitin ang kUTTypeImage, para sa mga file — kUTTypeFileURL. Mahalaga: ang loadItem ay maaaring tawagin sa background thread — i-update ang UI lamang sa pamamagitan ng DispatchQueue.main.

Pagbabalik ng binagong data

Ibinabalik ng Action Extension ang naprosesong data sa pamamagitan ng completeRequest na may array ng NSExtensionItem. Ang bawat elemento ay tumutugma sa uri ng data ng output. Ang host app ay maaaring palitan ang orihinal na content ng naprosesong content — halimbawa, palitan ang orihinal na larawan ng na-filter. NSExtensionItem ay sumusuporta sa parehong UTI tulad ng sa input, kasama ang mga karagdagang (halimbawa, public.html para sa web content).

Mga Sitwasyon ng Paggamit ng Action Extension

Ang Action Extension ay ginagamit sa dose-dosenang sitwasyon — mula sa mga simpleng kagamitan hanggang sa kumplikadong proseso ng negosyo. Mga klasikong halimbawa ay sumasaklaw sa mga operasyong text, graphical, at file, pati na rin ang pagsasama sa web content.

Mga sitwasyon sa teksto

Action Extension para sa teksto: pagsasalin, pagsuri ng baybay, pagbilang ng karakter, pagbabago ng laki ng titik, pag-encrypt, paggawa ng QR code mula sa teksto. Pumili ang gumagamit ng teksto sa anumang app na may field ng teksto (Safari, Notes, Mail) at sa isang click ay ginagawa ang aksyon. Ang pag-highlight ng syntax ng code, pag-format ng Markdown, at pagpapaikli ng URL — mga sikat na halimbawa ng Action Extension para sa mga advanced na gumagamit.

Mga sitwasyon sa graphics

Para sa mga larawan, ang Action Extension ay nag-aalok: paglalapat ng mga filter, pag-crop, pagbabago ng laki, conversion ng format (HEIC sa JPEG), pagdagdag ng watermark, pagkilala ng teksto (OCR), at compression. Ang pagproseso ng mga larawan ay dapat mabilis — inaasahan ng gumagamit ang resulta sa loob ng 2–3 segundo. Para sa mabibigat na operasyon, gamitin ang Core Image sa GPU o mga background queue.

Mga sitwasyon sa web

Action Extension para sa URL: paggawa ng PDF mula sa web page, pag-save sa Pocket/Pinterest, pagsuri ng bilis ng site, pag-archive ng page, pagkuha ng metadata ng Open Graph, paggawa ng screenshot ng page. Ang pagbuo ng PDF — isa sa pinakasikat na sitwasyon: ginagawang PDF ng gumagamit ang web page nang hindi nagbubukas ng mga serbisyo ng third-party.

Mga Madalas Itanong

Ano ang pangunahing pagkakaiba ng Action Extension at Share Extension?

Ang Share Extension ay nagpapadala ng content mula sa host app patungo sa iyong app. Ang Action Extension ay nagpoproseso ng content sa lugar at ibinabalik ang resulta. Share — pagpapadala, Action — pagbabago. Ito ang pangunahing pagkakaiba na tumutukoy sa arkitektura at UX.

Maaari bang walang interface ang Action Extension?

Oo. Kung ang aksyon ay hindi nangangailangan ng input mula sa gumagamit (halimbawa, pagbilang ng karakter), ang extension ay maaaring gawin ito sa background at agad na ibalik ang resulta sa pamamagitan ng completeRequest. Sa Info.plist dapat tukuyin ang NSExtensionActivationSupportsWebURL o ibang UTI na tumutugma sa uri ng data.

Sa anong mga app lumilitaw ang Action Extension?

Sa lahat ng app na sumusuporta sa UIActivityViewController o mga karaniwang controller ng aksyon. Kabilang dito ang Safari, Mga Larawan, Mga File, Notes, Mail, at libu-libong third-party na app. Ang Action Extension ay hindi gumagana sa mga app na hindi gumagamit ng mga karaniwang mekanismo ng iOS para sa mga aksyon.

Paano ibalik ang naprosesong content sa host app?

Sa pamamagitan ng extensionContext.completeRequest(returningItems:) na may array ng NSExtensionItem. Ang bawat elemento ng output ay naglalaman ng NSItemProvider na may naprosesong data. Ang host app ay natatanggap ang resulta sa delegate ng UIActivityViewController o katulad na callback.

Ano ang mga limitasyon ng Action Extension?

Ang extension ay gumagana hanggang 30 segundo, pagkatapos ay puwersahang tatapusin ito ng iOS. Walang direktang access sa pangunahing app — sa pamamagitan lamang ng App Groups. Ang Action Extension ay hindi maaaring magsagawa ng mga background na gawain pagkatapos ng pagtatapos. Para sa mahabang operasyon, gamitin ang background na NSURLSession na may notification sa susunod na paglunsad.

Buod

  • Action Extension — iOS extension para sa direktang pagbabago ng content sa host app.
  • Naiiba sa Share Extension sa pamamagitan ng pagbabalik ng naprosesong data sa pamamagitan ng NSExtensionContext.
  • Maaaring gumana nang may UI o ganap sa background nang walang interface.
  • Sinusuportahan ang lahat ng uri ng content: text, mga larawan, URL, mga file sa pamamagitan ng UTI.
  • Ginagamit para sa pagsasalin, mga filter, pagbuo ng PDF, OCR, at pagsuri ng baybay.
  • Limitasyon sa oras ng pagpapatupad — 30 segundo, access sa app — sa pamamagitan ng App Groups.
  • Ang Action Extension ay ginagamit sa 42% ng mga app sa kategoryang “Produktibidad”.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din