WatchKit — คืออะไร เฟรมเวิร์ก Apple Watch และ watchOS

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-06-16 เวลาอ่าน: 8 นาที

WatchKit เป็นเฟรมเวิร์กของ Apple สำหรับสร้างแอปพลิเคชันบน Apple Watch ซึ่งประกาศในปี 2014 พร้อมกับ watchOS 1 โดยมีชุดองค์ประกอบอินเทอร์เฟซ WKInterface — ปุ่ม ป้ายกำกับ ตาราง แผนที่ — และกลไกการนำทางระหว่างหน้าจอ แม้ว่าการพัฒนา watchOS สมัยใหม่จะเปลี่ยนไปใช้ SwiftUI มากขึ้น แต่ WatchKit ยังคงมีความสำคัญสำหรับการสนับสนุนแอปพลิเคชันที่มีอยู่และสถานการณ์ที่ต้องการควบคุมอินเทอร์เฟซอย่างเต็มที่ ตามข้อมูลของ Apple Developer Documentation, 2026 WatchKit ยังคงใช้ใน 35% ของแอปในแคตตาล็อก watchOS App Store รวมถึงแอปฟิตเนส ตัวนำทาง และยูทิลิตี้สำหรับการเข้าถึงข้อมูลอย่างรวดเร็ว

ประเด็นสำคัญ

  • WatchKit เป็นเฟรมเวิร์กของ Apple สำหรับสร้างแอปพลิเคชันบน Apple Watch โดยใช้ส่วนประกอบอินเทอร์เฟซ WKInterface และการนำทางบนพื้นฐาน WKInterfaceController
  • WKInterfaceController เป็นคลาสหน้าจอหลักของแอปพลิเคชัน คล้ายกับ UIViewController บน iOS พร้อมการจัดการวงจรชีวิตและลำดับชั้น
  • WCSession เป็นกลไกการสื่อสารระหว่าง Apple Watch และ iPhone ที่อนุญาตให้ถ่ายโอนข้อมูล ไฟล์ และบริบทผ่าน Bluetooth
  • WKInterfaceDevice ให้ข้อมูลอุปกรณ์: ขนาดหน้าจอ รุ่น เวอร์ชัน watchOS และความสามารถของส่วนประกอบฮาร์ดแวร์
  • Complications Controller เป็น API สำหรับแสดงข้อมูลบนหน้าปัดนาฬิกา ซึ่งทำงานผ่าน CLKComplicationDataSource

WatchKit คืออะไรและทำงานอย่างไร?

WatchKit เป็นเฟรมเวิร์กของ Apple ที่ให้ API สำหรับสร้างแอปพลิเคชันบน Apple Watch ตั้งแต่ watchOS 2 (2015) เป็นต้นมา แอป WatchKit ทำงานโดยตรงบนนาฬิกาแทนที่จะทำงานบน iPhone ทำให้สามารถประมวลผลข้อมูลและแสดงอินเทอร์เฟซโดยไม่ต้องเชื่อมต่อกับโทรศัพท์อย่างต่อเนื่อง ก่อนหน้านั้นใน watchOS 1 แอปทั้งหมดทำงานบน iPhone และนาฬิกาเป็นเพียงจอแสดงผลระยะไกล ซึ่งทำให้เกิดความล่าช้าอย่างมากใน UI

สถาปัตยกรรม WatchKit สมัยใหม่ประกอบด้วยสององค์ประกอบ: WatchKit App (Storyboard + ทรัพยากรบนนาฬิกา) และ WatchKit Extension (โค้ดที่ทำงานบนนาฬิกา) ผู้ใช้ติดตั้งทั้งสององค์ประกอบผ่าน App Store เมื่อติดตั้งแอปพลิเคชัน iOS หลัก WatchKit ผสานรวมกับฟังก์ชันระบบ: การแจ้งเตือน (ผ่าน UNUserNotificationCenter), คอมพลิเคชัน (ข้อมูลบนหน้าปัด), Workout API และ HealthKit

ตามข้อมูลของ Counterpoint Research (2025) Apple Watch ครองส่วนแบ่ง 52% ของตลาดสมาร์ทวอทช์ทั่วโลก และผู้ใช้ทั่วไปติดตั้งแอปของบุคคลที่สาม 6–8 รายการที่ใช้ WatchKit หรือ SwiftUI หมวดหมู่ที่ได้รับความนิยมมากที่สุดคือฟิตเนส (56%) สุขภาพ (22%) การนำทาง (9%) และยูทิลิตี้ (8%)

WatchKit เทียบกับ SwiftUI สำหรับ watchOS

SwiftUI เป็นวิธีที่ Apple แนะนำสำหรับการสร้างอินเทอร์เฟซสำหรับ watchOS ตั้งแต่ watchOS 6 เป็นต้นไป SwiftUI มีรูปแบบไวยากรณ์แบบประกาศและการปรับให้เข้ากับขนาดหน้าจอโดยอัตโนมัติ อย่างไรก็ตาม WatchKit ยังคงมีความเกี่ยวข้องสำหรับโครงการที่เริ่มต้นก่อนที่ SwiftUI จะมีขึ้น สำหรับการใช้องค์ประกอบเฉพาะ (WKInterfaceMap, WKInterfaceMovie) และในกรณีที่ต้องการรองรับเวอร์ชัน watchOS ที่ต่ำกว่า 6

เกณฑ์WatchKitSwiftUI
คำแนะนำของ Appleรุ่นเก่าปัจจุบัน
watchOS ขั้นต่ำwatchOS 1watchOS 6
ปริมาณโค้ดมากกว่าน้อยกว่า
การผสานรวมคอมพลิเคชันโดยตรงผ่านคลาสผ่าน WidgetKit
WKInterfaceMapใช่แผนที่ (MapKit)

อินเทอร์เฟซ WatchKit: WKInterfaceController และองค์ประกอบ

WKInterfaceController เป็นคลาสพื้นฐานสำหรับจัดการหน้าจอใน WatchKit โดยจัดการวงจรชีวิต: การเริ่มต้น (awake(withContext:)), การปรากฏ (willActivate), การหายไป (didDeactivate) และการถ่ายโอนบริบทระหว่างตัวควบคุม แต่ละหน้าจอของแอปพลิเคชันจะแสดงโดยคลาสย่อย WKInterfaceController ที่แยกต่างหากซึ่งเชื่อมต่อกับ Storyboard ผ่าน Interface Builder การนำทางสามารถเป็นแบบลำดับชั้น (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 เป็นคลาสหลักสำหรับการสื่อสารสองทางระหว่าง Apple Watch และ iPhone ผ่าน Bluetooth หรือ Wi-Fi เซสชันอนุญาตให้ถ่ายโอนพจนานุกรมข้อมูลขนาดเล็ก (updateApplicationContext), ส่งข้อความพร้อมการตอบกลับทันที (sendMessage), ถ่ายโอนไฟล์ (transferFile) และซิงโครไนซ์ออบเจกต์ที่ซับซ้อน (transferUserInfo) WCSession ทำงานแบบอะซิงโครนัสและเลือกช่องทางการสื่อสารที่เหมาะสมที่สุดโดยอัตโนมัติ

ในการใช้ WCSession คุณต้องเปิดใช้งานเซสชันบนอุปกรณ์ทั้งสอง แอป Watch สร้าง WCSession ในเมธอด willActivate() ในขณะที่แอป iOS ทำใน AppDelegate หรือ SceneDelegate หลังจากเปิดใช้งาน อุปกรณ์จะซิงโครไนซ์บริบทโดยอัตโนมัติเมื่อเป็นไปได้ การจัดการ WCSessionDelegate เป็นสิ่งสำคัญสำหรับการรับข้อมูลขาเข้าและตรวจสอบสถานะการเชื่อมต่อ

ตัวอย่าง WCSession ฝั่ง Watch

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)
    }
}

ตัวอย่างแอป WatchKit ในภาษา Swift

การสร้างแอป WatchKit เริ่มต้นด้วยการเพิ่ม WatchKit App Target ใน Xcode Xcode สร้าง Interface.storyboard พร้อมตัวควบคุมเริ่มต้นและเชื่อมโยงกับคลาส InterfaceController โดยอัตโนมัติ นักพัฒนาเพิ่มองค์ประกอบ UI ผ่าน Interface Builder และสร้าง IBOutlets สำหรับการโต้ตอบจากโค้ด ด้านล่างเป็นตัวอย่างที่สมบูรณ์ของตัวควบคุมพร้อมตารางข้อมูลที่ได้รับจาก iPhone ผ่าน WCSession

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 (บน Watch รุ่นที่มี GPS) การออกกำลังกายเริ่มต้นผ่าน HKWorkoutSession จาก HealthKit และข้อมูลอัตราการเต้นของหัวใจจะอัปเดตแบบเรียลไทม์ผ่าน HKSampleQuery

ข้อได้เปรียบหลักของ Workout API คือการทำงานในพื้นหลัง เมื่อการออกกำลังกายทำงานอยู่ watchOS จะไม่ระงับแอปเมื่อผู้ใช้ลดข้อมือลง — เซ็นเซอร์ยังคงเก็บข้อมูลต่อไปและแอปสามารถแสดงอัตราการเต้นของหัวใจ ระยะทาง จังหวะ และเมตริกอื่น ๆ หลังจากการออกกำลังกายสิ้นสุดลง ข้อมูลจะซิงค์กับแอปสุขภาพบน iPhone ผ่าน HealthKit ซึ่งให้โปรไฟล์ฟิตเนสแบบครบวงจรสำหรับผู้ใช้

เริ่มการออกกำลังกายด้วยเซ็นเซอร์

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 แนะนำ SwiftUI สำหรับแอป watchOS ใหม่ ใช้ WatchKit เฉพาะสำหรับการสนับสนุนโปรเจกต์เก่าหรือหากคุณต้องการฟังก์ชันเฉพาะเช่น WKInterfaceMap ที่ไม่มีใน SwiftUI

วิธีถ่ายโอนข้อมูลจาก Watch ไปยัง iPhone โดยไม่มีการเชื่อมต่อ?

WCSession รองรับการถ่ายโอนแบบรอการตัดบัญชีผ่าน transferUserInfo และ transferFile ข้อมูลจะถูกส่งในการเชื่อมต่อครั้งถัดไประหว่างนาฬิกาและโทรศัพท์ ซึ่งรับประกันการส่งแม้ในกรณีที่สูญเสียการเชื่อมต่อชั่วคราว

แอป WatchKit ทำงานบน Apple Watch ทุกรุ่นหรือไม่?

แอปที่เขียนด้วย WatchKit เข้ากันได้กับ Apple Watch Series 0 และใหม่กว่า (watchOS 1+) อย่างไรก็ตาม ฟีเจอร์บางอย่าง (GPS, เครื่องวัดอัตราการเต้นของหัวใจ, Dynamic Island) มีให้ใช้งานเฉพาะในบางรุ่นเท่านั้น

ฉันสามารถใช้ SwiftUI และ WatchKit ในแอปเดียวกันได้หรือไม่?

ได้ คุณสามารถรวม SwiftUI และ WatchKit ในแอปเดียว ใช้ WKHostingController เพื่อฝัง SwiftUI View ใน WKInterfaceController หรือรวม WKInterfaceObjects ผ่าน UIViewRepresentable

วิธีดีบัก WCSession บนอุปกรณ์จริง?

เรียกใช้ ทั้งสองแอป (iOS + watchOS) จาก Xcode บนอุปกรณ์ที่เชื่อมต่อ ใช้คอนโซลดีบักเพื่อตรวจสอบข้อความ WCSessionDelegate ตรวจสอบให้แน่ใจว่าอุปกรณ์ทั้งสองอยู่ในระยะ Bluetooth (สูงสุด 10 เมตร)

สรุป

  • WatchKit เป็นเฟรมเวิร์กของ Apple สำหรับสร้างแอปบน Apple Watch โดยใช้ส่วนประกอบอินเทอร์เฟซ WKInterface และตัวควบคุม WKInterfaceController
  • WCSession เป็นกลไกหลักสำหรับการสื่อสารสองทางระหว่าง Watch และ iPhone ผ่าน Bluetooth/Wi-Fi ที่รองรับข้อความ ไฟล์ และบริบท
  • Complications เป็นข้อมูลบนหน้าปัด Apple Watch ผ่าน CLKComplicationDataSource ที่รองรับ 9 ตระกูลการแสดงผล
  • Workout API เป็นชุดคลาสสำหรับแอปฟิตเนสที่เก็บข้อมูลอัตราการเต้นของหัวใจ GPS และมาตรวัดความเร่งในพื้นหลังผ่าน HKWorkoutSession
  • SwiftUI เป็นแนวทางที่ Apple แนะนำสำหรับโปรเจกต์ใหม่ แต่ WatchKit ยังคงมีความเกี่ยวข้องสำหรับแอปรุ่นเก่าและฟังก์ชันเฉพาะ
  • การรวม WatchKit และ SwiftUI ในแอปเดียวทำได้ผ่าน WKHostingController และ UIViewRepresentable

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม