Dynamic Island: คืออะไร การโต้ตอบกับ Dynamic Island

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

Dynamic Island คือพื้นที่โต้ตอบที่ด้านบนของ iPhone 14 Pro และ iPhone 15/16 ทุกรุ่น ซึ่งรวมการแจ้งเตือน กิจกรรมพื้นหลัง และตัวบ่งชี้ระบบไว้ในโซนไดนามิกเดียว แตกต่างจากรอยบากแบบดั้งเดิม (notch) Dynamic Island เปลี่ยนรูปร่างและขนาดตามบริบทปัจจุบัน ตามข้อมูลของ Apple (WWDC 2024) ผู้ใช้โต้ตอบกับ Dynamic Island โดยเฉลี่ย 12 ครั้งต่อวัน — ผ่านการแตะ การกดค้าง และ Live Activities ด้วย ActivityKit เรียนรู้เพิ่มเติมเกี่ยวกับแอนิเมชันใน iOS ได้ใน บทความเกี่ยวกับ Corner Radius

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

  • Dynamic Island คือโซลูชันซอฟต์แวร์-ฮาร์ดแวร์ของ Apple ที่แทนที่รอยบากด้วยโซนโต้ตอบที่มีรูปทรงแปรผัน
  • Live Activities คือวิดเจ็ตบน Dynamic Island ที่ทำงานผ่านเฟรมเวิร์ก ActivityKit (iOS 16.1+)
  • สามสถานะ: กะทัดรัด (ไอคอน), ขนาดเล็ก (ยาเม็ด), ขยาย (แผงพร้อมเนื้อหา)
  • ActivityKit คือเฟรมเวิร์ก Swift สำหรับเผยแพร่ Live Activities บน Dynamic Island และ Lock Screen
  • Dynamic Island รองรับ ท่าทาง: แตะเพื่อเปิดแอป, กดค้างเพื่อขยายแผง

Dynamic Island คืออะไร

Dynamic Island คือพื้นที่โต้ตอบที่อิงตามโซลูชันซอฟต์แวร์-ฮาร์ดแวร์ของ Apple เปิดตัวในเดือนกันยายน 2022 พร้อมกับ iPhone 14 Pro ในทางกายภาพ มันคือรอยตัดรูปทรงยาเม็ดที่ล้อมรอบด้วยพิกเซล OLED ซึ่งเปลี่ยนสีและรูปร่างแบบไดนามิก Apple ใช้การผสมผสานระหว่างรอยตัดฮาร์ดแวร์สำหรับกล้องและ Face ID กับการเรนเดอร์ซอฟต์แวร์ของพื้นที่สีดำรอบ ๆ ทำให้เกิดภาพลวงตาของ «เกาะที่มีชีวิต»

เป้าหมายหลักของ Dynamic Island คือการเชื่อมช่องว่างระหว่างการแจ้งเตือนระบบและเนื้อหาที่กำลังทำงานอยู่ แทนที่การแจ้งเตือนจะปรากฏที่กลางหน้าจอ (เช่นบน Android) หรือเป็นแถบจากด้านบน (เช่นบน iOS รุ่นเก่า) Dynamic Island จะรวมเข้ากับโซนฮาร์ดแวร์โดยตรง ซึ่งช่วยลดสิ่งรบกวนและสร้างความรู้สึกของพื้นที่ที่เป็นหนึ่งเดียว

ตามข้อมูลของ Apple (สถิติการยอมรับ iOS 17, 2024) Dynamic Island พร้อมใช้งานบน 38% ของ iPhone ที่ใช้งานอยู่ เริ่มต้นด้วย iPhone 15 (2023) ทุกรุ่นในไลน์อัปได้รับ Dynamic Island รวมถึงรุ่นพื้นฐาน ใน iOS 18 Apple ได้ขยาย API Live Activities เพิ่มการรองรับตัวจับเวลาถอยหลังและคะแนนกีฬาบน Dynamic Island โดยตรง

รุ่นใดบ้างที่รองรับ Dynamic Island

Dynamic Island พร้อมใช้งานบน iPhone 14 Pro, iPhone 14 Pro Max, iPhone 15, iPhone 15 Plus, iPhone 15 Pro, iPhone 15 Pro Max, iPhone 16, iPhone 16 Plus, iPhone 16 Pro, iPhone 16 Pro Max Dynamic Island ไม่พร้อมใช้งานบน iPad การพัฒนาสำหรับ Dynamic Island ต้องใช้ Xcode 14.1+ และ iOS 16.1+

Dynamic Island ทำงานอย่างไร: สามสถานะ

