Dynamic Island: nó là gì, tương tác với Dynamic Island

Tác giả: IT Sectr Đã đăng: 2026-02-28 Thời gian đọc: 9 phút

Dynamic Island là một khu vực tương tác ở phần trên của iPhone 14 Pro và tất cả iPhone 15/16, kết hợp thông báo, hoạt động nền và chỉ báo hệ thống trong một vùng động duy nhất. Không giống như notch truyền thống, Dynamic Island thay đổi hình dạng và kích thước tùy theo ngữ cảnh hiện tại. Theo Apple (WWDC 2024), người dùng tương tác với Dynamic Island trung bình 12 lần mỗi ngày — qua chạm, nhấn giữ và Live Activities với ActivityKit. Tìm hiểu thêm về hoạt ảnh trong iOS trong bài viết về Corner Radius.

Những điểm chính

  • Dynamic Island là giải pháp phần mềm-phần cứng của Apple, thay thế notch bằng vùng tương tác có hình dạng thay đổi.
  • Live Activities là widget trên Dynamic Island hoạt động qua framework ActivityKit (iOS 16.1+).
  • Ba trạng thái: gọn (biểu tượng), tối thiểu (viên), mở rộng (bảng có nội dung).
  • ActivityKit là framework Swift để xuất bản Live Activities lên Dynamic Island và Màn hình khóa.
  • Dynamic Island hỗ trợ cử chỉ: chạm để mở ứng dụng, nhấn giữ để mở rộng bảng.

Dynamic Island là gì?

Dynamic Island là một khu vực tương tác dựa trên giải pháp phần mềm-phần cứng của Apple, được giới thiệu vào tháng 9 năm 2022 cùng với iPhone 14 Pro. Về mặt vật lý, đó là một phần cắt hình viên thuốc được bao quanh bởi các pixel OLED thay đổi màu sắc và hình dạng một cách động. Apple sử dụng kết hợp phần cứng cắt cho camera và Face ID với kết xuất phần mềm các vùng đen xung quanh, tạo ra ảo giác về một «hòn đảo sống».

Mục tiêu chính của Dynamic Island là thu hẹp khoảng cách giữa thông báo hệ thống và nội dung đang hoạt động. Thay vì thông báo xuất hiện ở giữa màn hình (như trên Android) hoặc dưới dạng biểu ngữ từ trên xuống (như trên iOS cũ hơn), Dynamic Island tích hợp chúng trực tiếp vào vùng phần cứng. Điều này giảm sự xao nhãng và tạo cảm giác không gian thống nhất.

Theo dữ liệu của Apple (Thống kê áp dụng iOS 17, 2024), Dynamic Island có sẵn trên 38% iPhone đang hoạt động. Bắt đầu từ iPhone 15 (2023), tất cả các model trong dòng sản phẩm đều có Dynamic Island, bao gồm cả các model cơ bản. Trong iOS 18, Apple đã mở rộng API Live Activities, thêm hỗ trợ cho bộ đếm ngược và điểm thể thao trực tiếp trên Dynamic Island.

Những model nào hỗ trợ Dynamic Island

Dynamic Island có sẵn trên 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 không có trên iPad. Phát triển cho Dynamic Island yêu cầu Xcode 14.1+ và iOS 16.1+.

Cách Dynamic Island hoạt động: ba trạng thái

Dynamic Island hỗ trợ ba trạng thái hiển thị: gọn, tối thiểu và mở rộng. Chuyển đổi giữa các trạng thái được tạo hoạt ảnh bằng UIKit Animation và Core Animation. Hệ thống tự quản lý mức độ ưu tiên hoạt động: nếu nhiều ứng dụng cố gắng hiển thị nội dung cùng lúc, iOS sử dụng hàng đợi dựa trên thời gian bắt đầu của hoạt động cuối cùng.

Trạng tháiKích thướcNội dungVí dụ
Gọn49×18 ptBiểu tượng ứng dụng + biểu tượng hệ thốngĐếm giờ, nhạc, cuộc gọi
Tối thiểuLên đến 66×18 ptBiểu tượng + văn bản ngắnChỉ đường, số bước
Mở rộngLên đến 364×160 ptWidget đầy đủ với nội dungĐiểm thể thao, trạng thái taxi

Trạng thái gọn là chế độ xem tiêu chuẩn của Dynamic Island khi có một tác vụ nền đang hoạt động. Nó xuất hiện dưới dạng viên tròn với biểu tượng ứng dụng bên trái và biểu tượng hệ thống bên phải. Theo mặc định, tất cả Live Activities đều bắt đầu ở trạng thái gọn.

Trạng thái tối thiểu xảy ra khi có hai hoặc nhiều tác vụ hoạt động đồng thời. Dynamic Island «chia» thành hai phần tử riêng biệt ở bên trái và bên phải camera. Trạng thái tối thiểu cho phép hiển thị hai nguồn thông tin độc lập, như thời gian đến của taxi và bản nhạc hiện tại.

Trạng thái mở rộng được kích hoạt bằng cách nhấn giữ trên Dynamic Island. Ở chế độ này, một widget đầy đủ với nội dung có thể tùy chỉnh được hiển thị: tiêu đề, mô tả, thanh tiến trình, nút bấm. Trạng thái mở rộng hỗ trợ cuộn và các phần tử tương tác.

ActivityKit và Live Activities: Swift API

ActivityKit là một framework Swift được giới thiệu trong iOS 16.1, cho phép các ứng dụng xuất bản Live Activities lên Dynamic Island và Màn hình khóa. ActivityKit sử dụng kiến trúc dựa trên ActivityView và ActivityAttributes: cái đầu tiên xác định loại nội dung, cái thứ hai xác định dữ liệu có thể thay đổi. Framework hoạt động kết hợp với WidgetKit, nhưng không giống như widget, Live Activities có thể cập nhật theo thời gian thực mà không cần mở ứng dụng.

swift
import ActivityKit
import SwiftUI

// Xác định thuộc tính hoạt động
struct DeliveryAttributes: ActivityAttributes {
    public struct ContentState: Codable, Hashable {
        var driverName: String
        var distanceToArrival: Double
        var estimatedMinutes: Int
    }
    var orderNumber: String
}

// Bắt đầu Live Activity
func startDeliveryActivity() {
    let initialState = DeliveryAttributes.ContentState(
        driverName: "Alexei",
        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 được cập nhật qua ActivityView, nơi kết xuất nội dung SwiftUI cho Dynamic Island. Hệ thống tự xác định mẫu nào sẽ sử dụng (gọn, tối thiểu hoặc mở rộng) tùy theo kích thước của Dynamic Island và số lượng hoạt động. Để cập nhật nội dung, hãy gọi activity.update(using: contentState). Để kết thúc — activity.end(dismissalPolicy: .immediate).

Thông báo động với cập nhật push

ActivityKit hỗ trợ cập nhật push qua APNs (Apple Push Notification Service). Khi bắt đầu Live Activity, bạn có thể yêu cầu pushToken và gửi cập nhật từ máy chủ mà không cần khởi chạy ứng dụng trên thiết bị. Cập nhật push hoạt động qua activity.pushToken và Activity.pushToStartToken để khởi động Live Activity từ xa.

swift
// Cập nhật Live Activity qua Push
func updateActivity(activity: Activity<DeliveryAttributes>) {
    let updatedState = DeliveryAttributes.ContentState(
        driverName: "Alexei",
        distanceToArrival: 1.2,
        estimatedMinutes: 4
    )
    let alertConfiguration = AlertConfiguration(
        title: "Người giao hàng ở gần",
        body: "Alexei sẽ đến trong 4 phút nữa",
        sound: .default
    )
    await activity.update(
        using: updatedState,
        alertConfiguration: alertConfiguration
    )
}

AlertConfiguration là một tham số tùy chọn hiển thị thông báo trên Dynamic Island cho các cập nhật quan trọng (ví dụ: «Người giao hàng đã đến»). Không có AlertConfiguration, nội dung được cập nhật trong nền, phù hợp cho thanh tiến trình và bộ đếm giờ.

Dynamic Island vs Notch: so sánh

Notch là phần cắt cứng của iPhone X–13 chứa camera trước, cảm biến Face ID và loa. Notch là tĩnh: kích thước và hình dạng của nó không thay đổi, và thông báo được hiển thị bên dưới dưới dạng biểu ngữ tiêu chuẩn. Dynamic Island, ngược lại, sử dụng các pixel xung quanh phần cắt để hiển thị nội dung, biến phần tử phần cứng thành một phần của giao diện.

Tiêu chíDynamic IslandNotch
Tương tácHỗ trợ chạm, nhấn giữ, vuốtKhông tương tác
Thích ứng nội dungThay đổi hình dạng theo ngữ cảnhTĩnh, nội dung dưới notch
Live ActivitiesHỗ trợ tích hợp qua ActivityKitKhông — chỉ thông báo thường
Đa nhiệmHai hoạt động đồng thời (trái và phải)Chỉ một hoạt động
Khả dụngiOS 16.1+, iPhone 14 Pro trở lêniOS 11+, iPhone X–13

Theo Nguyên tắc Giao diện Người dùng Apple (2025), Dynamic Island không nên được sử dụng cho quảng cáo hoặc hiển thị nội dung tĩnh vĩnh viễn. Live Activities chỉ dành cho các tác vụ nền có vòng đời rõ ràng: bộ đếm giờ, giao hàng, thể thao, nhạc, điều hướng. Vi phạm các quy tắc này dẫn đến việc ứng dụng bị từ chối trong quá trình xét duyệt App Store.

Vòng đời và cử chỉ của Dynamic Island

Dynamic Island có vòng đời nghiêm ngặt: một hoạt động bắt đầu bằng yêu cầu qua Activity.request(), trải qua các trạng thái hoạt động/tạm dừng/đã cập nhật và kết thúc bằng lệnh gọi activity.end(). Hệ thống có thể buộc kết thúc hoạt động khi thiếu bộ nhớ (ví dụ: khi khởi động camera). Trong trường hợp này, ứng dụng nhận được thông báo qua ActivityActivityState.finished.

Cử chỉ trên Dynamic Island được xử lý bởi nội dung SwiftUI bên trong ActivityView. Cử chỉ tiêu chuẩn: chạm vào trạng thái gọn mở ứng dụng, nhấn giữ mở rộng trạng thái mở rộng, vuốt xuống đóng trạng thái mở rộng. Cử chỉ tùy chỉnh được thêm qua các bổ ngữ SwiftUI (onTapGesture, onLongPressGesture) bên trong view hoạt động.

Xử lý trạng thái finished

Khi hệ thống kết thúc Live Activity (hoặc người dùng vuốt để xóa), ứng dụng cần xử lý trạng thái finished để giải phóng tài nguyên. Nên đăng ký Activity.activityStateUpdates và xóa các tham chiếu cục bộ đến hoạt động sau khi hoàn thành.

swift
import ActivityKit

func observeActivityState(activity: Activity<DeliveryAttributes>) {
    Task {
        for await state in activity.activityStateUpdates {
            switch state {
            case .active:
                print("Hoạt động đang hoạt động trên Dynamic Island")
            case .dismissed:
                print("Hoạt động bị người dùng ẩn")
                await activity.end(dismissalPolicy: .immediate)
            case .finished:
                print("Hoạt động bị hệ thống kết thúc")
                cleanupResources()
            @unknown default:
                break
            }
        }
    }
}

Khuyến nghị của Apple (WWDC 2024, Phiên 10146): không sử dụng Dynamic Island để hiển thị trạng thái không cần sự chú ý của người dùng. Mỗi Live Activity phải có trình kích hoạt bắt đầu và kết thúc rõ ràng. Đối với cập nhật nền không có giao diện người dùng, hãy sử dụng Background Tasks thay vì Live Activities.

Câu hỏi thường gặp

Dynamic Island hoạt động trên những iPhone nào?

Dynamic Island có sẵn trên iPhone 14 Pro, 14 Pro Max và tất cả các model iPhone 15 và iPhone 16 (bao gồm các phiên bản cơ bản). Phát triển yêu cầu iOS 16.1+ và Xcode 14.1. Trên các model cũ hơn (iPhone X–13), sử dụng notch tĩnh không hỗ trợ Live Activities.

Dynamic Island khác với thông báo thường như thế nào?

Dynamic Island tích hợp thông báo vào vùng phần cứng của màn hình mà không che nội dung. Thông báo thường xuất hiện dưới dạng biểu ngữ từ trên xuống và biến mất sau vài giây. Live Activities trên Dynamic Island có thể duy trì hoạt động hàng giờ và cập nhật theo thời gian thực (trạng thái giao hàng, bộ đếm giờ, nhạc).

Làm thế nào để cập nhật nội dung trên Dynamic Island mà không cần mở ứng dụng?

Sử dụng cập nhật push qua APNs. Khi bắt đầu Live Activity, hãy gọi activity.pushToken và gửi token đến máy chủ của bạn. Máy chủ gửi yêu cầu cập nhật qua APNs với ContentState mới. Thay thế là cập nhật cục bộ qua activity.update(using:) từ trong ứng dụng.

Làm thế nào để hiển thị hai hoạt động cùng lúc trên Dynamic Island?

iOS tự động chia Dynamic Island thành hai phân đoạn khi có hai Live Activities đang hoạt động. Mỗi hoạt động được hiển thị ở trạng thái tối thiểu bên trái và bên phải camera. Nhấn giữ một trong các phân đoạn sẽ mở trạng thái mở rộng chỉ cho ứng dụng đó.

Tại sao Live Activity của tôi không xuất hiện trên Dynamic Island?

Kiểm tra: (1) ứng dụng có NSSupportsLiveActivities = YES trong Info.plist, (2) ActivityAttributes và ContentState triển khai Codable và Hashable, (3) phiên bản iOS là 16.1+, (4) thiết bị hỗ trợ Dynamic Island. Đối với trình mô phỏng, hãy sử dụng iPhone 14 Pro trở lên trong Xcode.

Tóm tắt

  • Dynamic Island — vùng tương tác của iPhone 14 Pro+, thay thế notch tĩnh.
  • Hỗ trợ ba trạng thái: gọn, tối thiểu và mở rộng với hoạt ảnh chuyển tiếp mượt mà.
  • ActivityKit — framework Swift để xuất bản Live Activities lên Dynamic Island và Màn hình khóa.
  • Live Activities được cập nhật qua lệnh gọi cục bộ hoặc thông báo push qua APNs.
  • Cử chỉ: chạm để vào ứng dụng, nhấn giữ để mở rộng bảng, vuốt để đóng.
  • Dynamic Island hỗ trợ tối đa hai hoạt động đồng thời với phân chia phân đoạn.
  • Apple giới hạn việc sử dụng Live Activities chỉ cho các tác vụ nền có khung thời gian rõ ràng.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm