Action Extension: nədir, necə işləyir və genişlənmənin hazırlanması

Müəllif: IT Sectr Dərc olunub: 2026-06-15 Oxuma vaxtı: 10 dəq

Action Extension iOS genişlənməsidir, digər proqramlardan məzmun ilə istifadəçi əməliyyatlarını kontekst dəyişmədən yerinə yetirir. Share Extension-dən fərqli olaraq, məlumatları başqa proqrama göndərir, Action Extension məzmunu yerində çevirir: mətni tərcümə edir, şəkil filtrlərini dəyişdirir, orfoqrafiyanı yoxlayır və ya PDF yaradır. Apple (2024) məlumatlarına görə, Action Extension Share Extension-dan sonra ikinci ən populyar genişlənmə növüdür və 42% proqramda „Məhsuldarlıq” kateqoriyasında istifadə olunur. Əsas proqramı işə salmadan ani hərəkət — istifadəçi üçün əsas üstünlükdür.

Əsas məqamlar

  • Action Extension — host proqramında məzmunu çevirmək üçün iOS genişlənməsi.
  • NSExtensionContext — giriş və çıxış məlumatları ilə icra konteksti.
  • UTI — işlənən məzmunun növünü təyin etmək üçün Uniform Type Identifiers.
  • UIActivity — iOS 6–7-də hərəkətləri həyata keçirmək üçün köhnə mexanizm.
  • App Groups — işlənmiş məlumatların proqrama geri göndərilməsi.

Action Extension nədir

Action Extension — iOS app extension növüdür, host proqramın kontekstində birbaşa məzmun üzərində əməliyyat yerinı yetirməyə imkan verir. İstifadəçi Safari-də mətni seçir, „Hərəkətlər” düyməsini basır və məsələn „Orfoqrafiyanı yoxla” seçir — genişlənmə mətni emal edir və brauzerdən çıxmadan nəticəni qaytarır. Genişlənmə giriş məlumatlarını NSExtensionContext vasitəsilə alır və dəyişdirilmiş məzmunu geri qaytara bilər.

Action Extension iOS 8-də app extensions arxitekturasının bir hissəsi kimi ortaya çıxdı. Onun əsas xüsusiyyəti genişlənmənin öz interfeysinin olmaması (istəyə bağlı) və host proqramı kontekstində işləməsidir. İstifadəçi cari ekranı tərk etmir, bu da minimal koqnitiv fasilə təmin edir. Apple-a görə, Action Extension eyni anda host proqramının məzmununu oxuya və dəyişdirə bilən yeganə genişlənmə növüdür (NSExtensionContext vasitəsilə nəticənin qaytarılması ilə).

Action Extension harada tətbiq olunur

Action Extension müxtəlif ssenarilərdə istifadə olunur: brauzerdə mətnin tərcüməsi, veb səhifədən PDF yaradılması, qalereyada şəklə filtr tətbiqi, istənilən mətn sahəsində orfoqrafiyanın yoxlanması, URL-nin qısaltılması, mətnin şifrələnməsi və əlamətlərə əlavə edilməsi. Action Extension-in universallığı onu „Köməkçi proqramlar” və „Məhsuldarlıq” kateqoriyaları üçün məşhur alət edir.

Action Extension və Share Extension

Action Extension və Share Extension tez-tez qarışdırılır, lakin onların təyinatı prinsipial olaraq fərqlidir. Share Extension host proqramından məzmunu sizin proqrama göndərir; Action Extension məzmunu emal edir və geri qaytarır. Fərq arxitekturaya, istifadəçi təcrübəsinə və Info.plist konfiqurasiya tələblərinə təsir edir.

XarakteristikaAction ExtensionShare Extension
TəyinatMəzmunun çevrilməsiMəzmunun proqrama ötürülməsi
Interfeysİstəyə bağlı (özəl)SLComposeServiceViewController
Məlumatın qaytarılmasıBəli, completeRequest vasitəsiləXeyr
KontekstHost proqramında qalırGenişlənməyə keçir
Menyuda mövqeAction Sheet (yuxarı hissə)Share Sheet (aşağı hissə)
Tipik hərəkətTərcümə, korreksiya, filtrSaxlama, dərc etmə

İstifadəçi hərəkəti necə seçir

Action Extension „Paylaş” və ya „...” düyməsi basıldıqda hərəkət menyusunda (Action Sheet) görünür. iOS avtomatik olaraq Action Extensions-i vərəqin yuxarı hissəsinə (hərəkətlər), Share Extensions-i isə aşağı hissəyə (proqramlar) yerləşdirir. İstifadəçi ssenarisi: mətni seçdi → „Hərəkətlər” basdı → Action Extension seçdi → proqramları dəyişmədən işlənmiş nəticə aldı.

Action Extension arxitekturası

Action Extension Xcode-da target, interfeysin göstərilməsi üçün UIViewController (istəyə bağlı), məlumat giriş-çıxışı üçün NSExtensionContext və Info.plist konfiqurasiyasından ibarətdir. Arxitektura Share Extension-dən daha sadədir: məcburi compose interfeysi yoxdur və genişlənmə tamamilə UI olmadan işləyə bilər.

Action Extension komponentləri

Target — əsas proqramdan miras alınan identifikatorla ayrı bundle. UIViewController — tərəqqi, parametrlər və ya nəticəni göstərmək üçün isteğə bağlı interfeys. NSExtensionContext — giriş məlumatları (inputItems) və nəticəni qaytarmaq üçün completeRequest metodu olan konteyner. Info.plist — NSExtensionActivationRule vasitəsilə aktivasiya konfiqurasiyası və dəstəklənən məzmun növlərini göstərmək üçün atributlar (NSExtensionAttributes).

NSExtensionContext və məlumat axınları

Action Extension giriş məlumatlarını extensionContext?.inputItems vasitəsilə alır — NSExtensionItem massivi. Hər bir element məlumatları və UTI ilə əlavələr ehtiva edir. Emaldan sonra genişlənmə completeRequest(returningItems:) çağırır çıxış NSExtensionItem massivi ilə. Host proqramı işlənmiş məlumatları alır və göstərir. Asinxron model: genişlənmə uzun müddətli əməliyyatları yerinə yetirə bilər, konteksti 30 saniyəyə qədər saxlaya bilər.

Action Extension yaratmaq

Swift-də seçilmiş mətni tərcümə etmək üçün Action Extension yaradılmasını nəzərdən keçirək. Genişlənmə host proqramından mətn alır, tərcümə serverinə göndərir və nəticəni qaytarır. ActionViewController — Xcode target əlavə edərkən yaratdığı əsas kontroller.

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

Emaldan sonra genişlənmə nəticəni host proqramına qaytarır. completeRequest çıxış məlumatları ilə — alternativ ssenari, genişlənmə UI göstərmir və dərhal işlənmiş məzmunu qaytarır.

swift
// Emal edilmiş mətnin host proqramına qaytarılması
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
)

Məlumatların işlənməsi və nəticənin qaytarılması

Action Extension iki rejimdə işləyə bilər: UI ilə və UI olmadan. UI olmadan rejimdə genişlənmə əməliyyatı tamamilə fonda yerinə yetirir və emaldan dərhal sonra completeRequest çağırır. UI ilə rejimdə genişlənmə kontroller göstərir, istifadəçi əməliyyatı təsdiqləyir və yalnız bundan sonra completeRequest nəticəni göndərir. Rejim seçimi əməliyyatın mürəkkəbliyindən və istifadəçi girişinin zəruriliyindən asılıdır.

Əlavədən məlumatların yüklənməsi

loadItem(forTypeIdentifier:) metodu asinxron işləyir — məlumatlar böyük ola bilər (şəkillər, videolar). NSItemProvider axın yükləmə və keşləməni idarə edir. Şəkillər üçün kUTTypeImage, fayllar üçün kUTTypeFileURL istifadə edin. Əhəmiyyətli: loadItem fon sapında çağırıla bilər — UI-ni yalnız DispatchQueue.main vasitəsilə yeniləyin.

Dəyişdirilmiş məlumatların qaytarılması

Action Extension işlənmiş məlumatları NSExtensionItem massivi ilə completeRequest vasitəsilə qaytarır. Hər bir element çıxış məlumat növünə uyğundur. Host proqramı orijinal məzmunu işlənmişlə əvəz edə bilər — məsələn, orijinal şəkli filtrlənmişlə əvəz edə bilər. NSExtensionItem girişdəki UTI-ləri və əlavələri (məsələn, veb məzmun üçün public.html) dəstəkləyir.

Action Extension istifadə ssenariləri

Action Extension onlarla ssenaridə tətbiq olunur — sadə köməkçi proqramlardan mürəkkəb biznes proseslərinə qədər. Klassik nümunələr mətn, qrafik və fayl əməliyyatlarını, həmçinin veb məzmun ilə inteqrasiyanı əhatə edir.

Mətn ssenariləri

Mətn üçün Action Extension: tərcümə, orfoqrafiya yoxlaması, simvol sayı, registrin dəyişdirilməsi, şifrələmə, mətndən QR kodu yaradılması. İstifadəçi mətn sahəsi olan istənilən proqramda (Safari, Qeydlər, Poçt) mətni seçir və bir klik lə əməliyyatı yerinə yetirir. Kodun sintaksis vurğulanması, Markdown formatlaşdırılması və URL-nin qısaltılması — təcrübəli istifadəçilər üçün məşhur Action Extension nümunələri.

Qrafik ssenarilər

Şəkillər üçün Action Extension təklif edir: filtrlərin tətbiqi, kəsmə, ölçünün dəyişdirilməsi, formatların konvertasiyası (HEIC-dən JPEG-ə), su nişanı əlavə edilməsi, mətnin tanınması (OCR) və sıxışdırma. Şəkillərin emalı sürətli olmalıdır — istifadəçi 2–3 saniyə ərzində nəticə gözləyir. Ağır əməliyyatlar üçün GPU-da Core Image və ya fon növbələri istifadə edin.

Veb ssenarilər

URL üçün Action Extension: veb səhifədən PDF yaradılması, Pocket/Pinterest-ə yadda saxlanması, sayt sürətinin yoxlanması, səhifənin arxivlənməsi, Open Graph metadatanın alınması, səhifənin ekran görüntüsünün yaradılması. PDF generasiyası — ən çox tələb olunan ssenarilərdən biri: istifadəçi üçüncü tərəf xidmətlərə müraciət etmədən veb səhifəni PDF-ə çevirir.

Tez-tez verilən suallar

Action Extension ilə Share Extension arasındakı əsas fərq nədir?

Share Extension host proqramından məzmunu sizin proqrama göndərir. Action Extension məzmunu yerində emal edir və nəticəni geri qaytarır. Share — ötürmə, Action — çevirmə. Bu əsas fərq arxitekturanı və UX-i müyyənləşdirir.

Action Extension interfeysi ola bilməzmi?

Bəli. Əgər əməliyyat istifadəçidən məlumat daxil etməyi tələb etmirsə (məsələn, simvol sayı), genişlənmə onu fonda yerinə yetirə və dərhal completeRequest vasitəsilə nəticəni qaytara bilər. Info.plist-də NSExtensionActivationSupportsWebURL və ya məlumat növünə uyğun başqa UTI göstərilməlidir.

Hansı proqramlarda Action Extension görünür?

UIActivityViewController və ya standart hərəkət kontrollerlərini dəstəkləyən bütün proqramlarda. Bunlar Safari, Fotoşəkillər, Fayllar, Qeydlər, Poçt və minlərlə üçüncü tərəf proqramlardır. Action Extension iOS üçün standart hərəkət mexanizmlərindən istifadə etməyən proqramlarda işləmir.

Emal edilmiş məzmunu host proqramına necə qaytarmaq olar?

extensionContext.completeRequest(returningItems:) vasitəsilə NSExtensionItem massivi ilə. Hər bir çıxış elementi emal edilmiş məlumatlarla NSItemProvider ehtiva edir. Host proqramı nəticəni UIActivityViewController delegatında və ya oxşar callback-də alır.

Action Extension-ə hansı məhdudiyyətlər tətbiq olunur?

Genişlənmə 30 saniyə ərzində işləyir, bundan sonra iOS onu məcburi bağlayır. Əsas proqrama birbaşa çıxış yoxdur — yalnız App Groups vasitəsilə. Action Extension tamamlandıqdan sonra fon tapşırıqlarını yerinə yetirə bilməz. Uzun müddətli əməliyyatlar üçün növbəti başlatmada bildirişlə fon NSURLSession istifadə edin.

Nəticə

  • Action Extension — host proqramında birbaşa məzmunu çevirmək üçün iOS genişlənməsi.
  • Share Extension-dən NSExtensionContext vasitəsilə emal edilmiş məlumatların qaytarılması ilə fərqlənir.
  • UI ilə və ya tamamilə fonda interfeys olmadan işləyə bilər.
  • Bütün məzmun növlərini dəstəkləyir: mətn, şəkillər, URL, fayllar UTI vasitəsilə.
  • Tərcümə, filtrlər, PDF generasiyası, OCR və orfoqrafiya yoxlaması üçün istifadə olunur.
  • İcra müddəti məhdudiyyəti — 30 saniyə, proqrama giriş — App Groups vasitəsilə.
  • Action Extension „Məhsuldarlıq” kateqoriyası proqramlarının 42%-də istifadə olunur.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun