AppDelegate এবং SceneDelegate iOS অ্যাপ্লিকেশনে অ্যাপের লাইফসাইকেল এবং ইউআই (User Interface) ম্যানেজমেন্টের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে। iOS 13 থেকে SceneDelegate নামে একটি নতুন উপাদান যোগ করা হয় যা মূলত মাল্টি-উইন্ডো সাপোর্ট এবং UI ম্যানেজমেন্ট সহজ করার জন্য ব্যবহৃত হয়। নিচে এদের ভূমিকা বিস্তারিতভাবে আলোচনা করা হলো:
1. AppDelegate:
AppDelegate হলো একটি ক্লাস যা UIApplication ডেলিগেটের মাধ্যমে অ্যাপ্লিকেশনের লাইফসাইকেল ইভেন্টগুলো পরিচালনা করে। এটি এমন ইভেন্টগুলির জন্য দায়ী যা অ্যাপ্লিকেশন লঞ্চ হওয়া, ব্যাকগ্রাউন্ডে যাওয়া, বা অ্যাপ্লিকেশন বন্ধ হওয়ার সময় ঘটে। iOS 12 পর্যন্ত AppDelegate অ্যাপ্লিকেশনের ইউআই এবং লাইফসাইকেল ম্যানেজমেন্টের জন্য প্রাথমিক উপাদান ছিল। iOS 13-এর পর কিছু দায়িত্ব SceneDelegate-এর কাছে স্থানান্তরিত হয়।
AppDelegate-এর ভূমিকা:
- অ্যাপ্লিকেশন লঞ্চ করা এবং প্রাথমিক সেটআপ সম্পন্ন করা।
- ব্যাকগ্রাউন্ড এবং ফোরগ্রাউন্ড ইভেন্টগুলো ম্যানেজ করা।
- রিমোট নোটিফিকেশন এবং লোকাল নোটিফিকেশন হ্যান্ডেল করা।
- অ্যাপ্লিকেশনের স্টেট মেইনটেইন করা।
- Core Data, Push Notification, এবং অন্যান্য অ্যাপ-লেভেল কনফিগারেশন সেটআপ করা।
গুরুত্বপূর্ণ মেথড:
application(_:didFinishLaunchingWithOptions:): অ্যাপটি লঞ্চ হওয়ার পর প্রাথমিক সেটআপের জন্য ব্যবহৃত হয়।applicationDidEnterBackground(_:): অ্যাপটি ব্যাকগ্রাউন্ডে গেলে ব্যবহৃত হয়, যেখানে ডেটা সেভ করা বা ব্যাকগ্রাউন্ড টাস্ক শুরু করা হয়।applicationWillEnterForeground(_:): অ্যাপটি ফোরগ্রাউন্ডে ফিরে আসার সময় সেটআপের জন্য ব্যবহৃত হয়।application(_:didReceiveRemoteNotification:): রিমোট নোটিফিকেশন বা পুশ নোটিফিকেশন হ্যান্ডেল করার জন্য ব্যবহৃত হয়।
2. SceneDelegate (iOS 13 এবং পরবর্তী সংস্করণে):
iOS 13 থেকে অ্যাপল SceneDelegate নামে একটি নতুন উপাদান যোগ করে যা অ্যাপ্লিকেশনের UI ম্যানেজমেন্ট এবং মাল্টি-উইন্ডো সাপোর্ট পরিচালনা করে। এটি UISceneDelegate প্রোটোকলের মাধ্যমে কাজ করে এবং প্রতিটি দৃশ্য বা Scene ম্যানেজ করার জন্য দায়ী। iPadOS-এ মাল্টি-উইন্ডো অ্যাপ্লিকেশনের জন্য এটি বিশেষভাবে গুরুত্বপূর্ণ।
SceneDelegate-এর ভূমিকা:
- প্রতিটি দৃশ্যের (Scene) UI লাইফসাইকেল ম্যানেজ করা।
- উইন্ডো তৈরি করা এবং তার কনফিগারেশন সেটআপ করা।
- মাল্টি-উইন্ডো সাপোর্ট নিশ্চিত করা (বিশেষত iPadOS-এর জন্য)।
- ব্যাকগ্রাউন্ড, ফোরগ্রাউন্ড, এবং অন্যান্য স্টেট পরিবর্তনের সময় প্রতিটি Scene-এর জন্য ইভেন্ট হ্যান্ডেল করা।
গুরুত্বপূর্ণ মেথড:
scene(_:willConnectTo:options:): একটি নতুন Scene তৈরি হলে এটি কল হয় এবং UI সেটআপ করা হয়।sceneDidDisconnect(_:): একটি Scene ডিসকানেক্ট হলে (যেমন ব্যাকগ্রাউন্ডে চলে গেলে) এটি কল হয়।sceneDidBecomeActive(_:): Scene অ্যাক্টিভ হলে (ফোরগ্রাউন্ডে এলে) এটি কল হয়।sceneWillResignActive(_:): Scene ইনঅ্যাক্টিভ হলে এটি কল হয়।sceneDidEnterBackground(_:): Scene ব্যাকগ্রাউন্ডে গেলে এটি কল হয়।
AppDelegate এবং SceneDelegate-এর মধ্যে পার্থক্য:
- AppDelegate এখন অ্যাপ্লিকেশনের লেভেলে ইভেন্টগুলো পরিচালনা করে, যেমন অ্যাপ লঞ্চ করা, নোটিফিকেশন রিসিভ করা, এবং প্রাথমিক কনফিগারেশন।
- SceneDelegate প্রতিটি Scene বা UI উইন্ডোকে ম্যানেজ করে। এটি UI-এর পরিবর্তন এবং মাল্টি-উইন্ডো অ্যাপ্লিকেশন হ্যান্ডেল করার জন্য ব্যবহৃত হয়।
কেন SceneDelegate গুরুত্বপূর্ণ:
- iPadOS-এ মাল্টি-উইন্ডো সাপোর্ট দেয়, যা ব্যবহারকারীদের একাধিক অ্যাপ উইন্ডো ব্যবহার করতে দেয়।
- iPhone-এও এটি একই ধরনের ব্যবস্থাপনা নিশ্চিত করে, যদিও সেখানে একাধিক উইন্ডো সাপোর্ট সীমিত।
উদাহরণ:
AppDelegate এবং SceneDelegate-এর মধ্যে সম্পর্ক নিম্নরূপ:
- AppDelegate অ্যাপ্লিকেশনের সাধারণ ইভেন্টগুলো ম্যানেজ করে (যেমন, লঞ্চ করা, নোটিফিকেশন গ্রহণ)।
- SceneDelegate অ্যাপ্লিকেশনের UI এবং প্রতিটি Scene-এর ইভেন্ট ম্যানেজ করে (যেমন, Scene অ্যাক্টিভ বা ইনঅ্যাক্টিভ হওয়া)।
AppDelegate-এ অ্যাপ্লিকেশন লঞ্চ হলে SceneDelegate Scene তৈরি করে এবং সেটি প্রদর্শন করে। প্রতিটি Scene-কে আলাদাভাবে ম্যানেজ করা হয়, তাই মাল্টি-উইন্ডো অ্যাপ্লিকেশনগুলো আরও কার্যকরী এবং সুনির্দিষ্টভাবে কনফিগার করা যায়।
সারসংক্ষেপ:
- AppDelegate: অ্যাপ্লিকেশনের উচ্চ-লেভেল ইভেন্ট এবং স্টেট ম্যানেজমেন্ট।
- SceneDelegate: প্রতিটি Scene বা UI উইন্ডোর জন্য স্টেট এবং ইভেন্ট ম্যানেজমেন্ট।
এই নতুন ডিজাইনের মাধ্যমে iOS অ্যাপ্লিকেশন ডেভেলপমেন্ট আরও মডুলার এবং স্কেলেবল হয়েছে, বিশেষ করে মাল্টি-উইন্ডো সমর্থনের ক্ষেত্রে।
Read more