Dynamic Island รองรับสามสถานะการแสดงผล: กะทัดรัด ขนาดเล็ก และขยาย การเปลี่ยนระหว่างสถานะเป็นแบบแอนิเมชันโดยใช้ UIKit Animation และ Core Animation ระบบจัดการลำดับความสำคัญของกิจกรรมด้วยตัวเอง: หากหลายแอปพยายามแสดงเนื้อหาพร้อมกัน iOS จะใช้คิวตามเวลาเริ่มต้นของกิจกรรมล่าสุด

สถานะขนาดเนื้อหาตัวอย่าง
กะทัดรัด49×18 ptไอคอนแอป + ไอคอนระบบตัวจับเวลา, เพลง, สายโทร
ขนาดเล็กสูงสุด 66×18 ptไอคอน + ข้อความสั้นเส้นทางการนำทาง, ขั้นตอน
ขยายสูงสุด 364×160 ptวิดเจ็ตเต็มรูปแบบพร้อมเนื้อหาคะแนนกีฬา, สถานะแท็กซี่

สถานะกะทัดรัด คือมุมมองมาตรฐานของ Dynamic Island เมื่อมีงานพื้นหลังหนึ่งรายการทำงานอยู่ จะปรากฏเป็นยาเม็ดรูปทรงกลมพร้อมไอคอนแอปทางซ้ายและไอคอนระบบทางขวา โดยค่าเริ่มต้น Live Activities ทั้งหมดจะเริ่มในสถานะกะทัดรัด

สถานะขนาดเล็ก เกิดขึ้นเมื่อมีงานสองรายการขึ้นไปทำงานพร้อมกัน Dynamic Island «แบ่ง» ออกเป็นสององค์ประกอบแยกกันทางซ้ายและขวาของกล้อง สถานะขนาดเล็ก ช่วยให้แสดงแหล่งข้อมูลอิสระสองแหล่ง เช่น เวลาที่แท็กซี่จะมาถึงและเพลงที่กำลังเล่น

สถานะขยาย จะเปิดใช้งานโดยการกดค้างบน Dynamic Island ในโหมดนี้ จะแสดงวิดเจ็ตเต็มรูปแบบพร้อมเนื้อหาที่ปรับแต่งได้: หัวเรื่อง, คำอธิบาย, แถบความคืบหน้า, ปุ่ม สถานะขยายรองรับการเลื่อนและองค์ประกอบโต้ตอบ

ActivityKit และ Live Activities: Swift API

ActivityKit คือเฟรมเวิร์ก Swift ที่เปิดตัวใน iOS 16.1 ซึ่งช่วยให้แอปสามารถเผยแพร่ Live Activities บน Dynamic Island และ Lock Screen ActivityKit ใช้สถาปัตยกรรมที่อิงตาม ActivityView และ ActivityAttributes: ตัวแรกกำหนดประเภทเนื้อหา ตัวหลังกำหนดข้อมูลที่เปลี่ยนแปลงได้ เฟรมเวิร์กทำงานร่วมกับ WidgetKit แต่แตกต่างจากวิดเจ็ต Live Activities สามารถอัปเดตแบบเรียลไทม์โดยไม่ต้องเปิดแอป

swift
import ActivityKit
import SwiftUI

// กำหนดคุณสมบัติกิจกรรม
struct DeliveryAttributes: ActivityAttributes {
    public struct ContentState: Codable, Hashable {
        var driverName: String
        var distanceToArrival: Double
        var estimatedMinutes: Int
    }
    var orderNumber: String
}

// เริ่ม Live Activity
func startDeliveryActivity() {
    let initialState = DeliveryAttributes.ContentState(
        driverName: "อเล็กเซย์",
        distanceToArrival: 3.5,
        estimatedMinutes: 12
    )
    let attributes = DeliveryAttributes(orderNumber: "ORD-2024-8912")
    let activity = try? Activity.request(
        attributes: attributes,
        contentState: initialState,
        pushType: .token
    )
}

Live Activities อัปเดตผ่าน ActivityView ซึ่งเรนเดอร์เนื้อหา SwiftUI สำหรับ Dynamic Island ระบบจะกำหนดเทมเพลตที่จะใช้เอง (กะทัดรัด ขนาดเล็ก หรือขยาย) ขึ้นอยู่กับขนาดของ Dynamic Island และจำนวนกิจกรรม หากต้องการอัปเดตเนื้อหา ให้เรียก activity.update(using: contentState) หากต้องการสิ้นสุด — activity.end(dismissalPolicy: .immediate)

การแจ้งเตือนแบบไดนามิกด้วย Push Updates

ActivityKit รองรับ push updates ผ่าน APNs (Apple Push Notification Service) เมื่อเริ่ม Live Activity คุณสามารถขอ pushToken และส่งการอัปเดตจากเซิร์ฟเวอร์โดยไม่ต้องเปิดแอปบนอุปกรณ์ การอัปเดตแบบพุชทำงานผ่าน activity.pushToken และ Activity.pushToStartToken สำหรับการเริ่ม Live Activity จากระยะไกล

swift
// อัปเดต Live Activity ผ่าน Push
func updateActivity(activity: Activity<DeliveryAttributes>) {
    let updatedState = DeliveryAttributes.ContentState(
        driverName: "อเล็กเซย์",
        distanceToArrival: 1.2,
        estimatedMinutes: 4
    )
    let alertConfiguration = AlertConfiguration(
        title: "ผู้จัดส่งอยู่ใกล้",
        body: "อเล็กเซย์จะมาถึงใน 4 นาที",
        sound: .default
    )
    await activity.update(
        using: updatedState,
        alertConfiguration: alertConfiguration
    )
}

AlertConfiguration คือพารามิเตอร์เสริมที่แสดงการแจ้งเตือนเหนือ Dynamic Island สำหรับการอัปเดตสำคัญ (เช่น «ผู้จัดส่งมาถึงแล้ว») หากไม่มี AlertConfiguration เนื้อหาจะอัปเดตแบบเงียบ ซึ่งเหมาะสำหรับแถบความคืบหน้าและตัวจับเวลา

Dynamic Island เทียบกับ Notch: เปรียบเทียบ

Notch (รอยบาก) คือรอยตัดฮาร์ดแวร์ของ iPhone X–13 ที่ประกอบด้วยกล้องหน้า เซ็นเซอร์ Face ID และลำโพง Notch เป็นแบบคงที่: ขนาดและรูปร่างไม่เปลี่ยนแปลง และการแจ้งเตือนจะแสดงด้านล่างเป็นแถบมาตรฐาน ในทางกลับกัน Dynamic Island ใช้พิกเซลรอบรอยตัดเพื่อแสดงเนื้อหา ทำให้องค์ประกอบฮาร์ดแวร์เป็นส่วนหนึ่งของอินเทอร์เฟซ

เกณฑ์Dynamic IslandNotch
การโต้ตอบรองรับการแตะ, กดค้าง, ปัดไม่โต้ตอบ
การปรับเนื้อหาเปลี่ยนรูปร่างตามบริบทคงที่, เนื้อหาอยู่ใต้รอยบาก
Live Activitiesรองรับในตัวผ่าน ActivityKitไม่มี — เฉพาะการแจ้งเตือนมาตรฐาน
มัลติทาสก์สองกิจกรรมพร้อมกัน (ซ้ายและขวา)เพียงกิจกรรมเดียว
ความพร้อมใช้งานiOS 16.1+, iPhone 14 Pro และใหม่กว่าiOS 11+, iPhone X–13

ตาม Apple Human Interface Guidelines (2025) ไม่ควรใช้ Dynamic Island สำหรับโฆษณาหรือการแสดงเนื้อหาคงที่แบบถาวร Live Activities มีไว้สำหรับงานพื้นหลังที่มีวงจรชีวิตชัดเจนเท่านั้น: ตัวจับเวลา, การจัดส่ง, กีฬา, เพลง, การนำทาง การละเมิดกฎเหล่านี้จะนำไปสู่การปฏิเสธแอปในการตรวจสอบ App Store

วงจรชีวิตและท่าทางของ Dynamic Island

Dynamic Island มีวงจรชีวิตที่เคร่งครัด: กิจกรรมเริ่มต้นด้วยคำขอผ่าน Activity.request() ผ่านสถานะ ทำงาน/หยุดชั่วคราว/อัปเดตแล้ว และสิ้นสุดด้วยการเรียก activity.end() ระบบสามารถบังคับสิ้นสุดกิจกรรมเมื่อหน่วยความจำต่ำ (เช่น เมื่อเปิดกล้อง) ในกรณีนี้ แอปจะได้รับการแจ้งเตือนผ่าน ActivityActivityState.finished

ท่าทาง บน Dynamic Island จัดการโดยเนื้อหา SwiftUI ภายใน ActivityView ท่าทางมาตรฐาน: แตะที่สถานะกะทัดรัดเพื่อเปิดแอป, กดค้างเพื่อขยายสถานะขยาย, ปัดลงเพื่อปิดสถานะขยาย ท่าทางที่กำหนดเองจะเพิ่มผ่านตัวปรับแต่ง SwiftUI (onTapGesture, onLongPressGesture) ภายในวิวกิจกรรม

การจัดการสถานะ finished

เมื่อระบบสิ้นสุด Live Activity (หรือผู้ใช้ปัดเพื่อลบ) แอปควรจัดการสถานะ finished เพื่อปล่อยทรัพยากร แนะนำให้สมัครรับ Activity.activityStateUpdates และลบการอ้างอิงภายในกิจกรรมหลังจากเสร็จสิ้น

swift
import ActivityKit

func observeActivityState(activity: Activity<DeliveryAttributes>) {
    Task {
        for await state in activity.activityStateUpdates {
            switch state {
            case .active:
                print("กิจกรรมทำงานบน Dynamic Island")
            case .dismissed:
                print("กิจกรรมถูกซ่อนโดยผู้ใช้")
                await activity.end(dismissalPolicy: .immediate)
            case .finished:
                print("กิจกรรมสิ้นสุดโดยระบบ")
                cleanupResources()
            @unknown default:
                break
            }
        }
    }
}

คำแนะนำของ Apple (WWDC 2024, เซสชัน 10146): อย่าใช้ Dynamic Island สำหรับแสดงสถานะที่ไม่ต้องการความสนใจจากผู้ใช้ Live Activity แต่ละรายการควรมีตัวกระตุ้นเริ่มต้นและสิ้นสุดที่ชัดเจน สำหรับการอัปเดตพื้นหลังที่ไม่มีส่วนติดต่อผู้ใช้ ให้ใช้ Background Tasks แทน Live Activities

คำถามที่พบบ่อย

Dynamic Island ทำงานบน iPhone รุ่นใดบ้าง

Dynamic Island พร้อมใช้งานบน iPhone 14 Pro, 14 Pro Max และทุกรุ่น iPhone 15 และ iPhone 16 (รวมถึงรุ่นพื้นฐาน) การพัฒนาต้องใช้ iOS 16.1+ และ Xcode 14.1 ในรุ่นเก่า (iPhone X–13) จะใช้รอยบากแบบคงที่ซึ่งไม่รองรับ Live Activities

Dynamic Island แตกต่างจากการแจ้งเตือนปกติอย่างไร

Dynamic Island รวมการแจ้งเตือนเข้ากับโซนฮาร์ดแวร์ของหน้าจอโดยไม่บดบังเนื้อหา การแจ้งเตือนปกติจะปรากฏเป็นแถบที่ด้านบนและหายไปหลังจากไม่กี่วินาที Live Activities บน Dynamic Island สามารถทำงานต่อไปได้เป็นชั่วโมงและอัปเดตแบบเรียลไทม์ (สถานะการจัดส่ง, ตัวจับเวลา, เพลง)

วิธีอัปเดตเนื้อหาบน Dynamic Island โดยไม่ต้องเปิดแอป

ใช้ push updates ผ่าน APNs เมื่อเริ่ม Live Activity ให้เรียก activity.pushToken และส่งโทเค็นไปยังเซิร์ฟเวอร์ของคุณ เซิร์ฟเวอร์ส่งคำขออัปเดตผ่าน APNs พร้อม ContentState ใหม่ ทางเลือกอื่นคือการอัปเดตภายในผ่าน activity.update(using:) จากภายในแอป

วิธีแสดงสองกิจกรรมพร้อมกันบน Dynamic Island

iOS จะแบ่ง Dynamic Island ออกเป็นสองส่วนโดยอัตโนมัติเมื่อมี Live Activities สองรายการทำงานอยู่ แต่ละกิจกรรมจะแสดงใน สถานะขนาดเล็ก ทางซ้ายและขวาของกล้อง การกดค้างบนส่วนใดส่วนหนึ่งจะเปิดสถานะขยายเฉพาะแอปนั้นเท่านั้น

ทำไม Live Activity ของฉันไม่แสดงบน Dynamic Island

ตรวจสอบ: (1) แอปมี NSSupportsLiveActivities = YES ใน Info.plist, (2) ActivityAttributes และ ContentState ใช้ Codable และ Hashable, (3) เวอร์ชัน iOS คือ 16.1+, (4) อุปกรณ์รองรับ Dynamic Island สำหรับโปรแกรมจำลอง ให้ใช้ iPhone 14 Pro หรือใหม่กว่าใน Xcode

สรุป

  • Dynamic Island — โซนโต้ตอบของ iPhone 14 Pro+ ที่แทนที่รอยบากแบบคงที่
  • รองรับสามสถานะ: กะทัดรัด ขนาดเล็ก และขยาย พร้อมแอนิเมชันการเปลี่ยนที่ราบรื่น
  • ActivityKit — เฟรมเวิร์ก Swift สำหรับเผยแพร่ Live Activities บน Dynamic Island และ Lock Screen
  • Live Activities อัปเดตผ่านการเรียกภายในหรือการแจ้งเตือนแบบพุชผ่าน APNs
  • ท่าทาง: แตะเพื่อไปยังแอป, กดค้างเพื่อขยายแผง, ปัดเพื่อปิด
  • Dynamic Island รองรับสูงสุดสองกิจกรรมพร้อมกันโดยแบ่งเป็นส่วน
  • Apple จำกัดการใช้ Live Activities เฉพาะงานพื้นหลังที่มีกรอบเวลาที่ชัดเจน

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

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

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

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