Ilova Kengaytmalari mobil ilovaning imkoniyatlarini asosiy interfeysidan tashqariga kengaytiradigan alohida bajariladigan modullardir: Bosh ekranda Today Widget, CallKit orqali VoIP qo'ng'iroqlarini qayta ishlash va BroadcastReceiver orqali tizim hodisalariga reaksiya. Tizim integratsiyalari ilovaga operatsion tizim bilan chuqur darajada o'zaro aloqa qilish imkonini beradi, oddiy ekranlar uchun mavjud bo'lmagan funksiyalarni ochadi. Apple Developer Hujjatlariga ko'ra, har bir kengaytma izolyatsiyalangan jarayonda ishlaydi va asosiy ilovadan mustaqil ravishda tizim tomonidan boshqariladi. Mobil ilovadagi Ilova Kengaytmalari asosiy jarayonda mavjud bo'lmagan funksiyalarni amalga oshirish imkonini beradi.
Asosiy Nuqtalar
iOS-dagi Ilova Kengaytmalari iOS 8 da paydo bo'ldi va mobil ishlab chiqishda tizim integratsiyalarining asosiga aylandi. Bular asosiy ilova bilan birga to'plangan, ammo izolyatsiyalangan jarayonda ishga tushiriladigan alohida ikkilik fayllardir. Har bir kengaytmaning o'z Info.plist va NSExtensionPrincipalClass orqali belgilangan kirish nuqtasi bor. Tizim Ilova Kengaytmalarining hayot aylanishini boshqaradi — ular vazifani tugatgandan so'ng fonda qololmaydi.
WidgetKit (iOS 14+) bosh ekranda vidjetlar yaratish uchun zamonaviy freymvorkdir. WidgetKit interfeys tavsifi uchun SwiftUI va yangilanish jadvallarini belgilash uchun TimelineProvider dan foydalanadi. Vidjetlar uchta o'lchamda bo'ladi: kichik (2×2 katak), o'rtacha (4×2) va katta (4×4). UICollectionViewController asosidagi eski Today Widget hali ham qo'llab-quvvatlanadi, ammo Apple WidgetKit ga o'tishni tavsiya qiladi. WidgetKit-dagi Ilova Kengaytmalari animatsiya, klaviatura kiritishi yoki imo-ishoralarni qo'llab-quvvatlamaydi — bular davriy yangilanishlar bilan statik yoki psevdoanimatsiyalangan elementlardir.
Share Extension tizim almashish varag'i orqali istalgan ilovadan sizning ilovangizga kontent yuborish imkonini beradi. Share Extension NSExtensionItem orqali ma'lumot oladi va interfeys uchun SLComposeServiceViewController dan foydalanadi. Action Extension kontentni joyida qayta ishlaydi — masalan, boshqa ilovaga o'tmasdan brauzerda matnni tarjima qiladi. Ikkala tur ham cheklangan vaqt ichida ishni tugatishi kerak, aks holda tizim kengaytmani "o'ldiradi". Bu mobil ilovadagi Ilova Kengaytmalarining muhim cheklovidir — fon vazifalari kengaytma darajasida mavjud emas.
iOS-dagi Tizim Integratsiyalari vidjetlardan ancha uzoqqa boradi: CallKit, PushKit va SiriKit mobil ilovaga tizim darajasida ishlash imkonini beradi. Bu freymvorklar maxsus ruxsatnomalarni talab qiladi, ammo foydalanuvchiga muammosiz tajriba beradi — CallKit orqali qo'ng'iroqlar oddiy telefon qo'ng'iroqlariga o'xshaydi va Siri ilovani ochmasdan so'rovlarni qayta ishlaydi.
CallKit uchinchi tomon ilova qo'ng'iroqlarini qulflangan ekran hamda sistem qo'ng'iroq ekraniga integratsiya qiladi. CXProvider ilovani VoIP xizmati sifatida ro'yxatdan o'tkazadi va CXCallController qo'ng'iroqlarni boshqaradi. CallKit avtomatik ravishda takrorlanuvchi qo'ng'iroqlarni bloklaydi va istalmagan raqamlarni bloklash uchun Call Directory Extension ni qo'llab-quvvatlaydi. CallKit bilan mobil ishlab chiqishda tizim integratsiyalari ovozli aloqa ilovalari uchun juda muhim — WhatsApp, Skype va Zoom kiruvchi qo'ng'iroqlarni ko'rsatish uchun undan foydalanadi.
PushKit push bildirishnomalarini foydalanuvchiga ko'rsatmasdan to'g'ridan-to'g'ri mobil ilovaga yetkazadi. PushKit ilovani "o'ldirilgan" holatdan uyg'otadi va PKPushRegistryDelegate orqali ma'lumotlarni uzatadi. Bu VoIP ilovalari uchun asosiy mexanizmdir: PushKit qo'ng'iroq ma'lumotini yetkazadi va CallKit uni ko'rsatadi. PushKit oddiy push bildirishnomalaridan yuqori yetkazib berish ustuvorligiga ega va banner ko'rsatishni talab qilmaydi. Mobil ilovalardagi Ilova Kengaytmalari tez-tez ovozli aloqa uchun PushKit ni CallKit bilan birlashtiradi.
SiriKit Siri va Yorliqlar ilovasi orqali so'rovlarni qayta ishlash imkonini beradi. Intents Extension qo'llab-quvvatlanadigan niyatlarni ro'yxatdan o'tkazadigan va qayta ishlaydigan alohida Ilova Kengaytmasidir. SiriKit 20+ domenni qo'llab-quvvatlaydi: qo'ng'iroqlar, xabarlar, to'lovlar, eslatmalar, mashqlar. Yorliqlar foydalanuvchiga avtomatlashtirish yaratish imkonini beradi — masalan, "Siri orqali WhatsApp da xabar yuborish." SiriKit va Yorliqlar bilan tizim integratsiyalari foydalanuvchi ilovani ochmasdan harakatlarni bajargani uchun jalb qilishni oshiradi.
BroadcastReceiver tizim broadcast xabarlariga reaksiya beruvchi Android komponentidir. iOS Ilova Kengaytmalaridan farqli o'laroq, BroadcastReceiver alohida ikkilik fayl talab qilmaydi — manifestda yoki Context.registerReceiver orqali kodda qabul qilgichni ro'yxatdan o'tkazish kifoya. Android-dagi tizim integratsiyalari tez-tez BroadcastReceiver bilan boshlanadi: qurilma yuklanganda xizmatni ishga tushirishdan tarmoq ulanishiga reaksiya berishgacha.
IntentFilter BroadcastReceiver ni ma'lum bir tizim hodisasiga bog'laydi. Odatiy hodisalar: BOOT_COMPLETED (qurilma yuklanishi), CONNECTIVITY_ACTION (tarmoq o'zgarishi), BATTERY_LOW (batareya past), TIME_SET (vaqt o'zgarishi). Qabul qilgich AndroidManifest.xml da yoki dinamik ro'yxatdan o'tkazish uchun Context.registerReceiver orqali ro'yxatdan o'tkaziladi. Dinamik ro'yxatdan o'tkazish afzalroq — manifestda ruxsat talab qilmaydi va faqat ilova faol bo'lganda ishlaydi. Android-da Ilova Kengaytmalari kontseptsiya sifatida mavjud emas, ammo BroadcastReceiver o'xshash rol o'ynaydi — tizim integratsiyalari orqali ilova imkoniyatlarini kengaytiradi.
NotificationListenerService barcha tizim bildirishnomalarini qabul qiluvchi xizmatdir. NotificationListenerService BIND_NOTIFICATION_LISTENER_SERVICE ruxsatini va maxsus imkoniyatlar sozlamalari orqali kirishni talab qiladi. AccessibilityService tizim integratsiyasi uchun yanada kuchli vositadir: ekran tarkibini o'qishi, bosishlarni simulyatsiya qilishi va harakatlarni avtomatlashtirishi mumkin. Ikkala xizmat ham sozlamalarda foydalanuvchi tomonidan aniq yoqilishini talab qiladi, bu xavfsizlikni oshiradi. AccessibilityService orqali mobil ilovalardagi tizim integratsiyalari avto-to'ldiruvchilar, ekran o'quvchilar va maxsus imkoniyatlar vositalari uchun ishlatiladi.
class BootReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
WorkManager.getInstance(context)
.enqueueUniqueWork("post-boot", ...)
}
}
}
Misol BOOT_COMPLETED hodisasi uchun BroadcastReceiver ni ro'yxatdan o'tkazadi. WorkManager qurilma yuklangandan keyin kechiktirilgan vazifalarni bajarish uchun ishlatiladi — bu Android ilovalari uchun standart yondashuvdir.
Android-dagi App Widget Provider vidjet kontekstida iOS Ilova Kengaytmalarining muqobilidir: bosh ekranda interaktiv kontentni ko'rsatuvchi komponentdir. WidgetKit dan farqli o'laroq, Android vidjetlari foydalanuvchi kiritishini — bosishlar, kalitlar va imo-ishoralarni qabul qilishi mumkin. App Widget Provider o'lcham va yangilanish chastotasining XML tavsifi orqali manifestda ro'yxatdan o'tkaziladi.
RemoteViews vidjet interfeysini XML layout orqali tasvirlaydi va faqat cheklangan View to'plamini qo'llab-quvvatlaydi. RemoteViews maxsus View larni ruxsat bermaydi — faqat standart komponentlar: TextView, ImageView, Button, ProgressBar. AppWidgetProvider vidjet yangilanishlari, yoqilishi va o'chirilishini boshqaruvchi asosiy sinfdir. onUpdate metodi updatePeriodMillis orqali taymer yoki aniq nazorat uchun WorkManager orqali chaqiriladi. Android-da vidjetlar bilan tizim integratsiyalari ehtiyotkorlikni talab qiladi — juda tez-tez yangilanish batareyani tugatadi.
Glance API XML o'rniga Kotlin DSL yordamida vidjetlar yaratish uchun Jetpack kutubxonasidir. Glance API RemoteViews ga kompilyatsiya qilinadi va Composer ga o'xshash sintaksisni qo'llab-quvvatlaydi: GlanceComposable, Column, Row, Text. Kutubxona murakkab XML kodi muammosini hal qiladi va JUnit orqali vidjetlarni sinab ko'rish imkonini beradi. Glance API hali barcha RemoteViews xususiyatlarini qo'llab-quvvatlamaydi — murakkab interaktiv vidjetlar uchun klassik yondashuv yaxshiroq. Android-da mobil ishlab chiqishda Ilova Kengaytmalari vidjet yaratish va saqlashni soddalashtiradigan Glance API tomon rivojlanmoqda.
Content Provider yagona ContentResolver interfeysi orqali ilovalar o'rtasida tuzilgan ma'lumotlarni almashish uchun Android komponentidir. iOS Ilova Kengaytmalaridan farqli o'laroq, Content Provider alohida jarayon yaratmaydi — ma'lumot chaqiruvchi ilova kontekstida sinxron ravishda so'raladi. Content Provider Android-da tizim integratsiyalarining asosidir: kontaktlar, media fayllar, kalendar va standart ilovalar ma'lumotlarni nashr qilish uchun undan foydalanadi.
FileProvider ilovalar o'rtasida xavfsiz fayl uzatish uchun ContentProvider ning pastki sinfidir. FileProvider Android 7+ da taqiqlangan to'g'ridan-to'g'ri file:// yo'llari o'rniga vaqtinchalik content:// URI larni yaratadi. Foydalanish uchun XML konfiguratsiyada files-path yoki external-files-path ko'rsatish kerak. Android-da mobil ishlab chiqishda Ilova Kengaytmalari alohida kontseptsiya sifatida mavjud emas, ammo FileProvider ularning funksiyasini bajaradi — ma'lumot almashish imkoniyatlarini bitta ilovadan tashqariga kengaytiradi.
iOS-da fayl almashish rolini File Provider Extension bajaradi. File Provider Extension NSFileProviderManager orqali ilova fayllarini Fayllar ilovasida nashr qiladi. FileProvider dan farqli o'laroq, iOS kengaytmasi alohida ikkilik fayl talab qiladi va izolyatsiyalangan jarayonda ishlaydi. File Provider Extension fayl tavsifi uchun NSFileProviderItem va papka navigatsiyasi uchun NSFileProviderEnumerator ni qo'llab-quvvatlaydi. File Provider Extension orqali mobil ilovalardagi tizim integratsiyalari foydalanuvchiga ilovani ochmasdan Fayllar ilovasidan ilova fayllarini boshqarish imkonini beradi.
class MyFileProviderExtension: NSFileProviderExtension {
override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {
return MyFileProviderItem(identifier: identifier)
}
}
Misol Swift da File Provider Extension ning minimal amalga oshirilishini ko'rsatadi. item(for:) metodi identifikator bo'yicha NSFileProviderItem obyektini qaytaradi — tizim Fayllar ilovasida fayllarni ko'rsatishda uni chaqiradi.
Tez-tez beriladigan savollar
Ilova Kengaytmalari ilova funksionalligini uning jarayonidan tashqariga kengaytiruvchi alohida ikkilik fayllardir: Today Widget, Share Extension, Action Extension, Keyboard Extension va izolyatsiyalangan muhitda ishlaydigan boshqa turlar.
CallKit VoIP qo'ng'iroqlarini tizim qo'ng'iroq interfeysiga qulflangan ekranda ko'rsatish bilan integratsiya qiladi. PushKit fon push bildirishnomalarini foydalanuvchiga ko'rsatmasdan yetkazadi — kiruvchi qo'ng'iroq haqidagi ma'lumot kabi ma'lumotlarni qayta ishlash uchun ilovani uyg'otadi.
BroadcastReceiver tizim broadcast xabarlariga reaksiya beruvchi Android komponentidir: qurilma yuklanishi (BOOT_COMPLETED), tarmoq ulanishi (CONNECTIVITY_ACTION), samolyot rejimi o'zgarishlari va boshqa OS hodisalari.
Vidjet interfeysini yaratish uchun AppWidgetProvider ni RemoteViews bilan yoki Kotlin DSL yondashuvi uchun Glance API (Jetpack) dan foydalaning. Vidjet o'lcham va yangilanish chastotasini belgilovchi XML tavsifi orqali manifestda ro'yxatdan o'tkaziladi.
Content Provider ContentResolver orqali ilovalar o'rtasida ma'lumot almashish uchun Android komponentidir. Kontaktlar, media fayllar va boshqa ilovalardan tuzilgan ma'lumotlarga kirish uchun ishlatiladi.
Xulosa
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.