Dynamic Island — isang interactive na lugar sa itaas na bahagi ng iPhone 14 Pro at lahat ng iPhone 15/16, na pinagsasama ang mga notification, background activity at system indicator sa iisang dynamic na zone. Hindi tulad ng tradisyonal na notch, binabago ng Dynamic Island ang hugis at laki depende sa kasalukuyang konteksto. Ayon sa data ng Apple (WWDC 2024), ang mga user ay nakikipag-ugnayan sa Dynamic Island ng average na 12 beses sa isang araw — sa pamamagitan ng pag-tap, mahabang pagpindot at Live Activities gamit ang ActivityKit. Magbasa pa tungkol sa mga animation sa iOS sa artikulo tungkol sa Corner Radius.
Mga Pangunahing Punto
Dynamic Island — ay isang interactive na lugar batay sa software-hardware na solusyon ng Apple, na ipinakilala noong Setyembre 2022 kasama ang iPhone 14 Pro. Pisikal, ito ay isang notch na hugis pill, na napapalibutan ng OLED pixels na dinamikong nagbabago ng kulay at hugis. Gumagamit ang Apple ng kombinasyon ng hardware compartment para sa camera at Face ID na may software rendering ng mga itim na lugar sa paligid nito, na lumilikha ng ilusyon ng isang «buhay» na isla.
Ang pangunahing layunin ng Dynamic Island ay alisin ang agwat sa pagitan ng system notification at aktibong nilalaman. Sa halip na lumitaw ang mga notification sa gitna ng screen (tulad ng sa Android) o bilang mga banner sa itaas (tulad ng sa mas lumang iOS), Dynamic Island ang nag-iintegrate ng mga ito nang direkta sa hardware zone. Binabawasan nito ang pagkagambala at lumilikha ng pakiramdam ng nagkakaisang espasyo.
Ayon sa data ng Apple (iOS 17 Adoption Statistics, 2024), ang Dynamic Island ay available sa 38% ng mga aktibong iPhone. Simula sa iPhone 15 (2023), lahat ng modelo sa serye ay nakatanggap ng Dynamic Island, kasama ang mga base model. Sa iOS 18, pinalawak ng Apple ang Live Activities API, nagdagdag ng suporta para sa countdown timer at mga resulta ng sports nang direkta sa Dynamic Island.
Dynamic Island ay available sa 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. Sa iPad, wala ang Dynamic Island. Para sa pag-develop gamit ang Dynamic Island, kinakailangan ang Xcode 14.1+ at iOS 16.1+.
Dynamic Island ay sumusuporta sa tatlong estado ng pagpapakita: compact (compact), minimal (minimal) at expanded (expanded). Ang paglipat sa pagitan ng mga estado ay nai-animate gamit ang UIKit animations at Core Animation. Ang sistema mismo ang namamahala sa priyoridad ng mga aktibidad: kung maraming app ang sumusubok na magpakita ng nilalaman nang sabay-sabay, gumagamit ang iOS ng queue batay sa oras ng pagsisimula ng huling aktibidad.
| Estado | Sukat | Nilalaman | Halimbawa |
|---|---|---|---|
| Compact | 49×18 pt | Icon ng app + system icon | Timer, musika, tawag |
| Minimal | Hanggang 66×18 pt | Icon + maikling text | Mga direksyon sa nabigasyon, hakbang |
| Expanded | Hanggang 364×160 pt | Buong widget na may nilalaman | Iskor ng sports, status ng taxi |
Compact na estado — ang karaniwang view ng Dynamic Island kapag isang background task ang aktibo. Ipinapakita bilang isang bilog na pill na may icon ng app sa kaliwa at system icon sa kanan. Bilang default, lahat ng Live Activities ay nagsisimula sa compact na estado.
Minimal na estado ay nangyayari kapag dalawa o higit pang mga task ang aktibo nang sabay-sabay. Ang Dynamic Island ay «nahahati» sa dalawang magkahiwalay na elemento sa kaliwa at kanan ng camera. Minimal na estado ay nagpapahintulot sa pagpapakita ng dalawang independiyenteng mapagkukunan ng impormasyon, halimbawa oras ng pagdating ng taxi at kasalukuyang track.
Expanded na estado ay na-activate sa pamamagitan ng mahabang pagpindot sa Dynamic Island. Sa mode na ito, isang buong widget na may nako-customize na nilalaman ang ipinapakita: mga pamagat, paglalarawan, progress bar, mga button. Ang expanded na estado ay sumusuporta sa pag-scroll at mga interactive na elemento.
ActivityKit — Swift framework, na ipinakilala sa iOS 16.1, na nagpapahintulot sa mga app na mag-publish ng Live Activities sa Dynamic Island at Lock Screen. Gumagamit ang ActivityKit ng arkitektura batay sa ActivityView at ActivityAttributes: ang una ay tumutukoy sa uri ng nilalaman, ang pangalawa — sa variable na data. Ang framework ay gumagana kasama ng WidgetKit, ngunit hindi tulad ng mga widget, ang Live Activities ay maaaring mag-update sa real-time nang hindi binubuksan ang app.
import ActivityKit
import SwiftUI
// Tinutukoy ang mga attribute ng aktibidad
struct DeliveryAttributes: ActivityAttributes {
public struct ContentState: Codable, Hashable {
var driverName: String
var distanceToArrival: Double
var estimatedMinutes: Int
}
var orderNumber: String
}
// Sinisimulan ang Live Activity
func startDeliveryActivity() {
let initialState = DeliveryAttributes.ContentState(
driverName: "Alexey",
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 ay ina-update sa pamamagitan ng ActivityView, na nagre-render ng SwiftUI na nilalaman para sa Dynamic Island. Ang sistema mismo ang tumutukoy kung aling template ang gagamitin (compact, minimal o expanded), depende sa laki ng Dynamic Island at bilang ng mga aktibidad. Para i-update ang nilalaman, tawagan ang activity.update(using: contentState). Para tapusin — activity.end(dismissalPolicy: .immediate).
Sinusuportahan ng ActivityKit ang push updates sa pamamagitan ng APNs (Apple Push Notification Service). Sa pagsisimula ng Live Activity, maaari kang humiling ng pushToken at magpadala ng mga update mula sa server nang hindi kinakailangang patakbuhin ang app sa device. Ang mga push update ay gumagana sa pamamagitan ng activity.pushToken at Activity.pushToStartToken para sa remote na pagsisimula ng Live Activity.
// Pag-update ng Live Activity sa pamamagitan ng Push
func updateActivity(activity: Activity<DeliveryAttributes>) {
let updatedState = DeliveryAttributes.ContentState(
driverName: "Alexey",
distanceToArrival: 1.2,
estimatedMinutes: 4
)
let alertConfiguration = AlertConfiguration(
title: "Malapit na ang courier",
body: "Darating si Alexey sa loob ng 4 na minuto",
sound: .default
)
await activity.update(
using: updatedState,
alertConfiguration: alertConfiguration
)
}
AlertConfiguration — karagdagang parameter na nagpapakita ng notification sa itaas ng Dynamic Island sa mahahalagang update (halimbawa, «Dumating na ang courier»). Kung walang AlertConfiguration, ang nilalaman ay ina-update nang tahimik, na angkop para sa progress bar at timer.
Notch — hardware zone ng iPhone X–13, na naglalaman ng front camera, Face ID sensor at speaker. Ang notch ay static: ang laki at hugis nito ay hindi nagbabago, at ang mga notification ay ipinapakita sa ilalim nito bilang mga standard banner. Ang Dynamic Island, sa kabaligtaran, ay gumagamit ng mga pixel sa paligid ng notch upang magpakita ng nilalaman, ginagawang bahagi ng interface ang hardware element.
| Kategorya | Dynamic Island | Notch |
|---|---|---|
| Interaktibidad | Sinusuportahan ang pag-tap, mahabang pagpindot, pag-swipe | Hindi interactive |
| Pag-aangkop ng nilalaman | Nagbabago ng hugis ayon sa konteksto | Static, nilalaman sa ilalim ng notch |
| Live Activities | Built-in na suporta sa pamamagitan ng ActivityKit | Hindi — karaniwang notification lang |
| Multitasking | Dalawang sabay-sabay na aktibidad (kaliwa at kanan) | Isang aktibidad lamang |
| Availability | iOS 16.1+, iPhone 14 Pro at mas bago | iOS 11+, iPhone X–13 |
Ayon sa Apple Human Interface Guidelines (2025), ang Dynamic Island ay hindi dapat gamitin para sa mga ad o patuloy na pagpapakita ng static na nilalaman. Ang Live Activities ay para lamang sa mga background task na may malinaw na siklo ng buhay: timer, delivery, sports, musika, nabigasyon. Ang paglabag sa mga patakarang ito ay nagreresulta sa pagtanggi ng app sa App Store Review.
Dynamic Island ay may mahigpit na siklo ng buhay: ang aktibidad ay nagsisimula sa isang request sa pamamagitan ng Activity.request(), dumadaan sa mga estadong active/paused/updated at nagtatapos sa pagtawag ng activity.end(). Maaaring puwersahang tapusin ng system ang aktibidad kapag kulang ang memory (halimbawa, kapag sinimulan ang camera). Sa kasong ito, ang app ay tumatanggap ng notification sa pamamagitan ng ActivityActivityState.finished.
Mga kilos Dynamic Island ay pinoproseso ng SwiftUI na nilalaman sa loob ng ActivityView. Mga karaniwang kilos: pag-tap sa compact na estado ay nagbubukas ng app, mahabang pagpindot ay nagbubukas ng expanded na estado, pag-swipe pababa ay nagsasara ng expanded na estado. Ang mga custom na kilos ay idinaragdag sa pamamagitan ng SwiftUI modifiers (onTapGesture, onLongPressGesture) sa loob ng activity view.
Kapag tinapos ng system ang Live Activity (o tinanggal ito ng user sa pamamagitan ng pag-swipe), dapat hawakan ng app ang finished na estado para maglabas ng mga resources. Inirerekomenda na mag-subscribe sa Activity.activityStateUpdates at tanggalin ang mga lokal na reference sa aktibidad pagkatapos ng pagtatapos.
import ActivityKit
func observeActivityState(activity: Activity<DeliveryAttributes>) {
Task {
for await state in activity.activityStateUpdates {
switch state {
case .active:
print("Activity aktibo sa Dynamic Island")
case .dismissed:
print("Activity nakatago ng user")
await activity.end(dismissalPolicy: .immediate)
case .finished:
print("Activity tinapos ng system")
cleanupResources()
@unknown default:
break
}
}
}
}
Rekomendasyon ng Apple (WWDC 2024, Session 10146): huwag gamitin ang Dynamic Island para magpakita ng mga status na hindi nangangailangan ng atensyon ng user. Bawat Live Activity ay dapat may malinaw na trigger ng simula at pagtatapos. Para sa background updates na walang UI, gamitin ang Background Tasks, hindi Live Activities.
Mga Madalas Itanong
Dynamic Island ay available sa iPhone 14 Pro, 14 Pro Max at lahat ng modelo ng iPhone 15 at iPhone 16 (kabilang ang mga base version). Para sa pag-develop, kinakailangan ang iOS 16.1+ at Xcode 14.1. Sa mas lumang mga modelo (iPhone X–13), ginagamit ang static na notch na hindi sumusuporta sa Live Activities.
Dynamic Island ay nag-iintegrate ng notification sa hardware zone ng screen nang hindi natatakpan ang nilalaman. Ang karaniwang notification ay lumilitaw bilang banner sa itaas at nawawala pagkalipas ng ilang segundo. Ang Live Activities sa Dynamic Island ay maaaring manatiling aktibo nang maraming oras at mag-update sa real-time (status ng delivery, timer, musika).
Gumamit ng push updates sa pamamagitan ng APNs. Sa pagsisimula ng Live Activity, tawagan ang activity.pushToken at ipadala ang token sa iyong server. Ang server ay nagpapadala ng update request sa pamamagitan ng APNs na may bagong ContentState. Alternatibo — lokal na update sa pamamagitan ng activity.update(using:) mula sa app mismo.
Awtomatikong hinahati ng iOS ang Dynamic Island sa dalawang segment kapag may dalawang aktibong Live Activities. Bawat aktibidad ay ipinapakita sa minimal na estado sa kaliwa at kanan ng camera. Sa mahabang pagpindot sa isa sa mga segment, magbubukas ang expanded na estado ng app na iyon lamang.
Suriin: (1) ang app ay may NSSupportsLiveActivities = YES sa Info.plist, (2) ang ActivityAttributes at ContentState ay nag-implement ng Codable at Hashable, (3) iOS version 16.1+, (4) ang device ay sumusuporta sa Dynamic Island. Para sa simulator, gumamit ng iPhone 14 Pro o mas bago sa Xcode.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din