Today Widget হল একটি iOS এক্সটেনশন যা নোটিফিকেশন সেন্টার বা “Today” স্ক্রিনে সরাসরি ইন্টারঅ্যাকটিভ তথ্য প্রদর্শন করে। ব্যবহারকারী মূল অ্যাপ না খুলেই আপ-টু-ডেট ডেটা — আবহাওয়া, মুদ্রার হার, ক্যালেন্ডার — দেখতে পান। Apple WWDC (2025) অনুসারে, iOS 17-এ ইন্টারঅ্যাকটিভ উইজেট চালু করার পর WidgetKit-এর ব্যবহার 40% বেড়েছে। Today Widget তথ্যে দ্রুত অ্যাক্সেসের সমস্যা সমাধান করে: স্ক্রিনে এক নজর — এবং ব্যবহারকারী অ্যাপে নেভিগেট না করেই প্রয়োজনীয় ডেটা পেয়ে যান।
মূল বিষয়
Today Widget (নোটিফিকেশন সেন্টার উইজেট নামেও পরিচিত) হল একটি iOS ইন্টারফেস উপাদান যা অ্যাপ না চালিয়েই তার সংক্ষিপ্ত তথ্য প্রদর্শন করে। ব্যবহারকারী লক স্ক্রিন বা হোম স্ক্রিনে বামে সোয়াইপ করে উইজেট দেখতে পারেন। উইজেট ডায়নামিক ডেটা — মুদ্রার হার, সর্বশেষ খবর, কাজের অবস্থা, ডিভাইসের অবস্থা — দেখাতে পারে।
ঐতিহাসিকভাবে, Today Widget iOS 8-এ নোটিফিকেশন সেন্টার ফ্রেমওয়ার্কের মাধ্যমে বাস্তবায়িত নোটিফিকেশন সেন্টার এক্সটেনশন হিসেবে আবির্ভূত হয়। iOS 14-এর সাথে, Apple WidgetKit চালু করে — একটি সম্পূর্ণ পুনঃডিজাইন করা আর্কিটেকচার যা উইজেটগুলিকে সরাসরি হোম স্ক্রিনে রাখার অনুমতি দেয়। আধুনিক অর্থে Today Widget হল একটি WidgetKit উইজেট যা “Today” সেকশনে (প্রথম স্ক্রিনের বামে উইজেট সেকশন) অবস্থিত।
মূল লক্ষ্য হল তথ্য অ্যাক্সেসের সময় কমানো। অ্যাপ খোলা, মেনুতে নেভিগেট করা এবং লোডিংয়ের অপেক্ষা করার পরিবর্তে, ব্যবহারকারী অবিলম্বে প্রয়োজনীয় ডেটা দেখতে পান। Apple (2024) অনুসারে, উইজেটযুক্ত অ্যাপগুলি 27% বেশি ব্যবহারকারীর ব্যস্ততা দেখায়। অতিরিক্ত ব্যবহারের ক্ষেত্র: দ্রুত কর্ম (কাজ সম্পন্ন হিসেবে চিহ্নিত করা), মনিটরিং (হৃদস্পন্দন, কার্যকলাপ) এবং অবস্থা (ব্যাটারি চার্জ, বিজ্ঞপ্তি)।
Today Widget ডেভেলপারের কাছে দুটি পদ্ধতি উপলব্ধ: আধুনিক WidgetKit (iOS 14+) এবং লিগ্যাসি NCWidgetProviding এক্সটেনশন (iOS 8–13)। পছন্দ ন্যূনতম সমর্থিত iOS সংস্করণের উপর নির্ভর করে। WidgetKit নতুন প্রকল্পের জন্য সুপারিশ করা হয়, NCWidgetProviding পুরানো ডিভাইস সমর্থনের জন্য।
| বৈশিষ্ট্য | WidgetKit | NCWidgetProviding |
|---|---|---|
| ন্যূনতম iOS | iOS 14 | iOS 8 |
| অবস্থান | হোম স্ক্রিন + “Today” | শুধুমাত্র “Today” |
| আকার | ছোট, মাঝারি, বড় | একটি নির্দিষ্ট আকার |
| ইন্টারঅ্যাকটিভিটি | iOS 17+ বাটন এবং টগল | শুধুমাত্র অ্যাপ খোলা |
| আপডেট | Timeline Provider | widgetPerformUpdate |
| ভাষা | SwiftUI | UIKit |
যদি আপনার অ্যাপ iOS 14 এবং নতুন সমর্থন করে — WidgetKit ব্যবহার করুন। এটি সমৃদ্ধ ক্ষমতা প্রদান করে: একাধিক আকার, intents-এর মাধ্যমে কনফিগারেশন, iOS 17-এর সাথে পুনর্নকশা এবং ডিপ লিংক। SwiftUI-এর ঘোষণামূলকতা উইজেট কোডকে কমপ্যাক্ট এবং পড়তে সহজ করে তোলে। Timeline Provider বিদ্যুৎ খরচ বিবেচনা করে স্বয়ংক্রিয়ভাবে আপডেট শিডিউল পরিচালনা করে।
শুধুমাত্র যদি iOS 9–13 সমর্থনের প্রয়োজন হয়। NCWidgetProviding বাস্তবায়ন করা সহজ — এটি একটি প্রোটোকল সহ একটি সাধারণ UIViewController। তবে এটি সীমিত: একক আকার, শুধুমাত্র UIKit, কোনো কনফিগারেশন নেই। Apple availability check ব্যবহার করে পুরানো প্রকল্পের জন্যও WidgetKit-এ স্যুইচ করার সুপারিশ করে: iOS 14+-এ WidgetKit, ফলব্যাক হিসেবে NCWidgetProviding।
আধুনিক iOS-এ, কার্যকরী উদ্দেশ্য অনুসারে তিন ধরনের উইজেট রয়েছে। প্রতিটি প্রকার তার নিজস্ব সমস্যা সমাধান করে এবং ডেটা ও ইন্টারফেস ডিজাইনের জন্য ভিন্ন পদ্ধতির প্রয়োজন। শ্রেণীবিভাগ আপনার অ্যাপের জন্য সঠিক আর্কিটেকচার বেছে নিতে সাহায্য করে।
স্থির বা পর্যায়ক্রমে আপডেট হওয়া তথ্য প্রদর্শন করে: আবহাওয়া, তারিখ, মুদ্রার হার, সার্ভারের অবস্থা। Timeline Provider-এর মাধ্যমে শিডিউল অনুযায়ী ডেটা আপডেট হয়। ব্যবহারকারী উইজেটের সাথে ইন্টারঅ্যাক্ট করেন না — শুধু পড়েন। তথ্যমূলক উইজেট বাস্তবায়নে সবচেয়ে সহজ, টাচ ইভেন্ট হ্যান্ডলিং প্রয়োজন হয় না এবং অতিরিক্ত অনুমতি ছাড়াই ব্যাকগ্রাউন্ডে কাজ করে।
iOS 17-এর সাথে, WidgetKit উইজেটে বাটন, টগল এবং স্লাইডার সমর্থন করে। ব্যবহারকারী অ্যাপ না খুলেই কাজ করতে পারেন — কাজ চিহ্নিত করা, সঙ্গীত বিরাম দেওয়া, আলো চালু করা। ইন্টারঅ্যাকটিভ উইজেট মূল অ্যাপে কাজ পাঠাতে App Intents ব্যবহার করে। সীমাবদ্ধতা: শুধুমাত্র হোম স্ক্রিনে, iOS 18 পর্যন্ত “Today” সেকশনে নয়।
ব্যবহারকারী সিস্টেম ইন্টারফেসের মাধ্যমে প্রদর্শিত ডেটা কাস্টমাইজ করেন — আবহাওয়ার জন্য শহর, অর্থের জন্য অ্যাকাউন্ট, খবরের জন্য বিভাগ নির্বাচন করেন। Intents Extension এবং WidgetBundle-এ কনফিগারেশনের মাধ্যমে বাস্তবায়িত। কনফিগারেবল উইজেট প্রতিটি ব্যবহারকারীর জন্য ব্যক্তিগতকরণ এবং তথ্যের প্রাসঙ্গিকতা বাড়ায়।
WidgetKit ব্যবহার করে SwiftUI-তে Today Widget তৈরির প্রক্রিয়া দেখি। উইজেটটি স্বয়ংক্রিয় আপডেট সহ বর্তমান মুদ্রার হার প্রদর্শন করবে। WidgetKit-এর তিনটি উপাদান প্রয়োজন: উইজেট কাঠামো, কনফিগারেশন সহ Provider, এবং প্রদর্শনের জন্য View।
import WidgetKit
import SwiftUI
@main
struct CurrencyWidget: Widget {
let kind: String = "CurrencyWidget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider()) { entry in
CurrencyWidgetEntryView(entry: entry)
}
.configurationDisplayName("Currency Rate")
.description("Current USD/RUB exchange rate")
.supportedFamilies([.systemSmall, .systemMedium])
}
}
Provider প্রদর্শনের জন্য ডেটা প্রস্তুত করার জন্য দায়ী। getTimeline পদ্ধতি একটি আপডেট শিডিউল তৈরি করে: ১৫ মিনিটে পরবর্তী আপডেট। TimelineProvider নিশ্চিত করে যে উইজেট সার্ভার থেকে ক্রমাগত ডেটা না নিয়ে আপ-টু-ডেট ডেটা দেখায়।
struct Provider: TimelineProvider {
func getSnapshot(in context: Context,
completion: @escaping (CurrencyEntry) -> Void) {
let entry = CurrencyEntry(date: Date(), rate: 92.5)
completion(entry)
}
func getTimeline(in context: Context,
completion: @escaping (Timeline<CurrencyEntry>) -> Void) {
let rate = CurrencyService().fetchRate()
let entry = CurrencyEntry(date: Date(), rate: rate)
let nextUpdate = Calendar.current.date(
byAdding: .minute, value: 15, to: Date()
) ?? Date()
let timeline = Timeline(entries: [entry], policy: .after(nextUpdate))
completion(timeline)
}
}
Timeline Provider হল Today Widget ডেটা পরিচালনার জন্য কেন্দ্রীয় WidgetKit প্রক্রিয়া। টাইমার দ্বারা পর্যায়ক্রমিক আপডেটের (পুরানো NCWidgetProviding-এর মতো) পরিবর্তে, WidgetKit timeline ধারণা ব্যবহার করে — টাইমস্ট্যাম্প সহ এন্ট্রির একটি ক্রম। সিস্টেম বর্তমান এন্ট্রিটি মেয়াদ শেষ না হওয়া পর্যন্ত প্রদর্শন করে, তারপর পরবর্তীতে স্যুইচ করে বা নতুনটির অনুরোধ করে।
Timeline তিনটি নীতি সমর্থন করে: .after(date) — নির্দিষ্ট তারিখে পরবর্তী আপডেট; .never — WidgetCenter.reloadAllTimelines-এর স্পষ্ট কল না হওয়া পর্যন্ত উইজেট আপডেট হয় না; .atEnd — শেষ এন্ট্রি প্রদর্শনের পরে আপডেট। মুদ্রার হার সহ Today Widget-এর জন্য, 15–30 মিনিটের ব্যবধানে .after নীতি সর্বোত্তম। শক্তি দক্ষতা WidgetKit-এর একটি মূল সুবিধা: সিস্টেম সব উইজেটের আপডেট এক উইন্ডোতে গ্রুপ করে।
যদি timeline মেয়াদ শেষ হওয়ার আগে ডেটা পরিবর্তিত হয় (উদাহরণস্বরূপ, ব্যবহারকারী অ্যাপে হার আপডেট করেছেন), তাহলে WidgetCenter.shared.reloadTimelines(ofKind: “CurrencyWidget”) কল করুন। এটি Provider-এর কাছ থেকে নতুন timeline অনুরোধ করবে এবং প্রদর্শন আপডেট করবে। WidgetCenter একটি কমান্ডে সব অ্যাপ উইজেট রিলোড করার অনুমতি দেয় — ডেটা সিঙ্ক্রোনাইজেশনের পরে সুবিধাজনক।
Apple Today Widget ডিজাইনে কঠোর প্রয়োজনীয়তা আরোপ করে: বিষয়বস্তু এক নজরে পড়া যেতে হবে, অপ্রয়োজনীয় উপাদান ছাড়া এবং স্পষ্ট শ্রেণিবিন্যাস সহ। HIG (Human Interface Guidelines) সুপারিশ লঙ্ঘন App Store-এ প্রকাশ করার সময় প্রত্যাখ্যানের কারণ। তিনটি নীতি: ত্বরিত দৃশ্যমানতা, সঙ্গতি এবং শ্রেণিবিন্যাস।
ব্যবহারকারী উইজেটে এক সেকেন্ডেরও কম সময় ব্যয় করেন। 3–4টির বেশি ডেটা উপাদান যোগ করবেন না। ফন্ট — লেবেলের জন্য ন্যূনতম 11pt, মানগুলির জন্য 17pt। মূল সংখ্যার জন্য বোল্ড (Semibold) ব্যবহার করুন। স্ক্রলিং এড়িয়ে চলুন — Today Widget স্ক্রল হয় না।
WidgetKit তিনটি আকার সমর্থন করে: ছোট (170×170pt), মাঝারি (364×170pt), বড় (364×382pt)। “Today” সেকশনে Today Widget-এর জন্য, মাঝারি সবচেয়ে সাধারণ পছন্দ। EnvironmentValues-এর মাধ্যমে অভিযোজিত ডিজাইন: আকার অনুযায়ী তথ্যের ঘনত্ব পরিবর্তন করুন। ছোট — একটি সংখ্যা, মাঝারি — সংখ্যা + চার্ট, বড় — টেবিল।
উইজেটটি ডেভেলপারের অতিরিক্ত পদক্ষেপ ছাড়াই হালকা এবং গাঢ় থিমে সঠিকভাবে প্রদর্শিত হওয়া উচিত — WidgetKit স্বয়ংক্রিয়ভাবে সিস্টেম রং গ্রহণ করে। উইজেটের জন্য Dynamic Type সীমিত: ফন্টের আকার নির্দিষ্ট, তবে পড়া যায় এমন হতে হবে। UIColor.label এবং UIColor.systemBackground উভয় থিমেই টেক্সট এবং ব্যাকগ্রাউন্ডের জন্য মৌলিক রং।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
আজ এটি একই WidgetKit উইজেট। পার্থক্য শুধুমাত্র অবস্থানে: হোম স্ক্রিনে এবং “Today” সেকশনে (প্রথম স্ক্রিনের বামে)। iOS 14-এর আগে, Today Widget ছিল একটি পৃথক NCWidgetProviding এক্সটেনশন যা শুধুমাত্র নোটিফিকেশন সেন্টারে কাজ করত। এখন এটি একটি একক WidgetKit।
WidgetKit টাইমার দ্বারা উইজেট আপডেট করে না। ডেভেলপার Timeline Provider-এর মাধ্যমে শিডিউল সেট করেন: টাইমস্ট্যাম্প সহ এন্ট্রি। সিস্টেম বিদ্যুৎ সাশ্রয় বিবেচনা করে নির্দিষ্ট সময়ে আপডেটের গ্যারান্টি দেয় — কয়েক মিনিট বিলম্ব হতে পারে। সর্বনিম্ন ব্যবধান 15 মিনিট, তবে Apple প্রতি ঘন্টায় একবারের বেশি না করার পরামর্শ দেয়।
হ্যাঁ, iOS 17 থেকে শুরু করে, WidgetKit App Intents-এর মাধ্যমে বাটন, টগল এবং স্লাইডার সমর্থন করে। ইন্টারঅ্যাকটিভ উপাদান iPhone এবং iPad হোম স্ক্রিনে কাজ করে। “Today” সেকশনে সমর্থন iOS 18-এ আসে। iOS 16 এবং পুরানোর জন্য — উইজেটে ট্যাপ করলে শুধুমাত্র অ্যাপ খোলে।
কোনো সীমা নেই। একটি অ্যাপ WidgetBundle-এর মাধ্যমে যেকোনো সংখ্যক উইজেট নিবন্ধন করতে পারে — প্রতিটি নিজস্ব প্রকার, আকার এবং কনফিগারেশন সহ। ব্যবহারকারী এগুলি পৃথকভাবে যোগ করেন। সুপারিশ 3–5টির বেশি উইজেট না রাখা যাতে ব্যবহারকারীর পছন্দের উপর চাপ না পড়ে।
WidgetKit iOS Simulator-এ সম্পূর্ণ সমর্থিত। Xcode-এ WidgetKit target স্কিম চালান — উইজেট সিমুলেটরের হোম স্ক্রিনে প্রদর্শিত হবে। Timeline Provider পরীক্ষা করতে, WidgetKit Debug Profile ব্যবহার করুন: Xcode → Product → Profile → WidgetKit Debug। প্রকৃত ডিভাইসে বাস্তব আচরণ যাচাই করুন।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন