Rozšíření aplikací a systémové integrace v mobilním vývoji: co to je, typy a jak fungují

Autor: IT Sectr Publikováno: 2026-06-22 Doba čtení: 11 min

Rozšíření aplikací jsou samostatné spustitelné moduly, které rozšiřují možnosti mobilní aplikace za hranice jejího hlavního rozhraní: Today Widget na domovské obrazovce, zpracování VoIP hovorů přes CallKit a reakce na systémové události přes BroadcastReceiver. Systémové integrace umožňují aplikaci interagovat s operačním systémem na hluboké úrovni a odemykají funkce nedostupné běžným obrazovkám. Podle dokumentace Apple Developer každé rozšíření běží v izolovaném procesu a je spravováno systémem nezávisle na hlavní aplikaci. Rozšíření aplikací v mobilní aplikaci umožňují implementovat funkce nedostupné v hlavním procesu.

Hlavní body

  • Rozšíření aplikací — samostatné binární soubory v rámci aplikace rozšiřující její funkčnost za hlavní proces
  • CallKit — framework pro integraci VoIP hovorů do systémového rozhraní hovorů iPhone
  • BroadcastReceiver — komponenta Androidu reagující na systémové broadcast zprávy
  • AppWidgetProvider — základní třída pro vytváření widgetů na Androidu s podporou RemoteViews
  • Content Provider — komponenta Androidu pro sdílení dat mezi aplikacemi přes ContentResolver

Rozšíření aplikací na iOS: widgety a rozšíření pro sdílení obsahu

Rozšíření aplikací na iOS se objevila v iOS 8 a stala se základem systémových integrací v mobilním vývoji. Jsou to samostatné binární soubory zabalené společně s hlavní aplikací, ale spouštěné v izolovaném procesu. Každé rozšíření má vlastní Info.plist a vstupní bod definovaný přes NSExtensionPrincipalClass. Systém spravuje životní cyklus rozšíření aplikací — nemohou zůstat na pozadí po dokončení úkolu.

WidgetKit a Today Widget

WidgetKit (iOS 14+) je moderní framework pro vytváření widgetů na domovské obrazovce. WidgetKit používá SwiftUI pro popis rozhraní a TimelineProvider pro definici plánů aktualizace. Widgety jsou k dispozici ve třech velikostech: malý (2×2 buňky), střední (4×2) a velký (4×4). Starý Today Widget založený na UICollectionViewController je stále podporován, ale Apple doporučuje migrovat na WidgetKit. Rozšíření aplikací na WidgetKit nepodporují animace, vstup z klávesnice ani gesta — jsou to statické nebo pseudo-animované prvky s periodickými aktualizacemi.

Share Extension a Action Extension

Share Extension umožňuje odesílat obsah z libovolné aplikace do vaší aplikace prostřednictvím systémového listu sdílení. Share Extension přijímá data přes NSExtensionItem a používá SLComposeServiceViewController pro uživatelské rozhraní. Action Extension zpracovává obsah na místě — například překládá text v prohlížeči bez přepínání do jiné aplikace. Oba typy musí dokončit práci v omezeném čase, jinak systém rozšíření "zabije". Toto je důležité omezení rozšíření aplikací v mobilní aplikaci — úlohy na pozadí nejsou na úrovni rozšíření k dispozici.

CallKit, PushKit a SiriKit — systémové integrace pro hlas a oznámení

Systémové integrace na iOS sahají daleko za widgety: CallKit, PushKit a SiriKit umožňují mobilní aplikaci pracovat na systémové úrovni. Tyto frameworky vyžadují speciální oprávnění, ale poskytují uživateli bezproblémový zážitek — hovory přes CallKit vypadají jako běžné telefonní hovory a Siri zpracovává požadavky bez otevření aplikace.

CallKit — VoIP hovory v systémovém rozhraní

CallKit integruje hovory aplikací třetích stran do systémové obrazovky hovorů, včetně zamčené obrazovky. CXProvider registruje aplikaci jako VoIP službu a CXCallController spravuje hovory. CallKit automaticky blokuje duplicitní hovory a podporuje Call Directory Extension pro blokování nežádoucích čísel. Systémové integrace v mobilním vývoji s CallKit jsou kritické pro aplikace hlasové komunikace — WhatsApp, Skype a Zoom jej používají k zobrazení příchozích hovorů.

PushKit — push oznámení na pozadí

PushKit doručuje push oznámení přímo do mobilní aplikace bez zobrazení uživateli. PushKit probouzí aplikaci z "mrtvého" stavu a předává data přes delegáta PKPushRegistryDelegate. Toto je primární mechanismus pro VoIP aplikace: PushKit doručuje informace o hovoru a CallKit je zobrazuje. PushKit má vyšší prioritu doručení než běžná push oznámení a nevyžaduje zobrazení banneru. Rozšíření aplikací v mobilních aplikacích často kombinují PushKit s CallKit pro hlasovou komunikaci.

SiriKit a Intents Extension

SiriKit umožňuje zpracovávat požadavky přes Siri a aplikaci Zkratky. Intents Extension je samostatné rozšíření aplikace, které registruje podporované záměry a zpracovává je. SiriKit podporuje více než 20 domén: hovory, zprávy, platby, poznámky, cvičení. Zkratky umožňují uživateli vytvářet automatizace — například "Odeslat zprávu ve WhatsApp přes Siri." Systémové integrace se SiriKit a Zkratkami zvyšují zapojení, protože uživatel provádí akce bez otevření aplikace.

BroadcastReceiver a systémové služby na Androidu

BroadcastReceiver je komponenta Androidu, která reaguje na systémové broadcast zprávy. Na rozdíl od iOS rozšíření aplikací BroadcastReceiver nevyžaduje samostatný binární soubor — stačí zaregistrovat přijímač v manifestu nebo v kódu přes Context.registerReceiver. Systémové integrace na Androidu často začínají BroadcastReceiver: od spuštění služby při startu zařízení po reakci na síťové připojení.

IntentFilter pro systémové události

IntentFilter váže BroadcastReceiver na konkrétní systémovou událost. Typické události: BOOT_COMPLETED (start zařízení), CONNECTIVITY_ACTION (změna sítě), BATTERY_LOW (slabá baterie), TIME_SET (změna času). Přijímač se registruje v AndroidManifest.xml nebo přes Context.registerReceiver pro dynamickou registraci. Dynamická registrace je výhodnější — nevyžaduje oprávnění v manifestu a funguje pouze když je aplikace aktivní. Rozšíření aplikací na Androidu neexistují jako koncept, ale BroadcastReceiver hraje podobnou roli — rozšiřuje možnosti aplikace prostřednictvím systémových integrací.

NotificationListenerService a AccessibilityService

NotificationListenerService je služba, která přijímá všechna systémová oznámení. NotificationListenerService vyžaduje oprávnění BIND_NOTIFICATION_LISTENER_SERVICE a přístup přes nastavení usnadnění. AccessibilityService je výkonnější nástroj pro systémovou integraci: může číst obsah obrazovky, simulovat kliknutí a automatizovat akce. Obě služby vyžadují explicitní povolení uživatelem v nastavení, což zvyšuje bezpečnost. Systémové integrace v mobilních aplikacích přes AccessibilityService se používají pro auto-výplně, čtečky obrazovky a nástroje usnadnění.

kotlin
class BootReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
            WorkManager.getInstance(context)
                .enqueueUniqueWork("post-boot", ...)
        }
    }
}

Příklad registruje BroadcastReceiver pro událost BOOT_COMPLETED. WorkManager se používá pro odložené provádění úloh po startu zařízení — to je standardní přístup pro Android aplikace.

App Widget Provider — vytváření widgetů na Androidu

App Widget Provider na Androidu je protějškem iOS rozšíření aplikací v kontextu widgetů: je to komponenta, která zobrazuje interaktivní obsah na domovské obrazovce. Na rozdíl od WidgetKit, Android widgety mohou přijímat vstup uživatele — kliknutí, přepínače a gesta. App Widget Provider se registruje v manifestu přes XML popis velikosti a frekvence aktualizace.

RemoteViews a AppWidgetProvider

RemoteViews popisuje rozhraní widgetu přes XML rozvržení a podporuje pouze omezenou sadu View. RemoteViews neumožňuje vlastní View — pouze standardní komponenty: TextView, ImageView, Button, ProgressBar. AppWidgetProvider je základní třída, která zpracovává aktualizace, povolení a odstranění widgetu. Metoda onUpdate je volána časovačem přes updatePeriodMillis nebo přes WorkManager pro přesné řízení. Systémové integrace s widgety na Androidu vyžadují opatrnost — příliš časté aktualizace vybíjejí baterii.

Glance API (Jetpack) — moderní přístup

Glance API je knihovna Jetpack pro vytváření widgetů pomocí Kotlin DSL místo XML. Glance API se kompiluje do RemoteViews a podporuje syntaxi podobnou Compose: GlanceComposable, Column, Row, Text. Knihovna řeší problém složitého XML kódu a umožňuje testování widgetů přes JUnit. Glance API zatím nepodporuje všechny funkce RemoteViews — pro složité interaktivní widgety je lepší klasický přístup. Rozšíření aplikací v mobilním vývoji na Androidu se vyvíjejí směrem k Glance API, což zjednodušuje vytváření a údržbu widgetů.

Content Provider, FileProvider a sdílení dat mezi aplikacemi

Content Provider je komponenta Androidu pro sdílení strukturovaných dat mezi aplikacemi přes jednotné rozhraní ContentResolver. Na rozdíl od iOS rozšíření aplikací Content Provider nevytváří samostatný proces — data jsou požadována synchronně v kontextu volající aplikace. Content Provider je základem systémových integrací na Androidu: kontakty, multimediální soubory, kalendář a standardní aplikace jej používají k publikování dat.

FileProvider pro bezpečné sdílení souborů

FileProvider je podtřída ContentProvider pro bezpečný přenos souborů mezi aplikacemi. FileProvider generuje dočasné URI content:// místo přímých cest file://, které jsou zakázány na Androidu 7+. Pro použití je třeba zadat files-path nebo external-files-path v XML konfiguraci. Rozšíření aplikací v mobilním vývoji na Androidu neexistují jako samostatný koncept, ale FileProvider plní jejich funkci — rozšiřuje možnosti sdílení dat za jednu aplikaci.

Protějšek na iOS: File Provider Extension

Na iOS plní roli sdílení souborů File Provider Extension. File Provider Extension publikuje soubory aplikace v aplikaci Soubory přes NSFileProviderManager. Na rozdíl od FileProvider, iOS rozšíření vyžaduje samostatný binární soubor a běží v izolovaném procesu. File Provider Extension podporuje NSFileProviderItem pro popis souborů a NSFileProviderEnumerator pro navigaci ve složkách. Systémové integrace v mobilních aplikacích přes File Provider Extension umožňují uživateli spravovat soubory aplikace z aplikace Soubory bez jejího otevření.

swift
class MyFileProviderExtension: NSFileProviderExtension {
    override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {
        return MyFileProviderItem(identifier: identifier)
    }
}

Příklad ukazuje minimální implementaci File Provider Extension ve Swift. Metoda item(for:) vrací objekt NSFileProviderItem podle identifikátoru — systém ji volá při zobrazování souborů v aplikaci Soubory.

Často kladené otázky

Co jsou rozšíření aplikací na iOS?

Rozšíření aplikací jsou samostatné binární soubory, které rozšiřují funkčnost aplikace za její proces: Today Widget, Share Extension, Action Extension, Keyboard Extension a další typy běžící v izolovaném prostředí.

Jak se liší CallKit od PushKit?

CallKit integruje VoIP hovory do systémového rozhraní hovorů se zobrazením na zamčené obrazovce. PushKit doručuje push oznámení na pozadí bez zobrazení uživateli — probouzí aplikaci ke zpracování dat, jako jsou informace o příchozím hovoru.

Co je BroadcastReceiver na Androidu?

BroadcastReceiver je komponenta Androidu reagující na systémové broadcast zprávy: start zařízení (BOOT_COMPLETED), síťové připojení (CONNECTIVITY_ACTION), změny režimu letadlo a další události operačního systému.

Jak vytvořit widget na Androidu?

Použijte AppWidgetProvider s RemoteViews pro vytvoření rozhraní widgetu nebo Glance API (Jetpack) pro přístup Kotlin DSL. Widget se registruje v manifestu přes XML popis specifikující velikost a frekvenci aktualizace.

K čemu slouží Content Provider?

Content Provider je komponenta Androidu pro sdílení dat mezi aplikacemi přes ContentResolver. Používá se pro přístup ke kontaktům, multimediálním souborům a jakýmkoli strukturovaným datům z jiných aplikací.

Shrnutí

  • Rozšíření aplikací — základ systémových integrací na iOS: widgety, sdílení, zpracování obsahu a rozšíření klávesnice v izolovaných procesech
  • CallKit a PushKit — dvojice frameworků pro VoIP hovory: PushKit doručuje data, CallKit zobrazuje rozhraní hovoru
  • BroadcastReceiver — protějšek rozšíření aplikací na Androidu pro reakci na systémové události bez samostatného binárního souboru
  • AppWidgetProvider — komponenta pro widgety na Androidu s podporou RemoteViews a Glance API
  • Content Provider a FileProvider — mechanismy sdílení dat mezi aplikacemi na Androidu přes ContentResolver
  • File Provider Extension — iOS protějšek FileProvider pro publikování souborů v aplikaci Soubory z izolovaného procesu
  • Systémové integrace v mobilním vývoji spojují rozšíření aplikací, BroadcastReceiver, CallKit a Content Provider do jediného ekosystému

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt