Alkalmazáskiterjesztések és rendszerintegrációk a mobilfejlesztésben: mik ezek, milyen típusok és hogyan működnek

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

Alkalmazáskiterjesztések különálló végrehajtható modulok, amelyek egy mobilalkalmazás képességeit a fő interfészen túlra bővítik: Today Widget a kezdőképernyőn, VoIP-hívások kezelése CallKit-en keresztül és rendszereseményekre való reagálás BroadcastReceiver-en keresztül. A rendszerintegrációk lehetővé teszik az alkalmazás számára, hogy mély szinten lépjen kapcsolatba az operációs rendszerrel, olyan funkciókat nyitva meg, amelyek a normál képernyők számára nem elérhetők. Az Apple Developer dokumentáció szerint minden kiterjesztés izolált folyamatban fut, és a rendszer a főalkalmazástól függetlenül kezeli. Az alkalmazáskiterjesztések egy mobilalkalmazásban lehetővé teszik a fő folyamatban nem elérhető funkciók megvalósítását.

Főbb pontok

  • Alkalmazáskiterjesztések — külön bináris fájlok egy alkalmazáson belül, amelyek a funkcionalitást a fő folyamaton túlra bővítik
  • CallKit — egy keretrendszer VoIP-hívások integrálására az iPhone rendszerhívás-felületébe
  • BroadcastReceiver — egy Android-komponens, amely reagál a rendszer broadcast üzeneteire
  • AppWidgetProvider — egy alaposztály widgetek létrehozására Androidon RemoteViews támogatással
  • Content Provider — egy Android-komponens adatok megosztására alkalmazások között ContentResolveren keresztül

Alkalmazáskiterjesztések iOS-en: widgetek és tartalommegosztó kiterjesztések

Az alkalmazáskiterjesztések iOS-en az iOS 8-ban jelentek meg, és a rendszerintegrációk alapjává váltak a mobilfejlesztésben. Ezek külön bináris fájlok, amelyek a főalkalmazással együtt vannak csomagolva, de izolált folyamatban indulnak el. Minden kiterjesztésnek saját Info.plist-je és NSExtensionPrincipalClass-on keresztül definiált belépési pontja van. A rendszer kezeli az alkalmazáskiterjesztések életciklusát — nem maradhatnak a háttérben a feladat befejezése után.

WidgetKit és Today Widget

A WidgetKit (iOS 14+) egy modern keretrendszer widgetek létrehozására a kezdőképernyőn. WidgetKit SwiftUI-t használ a felület leírásához és TimelineProvider-t a frissítési ütemezések meghatározásához. A widgetek három méretben kaphatók: kicsi (2×2 cella), közepes (4×2) és nagy (4×4). A régi, UICollectionViewController-en alapuló Today Widget továbbra is támogatott, de az Apple a WidgetKit-re való migrálást javasolja. A WidgetKit-en lévő alkalmazáskiterjesztések nem támogatják az animációt, billentyűzetbevitelt vagy gesztusokat — ezek statikus vagy pszeudo-animált elemek időszakos frissítéssel.

Share Extension és Action Extension

Share Extension lehetővé teszi tartalom küldését bármely alkalmazásból az Ön alkalmazásába a rendszer megosztó lapján keresztül. Share Extension adatokat fogad NSExtensionItem-en keresztül, és SLComposeServiceViewController-t használ a felülethez. Action Extension a tartalmat helyben dolgozza fel — például szöveget fordít a böngészőben anélkül, hogy másik alkalmazásba váltana. Mindkét típusnak korlátozott időn belül be kell fejeznie a munkát, különben a rendszer "megöli" a kiterjesztést. Ez az alkalmazáskiterjesztések fontos korlátozása egy mobilalkalmazásban — a háttérfeladatok nem érhetők el kiterjesztési szinten.

CallKit, PushKit és SiriKit — rendszerintegrációk hanghoz és értesítésekhez

A rendszerintegrációk iOS-en messze túlmutatnak a widgeteken: CallKit, PushKit és SiriKit lehetővé teszik egy mobilalkalmazás számára, hogy rendszerszinten működjön. Ezek a keretrendszerek speciális jogosultságokat igényelnek, de zökkenőmentes élményt nyújtanak a felhasználónak — a CallKit-en keresztüli hívások úgy néznek ki, mint a normál telefonhívások, és a Siri feldolgozza a kéréseket az alkalmazás megnyitása nélkül.

CallKit — VoIP-hívások a rendszerfelületen

CallKit integrálja a harmadik féltől származó alkalmazáshívásokat a rendszer hívás képernyőjébe, beleértve a zárolt képernyőt is. A CXProvider regisztrálja az alkalmazást VoIP-szolgáltatásként, a CXCallController pedig kezeli a hívásokat. A CallKit automatikusan blokkolja a duplikált hívásokat, és támogatja a Call Directory Extension-t a nem kívánt számok blokkolásához. A CallKit-tel való rendszerintegrációk a mobilfejlesztésben kritikusak a hangkommunikációs alkalmazások számára — a WhatsApp, Skype és Zoom a bejövő hívások megjelenítésére használja.

PushKit — háttérbeli push értesítések

A PushKit push értesítéseket közvetlenül a mobilalkalmazásba szállítja anélkül, hogy megjelenítené azokat a felhasználónak. PushKit felébreszti az alkalmazást egy "megölt" állapotból, és adatokat továbbít a PKPushRegistryDelegate-en keresztül. Ez az elsődleges mechanizmus a VoIP-alkalmazások számára: a PushKit szállítja a hívásinformációkat, a CallKit pedig megjeleníti azokat. A PushKit magasabb szállítási prioritással rendelkezik, mint a normál push értesítések, és nem igényel banner megjelenítést. Az alkalmazáskiterjesztések a mobilalkalmazásokban gyakran kombinálják a PushKit-et a CallKit-tel a hangkommunikációhoz.

SiriKit és Intents Extension

A SiriKit lehetővé teszi kérések feldolgozását a Siri és a Parancsok alkalmazáson keresztül. Intents Extension egy külön alkalmazáskiterjesztés, amely regisztrálja a támogatott szándékokat és feldolgozza azokat. A SiriKit több mint 20 domaint támogat: hívások, üzenetek, fizetések, jegyzetek, edzések. A Parancsok lehetővé teszik a felhasználó számára automatizálások létrehozását — például "Üzenet küldése a WhatsApp-ban Sirin keresztül." A SiriKit-tel és Parancsokkal való rendszerintegrációk növelik az elköteleződést, mivel a felhasználó az alkalmazás megnyitása nélkül hajt végre műveleteket.

BroadcastReceiver és rendszerszolgáltatások Androidon

BroadcastReceiver egy Android-komponens, amely reagál a rendszer broadcast üzeneteire. Az iOS alkalmazáskiterjesztésekkel ellentétben a BroadcastReceiver nem igényel külön bináris fájlt — elég regisztrálni a vevőt a manifestben vagy a kódban a Context.registerReceiver-en keresztül. A rendszerintegrációk Androidon gyakran BroadcastReceiver-rel kezdődnek: az eszköz indításakor egy szolgáltatás elindításától a hálózati kapcsolatra való reagálásig.

IntentFilter rendszereseményekhez

IntentFilter egy BroadcastReceiver-t egy adott rendszereseményhez köt. Tipikus események: BOOT_COMPLETED (eszköz indítása), CONNECTIVITY_ACTION (hálózati változás), BATTERY_LOW (alacsony akkumulátor), TIME_SET (időváltozás). A vevő regisztrálása az AndroidManifest.xml-ben vagy a Context.registerReceiver-en keresztül történik dinamikus regisztrációhoz. A dinamikus regisztráció előnyösebb — nem igényel engedélyeket a manifestben, és csak akkor működik, amikor az alkalmazás aktív. Az alkalmazáskiterjesztések Androidon nem léteznek koncepcióként, de a BroadcastReceiver hasonló szerepet tölt be — rendszerintegrációkon keresztül bővíti az alkalmazás képességeit.

NotificationListenerService és AccessibilityService

A NotificationListenerService egy szolgáltatás, amely minden rendszerértesítést fogad. NotificationListenerService BIND_NOTIFICATION_LISTENER_SERVICE engedélyt és hozzáférést igényel a kisegítő lehetőségek beállításain keresztül. Az AccessibilityService egy erősebb eszköz a rendszerintegrációhoz: képes olvasni a képernyő tartalmát, szimulálni kattintásokat és automatizálni műveleteket. Mindkét szolgáltatás explicit bekapcsolást igényel a felhasználó által a beállításokban, ami növeli a biztonságot. A mobilalkalmazásokban AccessibilityService-en keresztüli rendszerintegrációkat automatikus kitöltőkhöz, képernyőolvasókhoz és kisegítő eszközökhöz használják.

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

A példa regisztrál egy BroadcastReceiver-t a BOOT_COMPLETED eseményhez. WorkManager az eszköz indítása utáni késleltetett feladatvégrehajtáshoz használatos — ez a szabványos megközelítés az Android-alkalmazásokhoz.

App Widget Provider — widgetek létrehozása Androidon

App Widget Provider Androidon az iOS alkalmazáskiterjesztések megfelelője a widgetek kontextusában: ez egy komponens, amely interaktív tartalmat jelenít meg a kezdőképernyőn. A WidgetKit-tel ellentétben az Android widgetek fogadhatnak felhasználói bemenetet — kattintásokat, kapcsolókat és gesztusokat. Az App Widget Provider a manifestben regisztrálódik a méret és frissítési gyakoriság XML leírásán keresztül.

RemoteViews és AppWidgetProvider

A RemoteViews XML-elrendezésen keresztül írja le a widget felületét, és csak korlátozott View-készletet támogat. RemoteViews nem engedélyez egyedi View-kat — csak szabványos komponenseket: TextView, ImageView, Button, ProgressBar. Az AppWidgetProvider az alaposztály, amely kezeli a widget frissítéseit, engedélyezését és törlését. Az onUpdate metódus időzítőn keresztül hívódik meg updatePeriodMillis segítségével vagy WorkManager-en keresztül a pontos vezérlés érdekében. A widgetekkel való rendszerintegrációk Androidon óvatosságot igényelnek — a túl gyakori frissítés lemeríti az akkumulátort.

Glance API (Jetpack) — modern megközelítés

A Glance API egy Jetpack könyvtár widgetek létrehozásához Kotlin DSL használatával XML helyett. Glance API RemoteViews-be fordul, és Compose-szerű szintaxist támogat: GlanceComposable, Column, Row, Text. A könyvtár megoldja a bonyolult XML kód problémáját, és lehetővé teszi a widgetek tesztelését JUnit-on keresztül. A Glance API még nem támogatja az összes RemoteViews funkciót — bonyolult interaktív widgetekhez a klasszikus megközelítés jobb. Az alkalmazáskiterjesztések a mobilfejlesztésben Androidon a Glance API felé fejlődnek, leegyszerűsítve a widgetek létrehozását és karbantartását.

Content Provider, FileProvider és adatmegosztás alkalmazások között

Content Provider egy Android-komponens strukturált adatok megosztására alkalmazások között egységes ContentResolver interfészen keresztül. Az iOS alkalmazáskiterjesztésekkel ellentétben a Content Provider nem hoz létre külön folyamatot — az adatok szinkron módon kerülnek lekérésre a hívó alkalmazás kontextusában. A Content Provider képezi az Android rendszerintegrációinak alapját: névjegyek, médiafájlok, naptár és szabványos alkalmazások használják adatok közzétételére.

FileProvider biztonságos fájlmegosztáshoz

A FileProvider a ContentProvider alosztálya biztonságos fájlátvitelhez alkalmazások között. FileProvider ideiglenes content:// URI-kat generál a közvetlen file:// útvonalak helyett, amelyek Android 7+ rendszeren tiltottak. Használatához meg kell adni a files-path vagy external-files-path paramétert az XML konfigurációban. Az alkalmazáskiterjesztések a mobilfejlesztésben Androidon nem léteznek külön koncepcióként, de a FileProvider betölti a funkciójukat — az adatmegosztási képességeket egyetlen alkalmazáson túlra bővíti.

iOS megfelelő: File Provider Extension

iOS-en a fájlmegosztás szerepét a File Provider Extension tölti be. File Provider Extension közzéteszi az alkalmazás fájljait a Fájlok alkalmazásban NSFileProviderManager-en keresztül. A FileProvider-rel ellentétben az iOS kiterjesztés külön bináris fájlt igényel, és izolált folyamatban fut. A File Provider Extension támogatja az NSFileProviderItem-et fájlok leírásához és az NSFileProviderEnumerator-t mappákban való navigációhoz. A File Provider Extension-en keresztüli rendszerintegrációk a mobilalkalmazásokban lehetővé teszik a felhasználó számára, hogy az alkalmazás fájljait a Fájlok alkalmazásból kezelje anélkül, hogy megnyitná azt.

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

A példa egy minimális File Provider Extension implementációt mutat Swift-ben. A item(for:) metódus egy NSFileProviderItem objektumot ad vissza azonosító alapján — a rendszer ezt hívja meg a fájlok Fájlok alkalmazásban való megjelenítésekor.

Gyakran ismételt kérdések

Mik az alkalmazáskiterjesztések iOS-en?

Alkalmazáskiterjesztések külön bináris fájlok, amelyek az alkalmazás funkcionalitását a folyamatán túlra bővítik: Today Widget, Share Extension, Action Extension, Keyboard Extension és más típusok, amelyek izolált környezetben futnak.

Miben különbözik a CallKit a PushKit-től?

A CallKit integrálja a VoIP-hívásokat a rendszer hívásfelületébe a zárolt képernyőn való megjelenítéssel. A PushKit háttérbeli push értesítéseket szállít anélkül, hogy megjelenítené azokat a felhasználónak — felébreszti az alkalmazást adatok feldolgozásához, mint például a bejövő hívással kapcsolatos információk.

Mi a BroadcastReceiver Androidon?

BroadcastReceiver egy Android-komponens, amely reagál a rendszer broadcast üzeneteire: eszköz indítás (BOOT_COMPLETED), hálózati kapcsolat (CONNECTIVITY_ACTION), repülőgép mód változások és egyéb operációs rendszer események.

Hogyan hozhatok létre widgetet Androidon?

Használja az AppWidgetProvider-t RemoteViews-szal a widget felületének létrehozásához vagy a Glance API-t (Jetpack) a Kotlin DSL megközelítéshez. A widget a manifestben regisztrálódik egy XML leíráson keresztül, amely meghatározza a méretet és a frissítési gyakoriságot.

Mire használják a Content Provider-t?

Content Provider egy Android-komponens adatok megosztására alkalmazások között ContentResolver-en keresztül. Névjegyek, médiafájlok és bármilyen strukturált adat elérésére használják más alkalmazásokból.

Összefoglalás

  • Alkalmazáskiterjesztések — a rendszerintegrációk alapja iOS-en: widgetek, megosztás, tartalomfeldolgozás és billentyűzetkiterjesztések izolált folyamatokban
  • CallKit és PushKit — egy keretrendszer-pár VoIP-hívásokhoz: PushKit szállítja az adatokat, CallKit megjeleníti a hívásfelületet
  • BroadcastReceiver — az alkalmazáskiterjesztések Android megfelelője rendszereseményekre való reagálához külön bináris fájl nélkül
  • AppWidgetProvider — egy komponens widgetekhez Androidon RemoteViews és Glance API támogatással
  • Content Provider és FileProvider — adatmegosztási mechanizmusok alkalmazások között Androidon ContentResolver-en keresztül
  • File Provider Extension — a FileProvider iOS megfelelője fájlok közzétételéhez a Fájlok alkalmazásban izolált folyamatból
  • Rendszerintegrációk a mobilfejlesztésben egyesítik az alkalmazáskiterjesztéseket, BroadcastReceiver-t, CallKit-et és Content Provider-t egyetlen ökoszisztémá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