WatchKit — এটি কী, Apple Watch ফ্রেমওয়ার্ক এবং watchOS

লেখক: IT Sectr প্রকাশিত: 2026-06-16 পড়ার সময়: 8 মিনিট

WatchKit হল Apple Watch-এ অ্যাপ্লিকেশন তৈরির জন্য Apple-এর একটি ফ্রেমওয়ার্ক, যা 2014 সালে watchOS 1-এর সাথে ঘোষণা করা হয়েছিল। এটি WKInterface UI এলিমেন্টের একটি সেট সরবরাহ করে — বাটন, লেবেল, টেবিল, ম্যাপ — এবং স্ক্রিনগুলির মধ্যে নেভিগেশন মেকানিজম। যদিও আধুনিক watchOS ডেভেলপমেন্ট ক্রমশ SwiftUI-তে স্থানান্তরিত হচ্ছে, WatchKit বিদ্যমান অ্যাপ্লিকেশন এবং এমন পরিস্থিতিতে যেখানে ইন্টারফেসের উপর সম্পূর্ণ নিয়ন্ত্রণ প্রয়োজন, সেগুলি সমর্থনের জন্য গুরুত্বপূর্ণ রয়ে গেছে। Apple Developer Documentation, 2026 অনুসারে, WatchKit এখনও watchOS App Store ক্যাটালগের 35% অ্যাপে ব্যবহৃত হয়, যার মধ্যে ফিটনেস অ্যাপ, নেভিগেটর এবং দ্রুত ডেটা অ্যাক্সেসের জন্য ইউটিলিটি অন্তর্ভুক্ত।

মূল পয়েন্ট

  • WatchKit হল Apple Watch-এ অ্যাপ্লিকেশন তৈরির জন্য Apple-এর একটি ফ্রেমওয়ার্ক, যা WKInterface UI কম্পোনেন্ট এবং WKInterfaceController-ভিত্তিক নেভিগেশন ব্যবহার করে।
  • WKInterfaceController হল অ্যাপ্লিকেশনের প্রধান স্ক্রিন ক্লাস, যা iOS-এ UIViewController-এর মতো, লাইফসাইকেল ম্যানেজমেন্ট এবং হায়ারার্কি সহ।
  • WCSession হল Apple Watch এবং iPhone-এর মধ্যে কমিউনিকেশন মেকানিজম, যা Bluetooth-এর মাধ্যমে ডেটা, ফাইল এবং কনটেক্সট স্থানান্তরের অনুমতি দেয়।
  • WKInterfaceDevice ডিভাইস তথ্য সরবরাহ করে: স্ক্রিন সাইজ, মডেল, watchOS সংস্করণ এবং হার্ডওয়্যার কম্পোনেন্ট সক্ষমতা।
  • Complications Controller হল একটি API যা CLKComplicationDataSource-এর মাধ্যমে ওয়াচ ফেসে ডেটা প্রদর্শনের জন্য সক্রিয় হয়।

WatchKit কী এবং এটি কীভাবে কাজ করে?

WatchKit হল Apple-এর একটি ফ্রেমওয়ার্ক যা Apple Watch-এ অ্যাপ্লিকেশন তৈরির জন্য API সরবরাহ করে। watchOS 2 (2015) থেকে শুরু করে, WatchKit অ্যাপগুলি সরাসরি ওয়াচে চলে, iPhone-এ নয়, যা তাদের ফোনের সাথে ধ্রুবক সংযোগ ছাড়াই ডেটা প্রক্রিয়া এবং ইন্টারফেস প্রদর্শনের অনুমতি দেয়। এর আগে, watchOS 1-এ, সমস্ত অ্যাপ iPhone-এ চলত এবং ওয়াচটি কেবল একটি রিমোট ডিসপ্লে ছিল, যার ফলে UI-তে উল্লেখযোগ্য বিলম্ব হত।

আধুনিক WatchKit আর্কিটেকচারে দুটি কম্পোনেন্ট অন্তর্ভুক্ত: WatchKit App (ওয়াচে Storyboard + রিসোর্স) এবং WatchKit Extension (ওয়াচে চলা কোড)। ব্যবহারকারী মূল iOS অ্যাপ্লিকেশন ইনস্টল করার সময় App Store-এর মাধ্যমে উভয় কম্পোনেন্ট ইনস্টল করে। WatchKit সিস্টেম ফিচারের সাথে সংহত হয়: বিজ্ঞপ্তি (UNUserNotificationCenter-এর মাধ্যমে), কমপ্লিকেশন (ওয়াচ ফেসে ডেটা), Workout API এবং HealthKit।

Counterpoint Research (2025) অনুসারে, Apple Watch বিশ্বব্যাপী স্মার্টওয়াচ বাজারের 52% ধারণ করে, এবং গড় ব্যবহারকারী WatchKit বা SwiftUI ব্যবহার করে 6–8 টি থার্ড-পার্টি অ্যাপ ইনস্টল করে। সবচেয়ে জনপ্রিয় বিভাগগুলি হল ফিটনেস (56%), স্বাস্থ্য (22%), নেভিগেশন (9%) এবং ইউটিলিটি (8%)।

watchOS-এর জন্য WatchKit বনাম SwiftUI

SwiftUI হল watchOS 6 থেকে শুরু করে watchOS-এর জন্য ইন্টারফেস তৈরির Apple-এর প্রস্তাবিত উপায়। SwiftUI ডিক্লারেটিভ সিনট্যাক্স এবং স্ক্রিন সাইজের সাথে স্বয়ংক্রিয় অভিযোজন সরবরাহ করে। তবে, WatchKit SwiftUI-এর অস্তিত্বে আসার আগে শুরু হওয়া প্রকল্পগুলির জন্য, নির্দিষ্ট উপাদান (WKInterfaceMap, WKInterfaceMovie) ব্যবহারের জন্য এবং watchOS সংস্করণ 6-এর নিচে সমর্থন প্রয়োজন এমন ক্ষেত্রে প্রাসঙ্গিক থেকে যায়।

মানদণ্ডWatchKitSwiftUI
Apple সুপারিশলিগ্যাসিবর্তমান
সর্বনিম্ন watchOSwatchOS 1watchOS 6
কোডের পরিমাণআরওকম
কমপ্লিকেশন ইন্টিগ্রেশনক্লাসের মাধ্যমে সরাসরিWidgetKit-এর মাধ্যমে
WKInterfaceMapহ্যাঁMap (MapKit)

WatchKit ইন্টারফেস: WKInterfaceController এবং এলিমেন্ট

WKInterfaceController হল WatchKit-এ স্ক্রিন পরিচালনার জন্য বেস ক্লাস। এটি লাইফসাইকেল পরিচালনা করে: ইনিশিয়ালাইজেশন (awake(withContext:)), উপস্থিতি (willActivate), অদৃশ্য হওয়া (didDeactivate) এবং কন্ট্রোলারগুলির মধ্যে কনটেক্সট স্থানান্তর। প্রতিটি অ্যাপ স্ক্রিন একটি পৃথক WKInterfaceController সাবক্লাস দ্বারা প্রতিনিধিত্ব করা হয় যা Interface Builder-এর মাধ্যমে Storyboard-এর সাথে সংযুক্ত। নেভিগেশন শ্রেণিবদ্ধ (push) বা মোডাল (present) হতে পারে।

WatchKit WKInterface উপসর্গ সহ ইন্টারফেস এলিমেন্টের একটি সেট সরবরাহ করে: WKInterfaceLabel (টেক্সট), WKInterfaceButton (বাটন), WKInterfaceTable (টেবিল), WKInterfaceImage (ছবি), WKInterfaceMap (ম্যাপ) এবং WKInterfaceGroup (গোলাকার কোণ এবং ব্যাকগ্রাউন্ড সহ কনটেইনার)। সমস্ত এলিমেন্ট অ্যাসিঙ্ক্রোনাসভাবে কাজ করে — UI পরিবর্তনগুলি কিউতে রাখা হয় এবং রেন্ডার চক্রের মধ্যে সিস্টেম দ্বারা প্রয়োগ করা হয়, যা ওয়াচ স্ক্রিনে স্থিতিশীল 30 FPS নিশ্চিত করে।

মৌলিক WKInterfaceController

swift
class MainInterfaceController: WKInterfaceController {
    @IBOutlet weak var titleLabel: WKInterfaceLabel!
    @IBOutlet weak var actionButton: WKInterfaceButton!
    
    override func awake(with context: Any?) {
        super.awake(with: context)
        titleLabel.setText("হ্যালো, Watch!")
    }
    
    override func willActivate() {
        super.willActivate()
        actionButton.setTitle("শুরু")
    }
    
    @IBAction func didTapButton() {
        pushController(withName: "DetailController", context: nil)
    }
}

WCSession: Watch এবং iPhone-এর মধ্যে কমিউনিকেশন

WCSession হল Bluetooth বা Wi-Fi-এর মাধ্যমে Apple Watch এবং iPhone-এর মধ্যে দ্বিমুখী কমিউনিকেশনের জন্য কেন্দ্রীয় ক্লাস। সেশন ছোট ডেটা ডিকশনারি (updateApplicationContext) স্থানান্তর, তাত্ক্ষণিক প্রতিক্রিয়া সহ বার্তা পাঠানো (sendMessage), ফাইল স্থানান্তর (transferFile) এবং জটিল অবজেক্ট সিঙ্ক্রোনাইজ (transferUserInfo) করার অনুমতি দেয়। WCSession অ্যাসিঙ্ক্রোনাসভাবে কাজ করে এবং স্বয়ংক্রিয়ভাবে সর্বোত্তম কমিউনিকেশন চ্যানেল নির্বাচন করে।

WCSession ব্যবহার করার জন্য, আপনাকে উভয় ডিভাইসে সেশন সক্রিয় করতে হবে। Watch অ্যাপ willActivate() পদ্ধতিতে WCSession তৈরি করে, যখন iOS অ্যাপ AppDelegate বা SceneDelegate-এ তা করে। সক্রিয় হওয়ার পরে, ডিভাইসগুলি সম্ভব হলে স্বয়ংক্রিয়ভাবে কনটেক্সট সিঙ্ক্রোনাইজ করে। আগত ডেটা গ্রহণ এবং সংযোগ স্থিতি পর্যবেক্ষণের জন্য WCSessionDelegate হ্যান্ডেল করা গুরুত্বপূর্ণ।

Watch পাশে WCSession উদাহরণ

swift
class SessionManager: NSObject, WCSessionDelegate {
    private let session = WCSession.default
    
    func activate() {
        session.delegate = self
        session.activate()
    }
    
    func sendDataToPhone(key: String, value: Any) {
        guard session.isReachable else { return }
        session.sendMessage([key: value],
            replyHandler: { response in
                print("Response: \(response)")
            },
            errorHandler: { error in
                print("Error: \(error.localizedDescription)")
            }
        )
    }
    
    func session(_ session: WCSession,
               didReceiveMessage message: [String: Any],
               replyHandler: @escaping ([String: Any]) -> Void) {
        handleIncomingData(message)
        replyHandler(["status": "ok"])
    }
}

Complications: ওয়াচ ফেসে ডেটা

Complications হল ছোট ডেটা এলিমেন্ট যা Apple Watch ফেসে প্রদর্শিত হয় এবং অ্যাপ না খুলেই তথ্যে দ্রুত অ্যাক্সেস সরবরাহ করে। WatchKit CLKComplicationDataSource সরবরাহ করে — একটি প্রোটোকল যার বাস্তবায়ন অ্যাপকে কমপ্লিকেশনের জন্য ডেটা সরবরাহ করতে দেয়। ওয়াচ ফেস নিজেই সিদ্ধান্ত নেয় কোন অবস্থানগুলি উপলব্ধ — বৃত্তাকার, আয়তক্ষেত্রাকার, কোণ বা মডুলার।

ডেভেলপার তিনটি সাইজ ফ্যামিলির জন্য কমপ্লিকেশন সরবরাহ করতে পারেন: CLKComplicationFamily — circularSmall, extraLarge, graphicCircular, graphicRectangular, graphicCorner, graphicBezel, modularSmall, modularLarge এবং utilitarianSmall/Large। প্রতিটি ফ্যামিলির নিজস্ব মাত্রা এবং প্রদর্শন বিন্যাস রয়েছে। একটি অ্যাপ একাধিক ফ্যামিলি সমর্থন করতে পারে, তবে ন্যূনতম দুটি — গ্রাফিক এবং মডুলার — সুপারিশ করা হয়।

CLKComplicationDataSource উদাহরণ

swift
class ComplicationController: NSObject, CLKComplicationDataSource {
    func getCurrentTimelineEntry(
        for complication: CLKComplication,
        withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void
    ) {
        let template = CLKComplicationTemplateModularSmallSimpleText()
        template.textProvider = CLKSimpleTextProvider(text: "96%")
        let entry = CLKComplicationTimelineEntry(
            date: Date(),
            complicationTemplate: template
        )
        handler(entry)
    }
}

Swift-এ WatchKit অ্যাপের উদাহরণ

WatchKit অ্যাপ তৈরি করা Xcode-এ WatchKit App Target যোগ করার মাধ্যমে শুরু হয়। Xcode একটি প্রাথমিক কন্ট্রোলার সহ Interface.storyboard জেনারেট করে এবং এটি স্বয়ংক্রিয়ভাবে InterfaceController ক্লাসের সাথে লিঙ্ক করে। ডেভেলপার Interface Builder-এর মাধ্যমে UI এলিমেন্ট যোগ করে এবং কোড থেকে ইন্টারঅ্যাকশনের জন্য IBOutlets তৈরি করে। নীচে WCSession-এর মাধ্যমে iPhone থেকে প্রাপ্ত ডেটার টেবিল সহ একটি সম্পূর্ণ কন্ট্রোলার উদাহরণ দেওয়া হল।

swift
class ItemRowController: NSObject {
    @IBOutlet weak var itemLabel: WKInterfaceLabel!
    
    func configure(with text: String) {
        itemLabel.setText(text)
    }
}

class ListController: WKInterfaceController {
    @IBOutlet weak var itemsTable: WKInterfaceTable!
    private var items: [String] = []
    
    override func awake(with context: Any?) {
        super.awake(with: context)
        items = context as? [String] ?? []
        
        itemsTable.setNumberOfRows(items.count,
            withRowType: "ItemRow")
        for i in 0..if let row = itemsTable
                .rowController(at: i) as? ItemRowController {
                row.configure(with: items[i])
            }
        }
    }
}

ফিটনেস অ্যাপ্লিকেশনের জন্য Workout API

Workout API হল WatchKit ক্লাসের একটি সেট যা ফিটনেস অ্যাপ তৈরির জন্য যা পটভূমিতে Apple Watch-এ ওয়ার্কআউট চালাতে পারে। API সেন্সরগুলিতে অ্যাক্সেস সরবরাহ করে: অ্যাক্সেলেরোমিটার, জাইরোস্কোপ, হার্ট রেট মনিটর (HKHealthStore-এর মাধ্যমে) এবং GPS (GPS সহ Watch মডেলগুলিতে)। ওয়ার্কআউটগুলি HealthKit থেকে HKWorkoutSession-এর মাধ্যমে শুরু হয় এবং হার্ট রেট ডেটা HKSampleQuery-এর মাধ্যমে রিয়েল টাইমে আপডেট হয়।

Workout API-এর মূল সুবিধা হল পটভূমি অপারেশন। যখন একটি ওয়ার্কআউট সক্রিয় থাকে, watchOS ব্যবহারকারী কব্জি নামালে অ্যাপটি স্থগিত করে না — সেন্সরগুলি ডেটা সংগ্রহ করতে থাকে এবং অ্যাপটি হার্ট রেট, দূরত্ব, গতি এবং অন্যান্য মেট্রিক প্রদর্শন করতে পারে। ওয়ার্কআউট শেষ হওয়ার পরে, ডেটা HealthKit-এর মাধ্যমে iPhone-এ স্বাস্থ্য অ্যাপের সাথে সিঙ্ক্রোনাইজ হয়, যা ব্যবহারকারীর জন্য একটি ইউনিফাইড ফিটনেস প্রোফাইল সরবরাহ করে।

সেন্সর সহ ওয়ার্কআউট শুরু করা

swift
class WorkoutManager: NSObject {
    private let healthStore = HKHealthStore()
    private var session: HKWorkoutSession!
    
    func startWorkout(activityType: HKWorkoutActivityType) {
        let config = HKWorkoutConfiguration()
        config.activityType = activityType
        config.locationType = .outdoor
        
        session = try! HKWorkoutSession(
            healthStore: healthStore,
            configuration: config
        )
        session.startActivity(with: Date())
    }
    
    func stopWorkout() {
        session.stopActivity(with: Date())
        session.end()
    }
}

সচরাচর জিজ্ঞাসিত প্রশ্ন

আমার কি নতুন প্রকল্পে WatchKit ব্যবহার করা উচিত?

Apple নতুন watchOS অ্যাপের জন্য SwiftUI সুপারিশ করে। শুধুমাত্র লিগ্যাসি প্রকল্প সমর্থনের জন্য বা আপনার যদি SwiftUI-তে উপলব্ধ না হওয়া নির্দিষ্ট কার্যকারিতা যেমন WKInterfaceMap প্রয়োজন হয় তবেই WatchKit ব্যবহার করুন।

কীভাবে সংযোগ ছাড়াই Watch থেকে iPhone-এ ডেটা স্থানান্তর করবেন?

WCSession transferUserInfo এবং transferFile-এর মাধ্যমে বিলম্বিত স্থানান্তর সমর্থন করে। ওয়াচ এবং ফোনের মধ্যে পরবর্তী সংযোগ স্থাপনের সময় ডেটা বিতরণ করা হবে, যা অস্থায়ী সংযোগ বিচ্ছিন্নতার পরেও বিতরণ নিশ্চিত করে।

WatchKit অ্যাপ কি সব Apple Watch মডেলে কাজ করে?

WatchKit দিয়ে লেখা অ্যাপগুলি Apple Watch Series 0 এবং নতুন (watchOS 1+) এর সাথে সামঞ্জস্যপূর্ণ। তবে, কিছু বৈশিষ্ট্য (GPS, হার্ট রেট মনিটর, Dynamic Island) শুধুমাত্র নির্দিষ্ট মডেলগুলিতে উপলব্ধ।

আমি কি একই অ্যাপে SwiftUI এবং WatchKit ব্যবহার করতে পারি?

হ্যাঁ, আপনি একক অ্যাপে SwiftUI এবং WatchKit একত্রিত করতে পারেন। WKInterfaceController-এ SwiftUI ভিউ এম্বেড করতে WKHostingController ব্যবহার করুন, বা UIViewRepresentable-এর মাধ্যমে WKInterfaceObjects সংহত করুন।

প্রকৃত ডিভাইসে WCSession কিভাবে ডিবাগ করবেন?

সংযুক্ত ডিভাইসে Xcode থেকে উভয় অ্যাপ (iOS + watchOS) চালান। WCSessionDelegate বার্তা পর্যবেক্ষণের জন্য ডিবাগ কনসোল ব্যবহার করুন। নিশ্চিত করুন যে উভয় ডিভাইস Bluetooth পরিসরের (10 মিটার পর্যন্ত) মধ্যে রয়েছে।

সারাংশ

  • WatchKit হল Apple Watch-এ অ্যাপ তৈরির জন্য Apple-এর একটি ফ্রেমওয়ার্ক, যা WKInterface UI কম্পোনেন্ট এবং WKInterfaceController কন্ট্রোলার ব্যবহার করে।
  • WCSession হল বার্তা, ফাইল এবং কনটেক্সট সমর্থন সহ Bluetooth/Wi-Fi-এর মাধ্যমে Watch এবং iPhone-এর মধ্যে দ্বিমুখী কমিউনিকেশনের জন্য কেন্দ্রীয় প্রক্রিয়া।
  • Complications হল CLKComplicationDataSource-এর মাধ্যমে Apple Watch ফেসে ডেটা যা 9টি প্রদর্শন ফ্যামিলি সমর্থন করে।
  • Workout API হল HKWorkoutSession-এর মাধ্যমে পটভূমিতে হার্ট রেট, GPS এবং অ্যাক্সেলেরোমিটার ডেটা সংগ্রহ সহ ফিটনেস অ্যাপের জন্য ক্লাসের একটি সেট।
  • SwiftUI হল নতুন প্রকল্পের জন্য Apple-এর প্রস্তাবিত পদ্ধতি, কিন্তু WatchKit লিগ্যাসি অ্যাপ এবং নির্দিষ্ট কার্যকারিতার জন্য প্রাসঙ্গিক থেকে যায়।
  • সংমিশ্রণ WKHostingController এবং UIViewRepresentable-এর মাধ্যমে একটি অ্যাপে WatchKit এবং SwiftUI-এর সংমিশ্রণ সম্ভব।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন