Action Extension: nima, qanday ishlaydi va kengaytmani yaratish

Muallif: IT Sectr Nashr etilgan: 2026-06-15 O'qish vaqti: 10 daq

Action Extension — bu boshqa ilovalardan kontent bilan foydalanuvchi amallarini kontekstni almashtirmasdan bajaradigan iOS kengaytmasi. Share Extension ma’lumotlarni boshqa ilovaga yuborishdan farqli o‘laroq, Action Extension kontentni joyida o‘zgartiradi: matnni tarjima qiladi, rasm filtrlarni o‘zgartirardi, imloni tekshiradi yoki PDF yaratadi. Apple (2024) ma’lumotlariga ko‘ra, Action Extension Share Extension-dan keyin ikkinchi eng ommabop kengaytma turi bo‘lib, 42% ilovalarda „Samaradorlik” toifasida qo‘llaniladi. Asosiy ilovani ishga tushirmasdan bir zumda amal bajarish — foydalanuvchi uchun asosiy afzallik.

Asosiy ma’lumotlar

  • Action Extension — host ilovasida kontentni o‘zgartirish uchun iOS kengaytmasi.
  • NSExtensionContext — kirish va chiqish ma’lumotlari bilan bajarish konteksti.
  • UTI — qayta ishlanayotgan kontent turini aniqlash uchun Uniform Type Identifiers.
  • UIActivity — iOS 6–7 da amallarni amalga oshirish uchun eski mexanizm.
  • App Groups — qayta ishlangan ma’lumotlarni ilovaga qaytarish.

Action Extension nima

Action Extension — iOS app extension turi bo‘lib, host ilovasi kontekstida kontent ustida to‘g‘ridan-to‘g‘ri amal bajarish imkonini beradi. Foydalanuvchi Safari-da matnni tanlaydi, „Amallar” tugmasini bosadi va masalan „Imloni tekshir” ni tanlaydi — kengaytma matnni qayta ishlaydi va brauzerdan chiqmasdan natijani qaytaradi. Kengaytma kirish ma’lumotlarini NSExtensionContext orqali oladi va o‘zgartirilgan kontentni qaytarishi mumkin.

Action Extension iOS 8 da app extensions arxitekturasining bir qismi sifatida paydo bo‘ldi. Uning asosiy xususiyati — kengaytmaning o‘z interfeysi yo‘q (ixtiyoriy) va u host ilovasi kontekstida ishlaydi. Foydalanuvchi joriy ekranni tark etmaydi, bu minimal kognitiv uzilishni ta’minlaydi. Apple ma’lumotlariga ko‘ra, Action Extension bir vaqtning o‘zida host ilovasi kontentini o‘qiy oladigan va o‘zgartira oladigan yagona kengaytma turidir (NSExtensionContext orqali natijani qaytarish bilan).

Action Extension qayerda qo‘llaniladi

Action Extension turli stsenariylarda qo‘llaniladi: brauzerda matn tarjimasi, veb sahifadan PDF yaratish, galereyadagi rasmga filtr qo‘llash, istalgan matn maydonida imloni tekshirish, URL ni qisqartirish, matnni shifrlash va xatcho‘plarga qo‘shish. Action Extension ning universalligi uni „Yordamchi dasturlar” va „Samaradorlik” toifasidagi ilovalar uchun mashhur vositaga aylantiradi.

Action Extension va Share Extension

Action Extension va Share Extension ko‘pincha chalkashtiriladi, ammo ularning maqsadi tubdan farq qiladi. Share Extension kontentni host ilovasidan sizning ilovangizga yuboradi; Action Extension kontentni qayta ishlaydi va uni qaytaradi. Farq arxitekturaga, foydalanuvchi tajribasiga va Info.plist konfiguratsiya talablariga ta’sir qiladi.

XususiyatAction ExtensionShare Extension
MaqsadKontentni o‘zgartirishKontentni ilovaga uzatish
InterfeysIxtiyoriy (maxsus)SLComposeServiceViewController
Ma’lumotni qaytarishHa, completeRequest orqaliYo‘q
KontekstHost ilovasida qoladiKengaytmaga o‘tadi
Menyudagi o‘rniAction Sheet (yuqori qism)Share Sheet (pastki qism)
Oddiy amalTarjima, tuzatish, filtrSaqlash, nashr qilish

Foydalanuvchi amalni qanday tanlaydi

Action Extension „Ulashish” yoki „...” tugmasi bosilganda amallar menyusida (Action Sheet) paydo bo‘ladi. iOS avtomatik ravishda Action Extensions-ni varaqning yuqori qismiga (amallar), Share Extensions-ni esa pastki qismiga (ilovalar) joylashtiradi. Foydalanuvchi stsenariysi: matnni tanladi → „Amallar” ni bosdi → sizning Action Extension ni tanladi → ilovalarni almashtirmasdan qayta ishlangan natijani oldi.

Action Extension arxitekturasi

Action Extension Xcode-dagi target, interfeysni ko‘rsatish uchun UIViewController (ixtiyoriy), ma’lumot kiritish-chiqarish uchun NSExtensionContext va Info.plist konfiguratsiyasidan iborat. Arxitektura Share Extension-ga qaraganda soddaroq: majburiy compose interfeysi yo‘q va kengaytma butunlay UI siz ishlashi mumkin.

Action Extension komponentlari

Target — asosiy ilovadan meros olingan identifikator bilan alohida bundle. UIViewController — taraqqiyot, sozlamalar yoki natijani ko‘rsatish uchun ixtiyoriy interfeys. NSExtensionContext — kirish ma’lumotlari (inputItems) va natijani qaytarish uchun completeRequest metodi bilan konteyner. Info.plist — NSExtensionActivationRule orqali faollashtirish konfiguratsiyasi va qo‘llab-quvvatlanadigan kontent turlarini belgilash uchun atributlar (NSExtensionAttributes).

NSExtensionContext va ma’lumot oqimlari

Action Extension kirish ma’lumotlarini extensionContext?.inputItems orqali oladi — NSExtensionItem massivi. Har bir element ma’lumotlar va UTI bilan ilovalarni o‘z ichiga oladi. Qayta ishlashdan so‘ng kengaytma completeRequest(returningItems:) ni chiqish NSExtensionItem massivi bilan chaqiradi. Host ilovasi qayta ishlangan ma’lumotlarni oladi va ko‘rsatadi. Asinxron model: kengaytma uzoq muddatli operatsiyalarni bajarishi mumkin, kontekstni 30 soniyagacha ushlab turadi.

Action Extension yaratish

Swift-da tanlangan matnni tarjima qilish uchun Action Extension yaratishni ko‘rib chiqamiz. Kengaytma host ilovasidan matn oladi, uni tarjima serveriga yuboradi va natijani qaytaradi. ActionViewController — Xcode target qo‘shganda yaratadigan asosiy 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
                    }
                }
            }
        }
    }
}

Qayta ishlashdan so‘ng kengaytma natijani host ilovasiga qaytaradi. completeRequest chiqish ma’lumotlari bilan — muqobil stsenariy, kengaytma UI ko‘rsatmaydi va darhol qayta ishlangan kontentni qaytaradi.

swift
// Qayta ishlangan matnni host ilovasiga qaytarish
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
)

Ma’lumotlarni qayta ishlash va natijani qaytarish

Action Extension ikki rejimda ishlashi mumkin: UI bilan va UI siz. UI siz rejimda kengaytma amalni butunlay fonda bajaradi va qayta ishlashdan so‘ng darhol completeRequest ni chaqiradi. UI bilan rejimda kengaytma kontrollerni ko‘rsatadi, foydalanuvchi amalni tasdiqlaydi va shundan keyin completeRequest natijani yuboradi. Rejim tanlovi amalning murakkabligi va foydalanuvchi kiritishi zarurligiga bog‘liq.

Ilovadan ma’lumotlarni yuklash

loadItem(forTypeIdentifier:) metodi asinxron ishlaydi — ma’lumotlar katta bo‘lishi mumkin (rasmlar, video). NSItemProvider oqimli yuklash va keshlashni boshqaradi. Rasmlar uchun kUTTypeImage, fayllar uchun kUTTypeFileURL dan foydalaning. Muhim: loadItem fon ipida chaqirilishi mumkin — UI ni faqat DispatchQueue.main orqali yangilang.

O‘zgartirilgan ma’lumotlarni qaytarish

Action Extension qayta ishlangan ma’lumotlarni NSExtensionItem massivi bilan completeRequest orqali qaytaradi. Har bir element chiqish ma’lumot turiga mos keladi. Host ilovasi original kontentni qayta ishlangani bilan almashtirishi mumkin — masalan, original rasmni filtrlanganiga almashtirishi mumkin. NSExtensionItem kirishdagi kabi UTI larni va qo‘shimchalarini (masalan, veb kontent uchun public.html) qo‘llab-quvvatlaydi.

Action Extension foydalanish stsenariylari

Action Extension o‘nlab stsenariylarda qo‘llaniladi — oddiy yordamchi dasturlardan murakkab biznes jarayonlarigacha. Klassik misollar matn, grafik va fayl operatsiyalarini, shuningdek veb kontent bilan integratsiyani o‘z ichiga oladi.

Matn stsenariylari

Matn uchun Action Extension: tarjima, imlo tekshiruvi, belgilar sonini hisoblash, registrni o‘zgartirish, shifrlash, matndan QR kod yaratish. Foydalanuvchi matn maydoni bo‘lgan istalgan ilovada (Safari, Eslatmalar, Pochta) matnni tanlaydi va bir bosish bilan amalni bajaradi. Kod sintaksisini ajratib ko‘rsatish, Markdown formatlash va URL qisqartirish — ilg‘or foydalanuvchilar uchun mashhur Action Extension misollari.

Grafik stsenariylar

Rasmlar uchun Action Extension taklif qiladi: filtrlarni qo‘llash, kesish, o‘lchamni o‘zgartirish, formatlarni konvertatsiya qilish (HEIC dan JPEG ga), suv belgisi qo‘shish, matnni aniqlash (OCR) va siqish. Rasmlarni qayta ishlash tez bo‘lishi kerak — foydalanuvchi 2–3 soniya ichida natijani kutadi. Og‘ir operatsiyalar uchun GPU-da Core Image yoki fon navbatlaridan foydalaning.

Veb stsenariylar

URL uchun Action Extension: veb sahifadan PDF yaratish, Pocket/Pinterest ga saqlash, sayt tezligini tekshirish, sahifani arxivlash, Open Graph metama’lumotlarini olish, sahifa ekran tasvirini yaratish. PDF generatsiyasi — eng ko‘p talab qilinadigan stsenariylardan biri: foydalanuvchi uchinchi tomon xizmatlarini ochmasdan veb sahifani PDF ga konvertatsiya qiladi.

Tez-tez beriladigan savollar

Action Extension ning Share Extension dan asosiy farqi nima?

Share Extension kontentni host ilovasidan sizning ilovangizga yuboradi. Action Extension kontentni joyida qayta ishlaydi va natijani qaytaradi. Share — uzatish, Action — o‘zgartirish. Bu fundamental farq arxitektura va UX ni belgilaydi.

Action Extension interfeysga ega bo‘lmasligi mumkinmi?

Ha. Agar amal foydalanuvchidan ma’lumot kiritishni talab qilmasa (masalan, belgi sonini hisoblash), kengaytma uni fonda bajarishi va darhol completeRequest orqali natijani qaytarishi mumkin. Info.plist da NSExtensionActivationSupportsWebURL yoki ma’lumot turiga mos boshqa UTI ko‘rsatilishi kerak.

Action Extension qaysi ilovalarda paydo bo‘ladi?

UIActivityViewController yoki standart amal kontrollerlarini qo‘llab-quvvatlaydigan barcha ilovalarda. Bular Safari, Rasmlar, Fayllar, Eslatmalar, Pochta va minglab uchinchi tomon ilovalari. Action Extension iOS ning standart amal mexanizmlaridan foydalanmaydigan ilovalarda ishlamaydi.

Qayta ishlangan kontentni host ilovasiga qanday qaytarish mumkin?

extensionContext.completeRequest(returningItems:) orqali NSExtensionItem massivi bilan. Har bir chiqish elementi qayta ishlangan ma’lumotlar bilan NSItemProvider ni o‘z ichiga oladi. Host ilovasi natijani UIActivityViewController delegatida yoki shunga o‘xshash callback da oladi.

Action Extension ning qanday cheklovlari bor?

Kengaytma 30 soniya davomida ishlaydi, shundan so‘ng iOS uni majburan tugatadi. Asosiy ilovaga to‘g‘ridan-to‘g‘ri kirish yo‘q — faqat App Groups orqali. Action Extension tugagandan so‘ng fon vazifalarini bajara olmaydi. Uzoq muddatli operatsiyalar uchun keyingi ishga tushirishda bildirishnoma bilan fon NSURLSession dan foydalaning.

Xulosa

  • Action Extension — host ilovasida to‘g‘ridan-to‘g‘ri kontentni o‘zgartirish uchun iOS kengaytmasi.
  • Share Extension dan NSExtensionContext orqali qayta ishlangan ma’lumotlarni qaytarishi bilan farqlanadi.
  • UI bilan yoki butunlay fonda interfeyssiz ishlashi mumkin.
  • Barcha kontent turlarini qo‘llab-quvvatlaydi: matn, rasmlar, URL, fayllar UTI orqali.
  • Tarjima, filtrlar, PDF generatsiyasi, OCR va imlo tekshiruvi uchun ishlatiladi.
  • Bajarish vaqti cheklovi — 30 soniya, ilovaga kirish — App Groups orqali.
  • Action Extension „Samaradorlik” toifasidagi ilovalarning 42 foizida qo‘llaniladi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing