অ্যাপ এক্সটেনশন হল পৃথক এক্সিকিউটেবল মডিউল যা মোবাইল অ্যাপের ক্ষমতাকে তার মূল ইন্টারফেসের বাইরে প্রসারিত করে: হোম স্ক্রিনে Today Widget, CallKit-এর মাধ্যমে VoIP কল হ্যান্ডলিং এবং BroadcastReceiver-এর মাধ্যমে সিস্টেম ইভেন্টে প্রতিক্রিয়া। সিস্টেম ইন্টিগ্রেশন অ্যাপকে অপারেটিং সিস্টেমের সাথে গভীর স্তরে ইন্টারঅ্যাক্ট করতে দেয়, সাধারণ স্ক্রিনের জন্য অনুপলব্ধ বৈশিষ্ট্যগুলি আনলক করে। Apple ডেভেলপার ডকুমেন্টেশন অনুসারে, প্রতিটি এক্সটেনশন একটি বিচ্ছিন্ন প্রক্রিয়ায় চলে এবং মূল অ্যাপ থেকে স্বাধীনভাবে সিস্টেম দ্বারা পরিচালিত হয়। মোবাইল অ্যাপে অ্যাপ এক্সটেনশন মূল প্রক্রিয়ায় অনুপলব্ধ বৈশিষ্ট্যগুলি বাস্তবায়নের অনুমতি দেয়।
মূল পয়েন্ট
iOS-এ অ্যাপ এক্সটেনশন iOS 8-এ আবির্ভূত হয় এবং মোবাইল ডেভেলপমেন্টে সিস্টেম ইন্টিগ্রেশনের ভিত্তি হয়ে ওঠে। এগুলি পৃথক বাইনারি যা মূল অ্যাপের সাথে বান্ডিল করা হয় কিন্তু একটি বিচ্ছিন্ন প্রক্রিয়ায় চালু হয়। প্রতিটি এক্সটেনশনের নিজস্ব Info.plist এবং NSExtensionPrincipalClass-এর মাধ্যমে সংজ্ঞায়িত এন্ট্রি পয়েন্ট থাকে। সিস্টেম অ্যাপ এক্সটেনশনের লাইফসাইকেল পরিচালনা করে — এগুলি কাজ শেষ করার পরে ব্যাকগ্রাউন্ডে থাকতে পারে না।
WidgetKit (iOS 14+) হোম স্ক্রিনে উইজেট তৈরির জন্য একটি আধুনিক ফ্রেমওয়ার্ক। WidgetKit ইন্টারফেস বর্ণনার জন্য SwiftUI এবং আপডেট সময়সূচী নির্ধারণের জন্য TimelineProvider ব্যবহার করে। উইজেট তিনটি আকারে আসে: ছোট (2×2 সেল), মাঝারি (4×2) এবং বড় (4×4)। UICollectionViewController-ভিত্তিক পুরানো Today Widget এখনও সমর্থিত, তবে Apple WidgetKit-এ মাইগ্রেট করার পরামর্শ দেয়। WidgetKit-এ অ্যাপ এক্সটেনশন অ্যানিমেশন, কীবোর্ড ইনপুট বা জেসচার সমর্থন করে না — এগুলি পর্যায়ক্রমিক আপডেট সহ স্থির বা ছদ্ম-অ্যানিমেটেড উপাদান।
Share Extension সিস্টেম শেয়ার শীটের মাধ্যমে যেকোনো অ্যাপ থেকে আপনার অ্যাপে কন্টেন্ট পাঠানোর অনুমতি দেয়। Share Extension NSExtensionItem-এর মাধ্যমে ডেটা গ্রহণ করে এবং UI-র জন্য SLComposeServiceViewController ব্যবহার করে। Action Extension স্থানে কন্টেন্ট প্রক্রিয়া করে — উদাহরণস্বরূপ, অন্য অ্যাপে স্যুইচ না করেই ব্রাউজারে টেক্সট অনুবাদ করে। উভয় প্রকারকে সীমিত সময়ের মধ্যে কাজ সম্পূর্ণ করতে হবে, অন্যথায় সিস্টেম এক্সটেনশনটিকে "কিল" করে। এটি মোবাইল অ্যাপে অ্যাপ এক্সটেনশনের একটি গুরুত্বপূর্ণ সীমাবদ্ধতা — ব্যাকগ্রাউন্ড কাজ এক্সটেনশন স্তরে উপলব্ধ নয়।
iOS-এ সিস্টেম ইন্টিগ্রেশন উইজেটের বাইরেও অনেক দূর এগিয়ে যায়: CallKit, PushKit এবং SiriKit মোবাইল অ্যাপকে সিস্টেম স্তরে কাজ করতে দেয়। এই ফ্রেমওয়ার্কগুলির বিশেষ entitlements প্রয়োজন কিন্তু ব্যবহারকারীকে একটি নিরবচ্ছিন্ন অভিজ্ঞতা দেয় — CallKit-এর মাধ্যমে কলগুলি সাধারণ ফোন কলের মতো দেখায় এবং Siri অ্যাপ না খুলেই অনুরোধগুলি প্রক্রিয়া করে।
CallKit তৃতীয় পক্ষের অ্যাপ কলগুলিকে সিস্টেম কল স্ক্রিনে একীভূত করে, লক করা স্ক্রিন সহ। CXProvider অ্যাপটিকে VoIP পরিষেবা হিসাবে নিবন্ধন করে এবং CXCallController কল পরিচালনা করে। CallKit স্বয়ংক্রিয়ভাবে ডুপ্লিকেট কল ব্লক করে এবং অবাঞ্ছিত নম্বর ব্লক করার জন্য Call Directory Extension সমর্থন করে। CallKit-এর সাথে মোবাইল ডেভেলপমেন্টে সিস্টেম ইন্টিগ্রেশন ভয়েস কমিউনিকেশন অ্যাপের জন্য গুরুত্বপূর্ণ — WhatsApp, Skype এবং Zoom ইনকামিং কল প্রদর্শনের জন্য এটি ব্যবহার করে।
PushKit ব্যবহারকারীকে না দেখিয়ে সরাসরি মোবাইল অ্যাপে পুশ বিজ্ঞপ্তি পৌঁছে দেয়। PushKit অ্যাপটিকে "কিলড" অবস্থা থেকে জাগিয়ে তোলে এবং PKPushRegistryDelegate-এর মাধ্যমে ডেটা পাস করে। এটি VoIP অ্যাপের জন্য প্রাথমিক প্রক্রিয়া: PushKit কল তথ্য পৌঁছে দেয় এবং CallKit এটি প্রদর্শন করে। PushKit-এর সাধারণ পুশ বিজ্ঞপ্তির চেয়ে উচ্চ ডেলিভারি অগ্রাধিকার রয়েছে এবং ব্যানার দেখানোর প্রয়োজন নেই। মোবাইল অ্যাপে অ্যাপ এক্সটেনশন প্রায়শই ভয়েস কমিউনিকেশনের জন্য PushKit-কে CallKit-এর সাথে একত্রিত করে।
SiriKit Siri এবং শর্টকাট অ্যাপের মাধ্যমে অনুরোধ প্রক্রিয়া করার অনুমতি দেয়। Intents Extension একটি পৃথক অ্যাপ এক্সটেনশন যা সমর্থিত ইন্টেন্ট নিবন্ধন করে এবং সেগুলি প্রক্রিয়া করে। SiriKit 20+ ডোমেন সমর্থন করে: কল, বার্তা, পেমেন্ট, নোট, ওয়ার্কআউট। শর্টকাট ব্যবহারকারীকে অটোমেশন তৈরি করতে দেয় — উদাহরণস্বরূপ, "Siri-এর মাধ্যমে WhatsApp-এ বার্তা পাঠান।" SiriKit এবং শর্টকাটের সাথে সিস্টেম ইন্টিগ্রেশন ব্যস্ততা বাড়ায় কারণ ব্যবহারকারী অ্যাপ না খুলেই কাজ করে।
BroadcastReceiver একটি Android উপাদান যা সিস্টেম ব্রডকাস্ট বার্তায় প্রতিক্রিয়া জানায়। iOS অ্যাপ এক্সটেনশনের বিপরীতে, BroadcastReceiver-এর আলাদা বাইনারির প্রয়োজন নেই — ম্যানিফেস্টে বা Context.registerReceiver-এর মাধ্যমে কোডে রিসিভার নিবন্ধন করা যথেষ্ট। Android-এ সিস্টেম ইন্টিগ্রেশন প্রায়শই BroadcastReceiver দিয়ে শুরু হয়: ডিভাইস বুটে পরিষেবা শুরু করা থেকে নেটওয়ার্ক সংযোগে প্রতিক্রিয়া জানানো পর্যন্ত।
IntentFilter BroadcastReceiver-কে একটি নির্দিষ্ট সিস্টেম ইভেন্টের সাথে আবদ্ধ করে। সাধারণ ইভেন্ট: BOOT_COMPLETED (ডিভাইস বুট), CONNECTIVITY_ACTION (নেটওয়ার্ক পরিবর্তন), BATTERY_LOW (কম ব্যাটারি), TIME_SET (সময় পরিবর্তন)। রিসিভার AndroidManifest.xml-এ বা ডায়নামিক নিবন্ধনের জন্য Context.registerReceiver-এর মাধ্যমে নিবন্ধিত হয়। ডায়নামিক নিবন্ধন পছন্দনীয় — এটির ম্যানিফেস্টে অনুমতির প্রয়োজন নেই এবং এটি কেবল অ্যাপ সক্রিয় থাকাকালীন কাজ করে। Android-এ অ্যাপ এক্সটেনশন একটি ধারণা হিসাবে বিদ্যমান নয়, কিন্তু BroadcastReceiver অনুরূপ ভূমিকা পালন করে — এটি সিস্টেম ইন্টিগ্রেশনের মাধ্যমে অ্যাপ ক্ষমতা প্রসারিত করে।
NotificationListenerService একটি পরিষেবা যা সমস্ত সিস্টেম বিজ্ঞপ্তি গ্রহণ করে। NotificationListenerService-এর BIND_NOTIFICATION_LISTENER_SERVICE অনুমতি এবং অ্যাক্সেসিবিলিটি সেটিংসের মাধ্যমে অ্যাক্সেস প্রয়োজন। AccessibilityService সিস্টেম ইন্টিগ্রেশনের জন্য আরও শক্তিশালী টুল: এটি স্ক্রিন কন্টেন্ট পড়তে, ক্লিক অনুকরণ করতে এবং কাজগুলি স্বয়ংক্রিয় করতে পারে। উভয় পরিষেবার জন্য সেটিংসে ব্যবহারকারী দ্বারা স্পষ্টভাবে সক্ষম করা প্রয়োজন, যা নিরাপত্তা বাড়ায়। AccessibilityService-এর মাধ্যমে মোবাইল অ্যাপে সিস্টেম ইন্টিগ্রেশন অটো-ফিলার, স্ক্রিন রিডার এবং অ্যাক্সেসিবিলিটি টুলের জন্য ব্যবহৃত হয়।
class BootReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
WorkManager.getInstance(context)
.enqueueUniqueWork("post-boot", ...)
}
}
}
উদাহরণটি BOOT_COMPLETED ইভেন্টের জন্য BroadcastReceiver নিবন্ধন করে। WorkManager ডিভাইস বুটের পরে বিলম্বিত কাজ সম্পাদনের জন্য ব্যবহৃত হয় — এটি Android অ্যাপের জন্য আদর্শ পদ্ধতি।
Android-এ App Widget Provider উইজেট প্রসঙ্গে iOS অ্যাপ এক্সটেনশনের সমতুল্য: এটি একটি উপাদান যা হোম স্ক্রিনে ইন্টারঅ্যাকটিভ কন্টেন্ট প্রদর্শন করে। WidgetKit-এর বিপরীতে, Android উইজেট ব্যবহারকারী ইনপুট — ক্লিক, টগল এবং জেসচার গ্রহণ করতে পারে। App Widget Provider আকার এবং আপডেট ফ্রিকোয়েন্সির XML বর্ণনার মাধ্যমে ম্যানিফেস্টে নিবন্ধিত হয়।
RemoteViews XML লেআউটের মাধ্যমে উইজেট ইন্টারফেস বর্ণনা করে এবং শুধুমাত্র সীমিত ভিউ সেট সমর্থন করে। RemoteViews কাস্টম ভিউ অনুমতি দেয় না — শুধুমাত্র স্ট্যান্ডার্ড উপাদান: TextView, ImageView, Button, ProgressBar। AppWidgetProvider বেস ক্লাস যা উইজেট আপডেট, সক্রিয়করণ এবং মুছে ফেলা পরিচালনা করে। onUpdate পদ্ধতি updatePeriodMillis-এর মাধ্যমে টাইমার দ্বারা বা সঠিক নিয়ন্ত্রণের জন্য WorkManager-এর মাধ্যমে কল করা হয়। Android-এ উইজেটের সাথে সিস্টেম ইন্টিগ্রেশনে সতর্কতা প্রয়োজন — খুব ঘন ঘন আপডেট ব্যাটারি নিষ্কাশন করে।
Glance API XML-এর পরিবর্তে Kotlin DSL ব্যবহার করে উইজেট তৈরির জন্য Jetpack লাইব্রেরি। Glance API RemoteViews-এ কম্পাইল হয় এবং Compose-এর মতো সিনট্যাক্স সমর্থন করে: GlanceComposable, Column, Row, Text। লাইব্রেরি জটিল XML কোডের সমস্যা সমাধান করে এবং JUnit-এর মাধ্যমে উইজেট পরীক্ষার অনুমতি দেয়। Glance API এখনও সমস্ত RemoteViews বৈশিষ্ট্য সমর্থন করে না — জটিল ইন্টারঅ্যাকটিভ উইজেটের জন্য ক্লাসিক পদ্ধতি ভাল। Android-এ মোবাইল ডেভেলপমেন্টে অ্যাপ এক্সটেনশন Glance API-র দিকে বিকশিত হচ্ছে, উইজেট তৈরি এবং রক্ষণাবেক্ষণ সহজ করছে।
Content Provider একটি ইউনিফাইড ContentResolver ইন্টারফেসের মাধ্যমে অ্যাপের মধ্যে কাঠামোবদ্ধ ডেটা ভাগ করার জন্য Android উপাদান। iOS অ্যাপ এক্সটেনশনের বিপরীতে, Content Provider আলাদা প্রক্রিয়া তৈরি করে না — কলিং অ্যাপের প্রসঙ্গে সিঙ্ক্রোনাসভাবে ডেটা অনুরোধ করা হয়। Content Provider Android-এ সিস্টেম ইন্টিগ্রেশনের ভিত্তি: পরিচিতি, মিডিয়া ফাইল, ক্যালেন্ডার এবং স্ট্যান্ডার্ড অ্যাপ ডেটা প্রকাশের জন্য এটি ব্যবহার করে।
FileProvider অ্যাপের মধ্যে নিরাপদ ফাইল স্থানান্তরের জন্য ContentProvider-এর একটি সাবক্লাস। FileProvider সরাসরি file:// পাথের পরিবর্তে অস্থায়ী content:// URI তৈরি করে, যা Android 7+-এ নিষিদ্ধ। ব্যবহারের জন্য, XML কনফিগারেশনে files-path বা external-files-path নির্দিষ্ট করতে হবে। Android-এ মোবাইল ডেভেলপমেন্টে অ্যাপ এক্সটেনশন একটি পৃথক ধারণা হিসাবে বিদ্যমান নয়, কিন্তু FileProvider তাদের কাজ করে — এটি একটি অ্যাপের বাইরে ডেটা ভাগ করার ক্ষমতা প্রসারিত করে।
iOS-এ, ফাইল ভাগ করার ভূমিকা File Provider Extension পালন করে। File Provider Extension NSFileProviderManager-এর মাধ্যমে অ্যাপের ফাইলগুলি Files অ্যাপে প্রকাশ করে। FileProvider-এর বিপরীতে, iOS এক্সটেনশনের একটি আলাদা বাইনারি প্রয়োজন এবং এটি একটি বিচ্ছিন্ন প্রক্রিয়ায় চলে। File Provider Extension ফাইল বর্ণনার জন্য NSFileProviderItem এবং ফোল্ডার নেভিগেশনের জন্য NSFileProviderEnumerator সমর্থন করে। File Provider Extension-এর মাধ্যমে মোবাইল অ্যাপে সিস্টেম ইন্টিগ্রেশন ব্যবহারকারীকে অ্যাপ না খুলেই Files অ্যাপ থেকে অ্যাপ ফাইলগুলি পরিচালনা করতে দেয়।
class MyFileProviderExtension: NSFileProviderExtension {
override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {
return MyFileProviderItem(identifier: identifier)
}
}
উদাহরণটি Swift-এ File Provider Extension-এর ন্যূনতম বাস্তবায়ন দেখায়। item(for:) পদ্ধতি শনাক্তকারী দ্বারা NSFileProviderItem অবজেক্ট ফেরত দেয় — Files অ্যাপে ফাইল প্রদর্শন করার সময় সিস্টেম এটি কল করে।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
অ্যাপ এক্সটেনশন হল পৃথক বাইনারি যা অ্যাপের কার্যকারিতা তার প্রক্রিয়ার বাইরে প্রসারিত করে: Today Widget, Share Extension, Action Extension, Keyboard Extension এবং অন্যান্য প্রকার যা একটি বিচ্ছিন্ন পরিবেশে চলে।
CallKit VoIP কলগুলিকে সিস্টেম কল ইন্টারফেসে লক করা স্ক্রিনে প্রদর্শনের সাথে একীভূত করে। PushKit ব্যবহারকারীকে না দেখিয়ে ব্যাকগ্রাউন্ড পুশ বিজ্ঞপ্তি পৌঁছে দেয় — এটি ডেটা প্রক্রিয়া করার জন্য অ্যাপকে জাগিয়ে তোলে, যেমন ইনকামিং কল সম্পর্কে তথ্য।
BroadcastReceiver একটি Android উপাদান যা সিস্টেম ব্রডকাস্ট বার্তায় প্রতিক্রিয়া জানায়: ডিভাইস বুট (BOOT_COMPLETED), নেটওয়ার্ক সংযোগ (CONNECTIVITY_ACTION), এয়ারপ্লেন মোড পরিবর্তন এবং অন্যান্য OS ইভেন্ট।
উইজেট ইন্টারফেস তৈরির জন্য AppWidgetProvider RemoteViews-এর সাথে বা Kotlin DSL পদ্ধতির জন্য Glance API (Jetpack) ব্যবহার করুন। উইজেট আকার এবং আপডেট ফ্রিকোয়েন্সি নির্দিষ্ট করে XML বর্ণনার মাধ্যমে ম্যানিফেস্টে নিবন্ধিত হয়।
Content Provider ContentResolver-এর মাধ্যমে অ্যাপের মধ্যে ডেটা ভাগ করার জন্য Android উপাদান। এটি পরিচিতি, মিডিয়া ফাইল এবং অন্যান্য অ্যাপ থেকে যেকোনো কাঠামোবদ্ধ ডেটা অ্যাক্সেসের জন্য ব্যবহৃত হয়।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।