Today Widget: ano ito, mga uri at paggawa ng widget ng notification

May-akda: IT Sectr Nai-publish: 2026-06-15 Oras ng pagbabasa: 10 min

Ang Today Widget ay isang iOS extension na nagpapakita ng interactive na impormasyon nang direkta sa Notification Center o sa “Ngayon” na screen. Nakikita ng user ang napapanahong data — panahon, halaga ng palitan, kalendaryo — nang hindi binubuksan ang pangunahing app. Ayon sa data ng Apple WWDC (2025), ang paggamit ng WidgetKit ay tumaas ng 40% pagkatapos ng pagpapakilala ng mga interactive na widget sa iOS 17. Today Widget ay lumulutas sa problema ng mabilis na pag-access sa impormasyon: sulyap sa screen — at nakukuha ng user ang kinakailangang data nang walang nabigasyon sa app.

Mga Pangunahing Punto

  • Today Widget — iOS extension para sa pagpapakita ng impormasyon sa Notification Center.
  • WidgetKit — modernong framework para sa paggawa ng mga widget (iOS 14+).
  • NCWidgetProviding — protocol para sa Notification Center extensions (iOS 8–13).
  • Auto Layout — pag-adapt ng widget sa iba't ibang laki ng screen.
  • Timeline Provider — mekanismo ng pag-update ng data sa WidgetKit.

Ano ang Today Widget

Today Widget (kilala rin bilang widget ng Notification Center) — elemento ng iOS interface na nagpapakita ng pinaikling impormasyon mula sa app nang hindi ito inilulunsad. Nakikita ng user ang widget sa pamamagitan ng pag-swipe ng screen pakaliwa sa Lock Screen o sa home screen. Maaaring magpakita ang widget ng dynamic na data — halaga ng palitan, pinakabagong balita, status ng gawain, kondisyon ng device.

Sa kasaysayan, lumitaw ang Today Widget sa iOS 8 bilang extension ng Notification Center, na ipinatupad sa pamamagitan ng Notification Center framework. Sa iOS 14, ipinakilala ng Apple ang WidgetKit — isang ganap na muling idisenyo na arkitektura na nagpapahintulot sa paglalagay ng mga widget nang direkta sa desktop. Ang Today Widget sa modernong kahulugan — isang WidgetKit widget na inilagay sa seksyong “Ngayon” (seksyon ng widget sa kaliwa ng unang screen).

Bakit kailangan ang Today Widget

Ang pangunahing layunin ay bawasan ang oras ng pag-access sa impormasyon. Sa halip na buksan ang app, mag-navigate sa menu at maghintay sa pag-load, agad na nakikita ng user ang kinakailangang data. Ayon sa Apple (2024), ang mga app na may widget ay nagpapakita ng 27% na mas mataas na pakikipag-ugnayan ng user. Mga karagdagang sitwasyon: mabilis na aksyon (markahan ang gawain bilang tapos), pagsubaybay (pulso, aktibidad) at status (pag-charge ng baterya, mga notification).

WidgetKit laban sa NCWidgetProviding

Ang Developer ng Today Widget ay may dalawang diskarte: modernong WidgetKit (iOS 14+) at legacy extension na NCWidgetProviding (iOS 8–13). Ang pagpili ay depende sa minimum na sinusuportahang bersyon ng iOS. WidgetKit ay inirerekomenda para sa mga bagong proyekto, NCWidgetProviding — para sa suporta ng mga lumang device.

KatangianWidgetKitNCWidgetProviding
Minimum na iOSiOS 14iOS 8
PagkakalagayDesktop + “Ngayon”“Ngayon” lamang
Mga LakiSmall, Medium, LargeIsang nakapirmi
InteraktivitiiOS 17+ mga pindutan at switchPagbukas lamang ng app
Pag-updateTimeline ProviderwidgetPerformUpdate
WikaSwiftUIUIKit

Kailan gagamitin ang WidgetKit

Kung sinusuportahan ng iyong app ang iOS 14 at mas bago — gamitin ang WidgetKit. Nag-aalok ito ng mayamang kakayahan: maraming laki, configuration sa pamamagitan ng intent, redesign sa iOS 17 at malalim na link. Deklarativiti ng SwiftUI ginagawang kompakto at nababasa ang code ng widget. Ang Timeline Provider ay awtomatikong namamahala ng iskedyul ng update na isinasaalang-alang ang konsumo ng kuryente.

Kailan gagamitin ang NCWidgetProviding

Lamang kung kinakailangan ang suporta para sa iOS 9–13. Ang NCWidgetProviding ay mas simple sa implementasyon — ito ay isang ordinaryong UIViewController na may protocol. Gayunpaman, ito ay limitado: isang laki, UIKit lamang, walang configuration. Inirerekomenda ng Apple na lumipat sa WidgetKit kahit para sa mga lumang proyekto, gamit ang availability check: WidgetKit sa iOS 14+, NCWidgetProviding bilang fallback.

Mga Uri ng Today Widget

Sa modernong iOS, tatlong uri ng widget ang nakikilala ayon sa functional na layunin. Bawat uri ay lumulutas ng sarili nitong gawain at nangangailangan ng ibang diskarte sa pagdisenyo ng data at interface. Pag-uuri ay tumutulong sa pagpili ng tamang arkitektura para sa iyong app.

Mga widget ng impormasyon

Nagpapakita ng static o pana-panahong ina-update na impormasyon: panahon, petsa, halaga ng palitan, status ng server. Ang data ay ina-update ayon sa iskedyul sa pamamagitan ng Timeline Provider. Hindi nakikipag-ugnayan ang user sa widget — nagbabasa lamang. Mga widget ng impormasyon — pinakasimple sa implementasyon, hindi nangangailangan ng pagproseso ng touch event at gumagana sa background nang walang karagdagang pahintulot.

Mga interactive na widget

Mula noong iOS 17, sinusuportahan ng WidgetKit ang mga pindutan, switch at slider sa mga widget. Maaaring magsagawa ng aksyon ang user — markahan ang gawain, i-pause ang musika, i-on ang ilaw — nang hindi binubuksan ang app. Interactive Widgets ay gumagamit ng App Intents para ipadala ang aksyon sa pangunahing app. Limitasyon: sa desktop lamang, wala sa seksyong “Ngayon” hanggang iOS 18.

Mga widget na nako-configure

Inaayos ng user ang ipinapakitang data sa pamamagitan ng system interface — pumipili ng lungsod para sa panahon, account para sa pananalapi, kategorya para sa balita. Ipinapatupad sa pamamagitan ng Intents Extension at configuration sa WidgetBundle. Ang mga widget na nako-configure ay nagpapataas ng personalisasyon at kaugnayan ng impormasyon para sa bawat user.

Paggawa ng WidgetKit Widget

Tingnan natin ang proseso ng paggawa ng Today Widget sa SwiftUI gamit ang WidgetKit. Ang widget ay magpapakita ng kasalukuyang halaga ng palitan na may awtomatikong pag-update. WidgetKit ay nangangailangan ng tatlong bahagi: istraktura ng widget, Provider na may configuration at View para sa pagpapakita.

swift
import WidgetKit
import SwiftUI

@main
struct CurrencyWidget: Widget {
    let kind: String = "CurrencyWidget"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: Provider()) { entry in
            CurrencyWidgetEntryView(entry: entry)
        }
        .configurationDisplayName("Currency Rate")
        .description("Current USD/RUB exchange rate")
        .supportedFamilies([.systemSmall, .systemMedium])
    }
}

Ang Provider ay responsable sa paghahanda ng data para sa pagpapakita. Ang pamamaraang getTimeline ay lumilikha ng iskedyul ng update: susunod na update sa loob ng 15 minuto. TimelineProvider ay ginagarantiyahan na ang widget ay nagpapakita ng napapanahong data nang walang patuloy na pag-poll sa server.

swift
struct Provider: TimelineProvider {
    func getSnapshot(in context: Context,
                      completion: @escaping (CurrencyEntry) -> Void) {
        let entry = CurrencyEntry(date: Date(), rate: 92.5)
        completion(entry)
    }

    func getTimeline(in context: Context,
                     completion: @escaping (Timeline<CurrencyEntry>) -> Void) {
        let rate = CurrencyService().fetchRate()
        let entry = CurrencyEntry(date: Date(), rate: rate)
        let nextUpdate = Calendar.current.date(
            byAdding: .minute, value: 15, to: Date()
        ) ?? Date()
        let timeline = Timeline(entries: [entry], policy: .after(nextUpdate))
        completion(timeline)
    }
}

Timeline Provider at Pag-update ng Data

Timeline Provider — ang sentral na mekanismo ng WidgetKit para sa pamamahala ng data ng Today Widget. Sa halip na pana-panahong pag-update gamit ang timer (tulad ng sa lumang NCWidgetProviding), ginagamit ng WidgetKit ang konsepto ng timeline — isang pagkakasunod-sunod ng mga record na may timestamp. Ipinapakita ng system ang kasalukuyang record hanggang sa mag-expire ito, pagkatapos ay lumipat sa susunod o humiling ng bago.

Mga patakaran sa pag-update

Sinusuportahan ng timeline ang tatlong patakaran: .after(date) — susunod na update sa tinukoy na petsa; .never — ang widget ay hindi na-update hanggang sa tahasang pagtawag sa WidgetCenter.reloadAllTimelines; .atEnd — pag-update pagkatapos ipakita ang huling record. Para sa Today Widget na may halaga ng palitan, ang patakarang .after na may interval na 15–30 minuto ay optimal. Efficiency ng enerhiya — pangunahing bentahe ng WidgetKit: pinapangkat ng system ang mga update ng lahat ng widget sa isang window.

WidgetCenter: programmatic na pag-update

Kung nagbago ang data bago mag-expire ang timeline (hal. na-update ng user ang halaga ng palitan sa app), tawagan ang WidgetCenter.shared.reloadTimelines(ofKind: "CurrencyWidget"). Hihiling ito ng bagong timeline mula sa Provider at ia-update ang display. WidgetCenter ay nagpapahintulot din na i-reload ang lahat ng widget ng app sa isang command — maginhawa pagkatapos ng data synchronization.

Mga Rekomendasyon sa Disenyo ng Widget

Ang Apple ay nagtatakda ng mahigpit na kinakailangan para sa disenyo ng Today Widget: ang nilalaman ay dapat na nababasa mula sa malayo, walang labis na elemento at may malinaw na hierarchy. Ang paglabag sa mga rekomendasyon ng HIG (Human Interface Guidelines) ay dahilan ng pagtanggi sa pag-publish sa App Store. Tatlong prinsipyo: glanceability, consistency at hierarchy.

Glanceability — pagiging nababasa sa isang sulyap

Ang user ay gumugugol ng mas mababa sa isang segundo sa widget. Huwag magdagdag ng higit sa 3–4 na elemento ng data. Font — minimum na 11pt para sa mga label, 17pt para sa mga halaga. Gumamit ng bold (Semibold) para sa mga pangunahing numero. Iwasan ang pag-scroll — ang Today Widget ay hindi nag-scroll.

Pag-adapt sa mga laki

Sinusuportahan ng WidgetKit ang tatlong laki: Small (170×170pt), Medium (364×170pt), Large (364×382pt). Para sa Today Widget sa seksyong “Ngayon”, ang Medium ang pinakakaraniwang pagpipilian. Adaptive na disenyo sa pamamagitan ng EnvironmentValues: baguhin ang density ng impormasyon depende sa laki. Small — isang numero, Medium — numero + graph, Large — talahanayan.

Suporta sa dark theme at Dynamic Type

Ang widget ay dapat na maipakita nang tama sa light at dark na tema nang walang karagdagang aksyon ng developer — awtomatikong kumukuha ang WidgetKit ng mga system color. Ang Dynamic Type para sa mga widget ay limitado: ang laki ng font ay nakapirmi ngunit dapat na nababasa. UIColor.label at UIColor.systemBackground — mga pangunahing kulay para sa teksto at background sa parehong tema.

Mga Madalas Itanong

Paano naiiba ang Today Widget sa ordinaryong widget sa desktop?

Ngayon ito ay parehong WidgetKit widget. Ang pagkakaiba ay nasa lokasyon lamang: sa desktop at sa seksyong “Ngayon” (sa kaliwa ng unang screen). Hanggang iOS 14, ang Today Widget ay isang hiwalay na NCWidgetProviding extension na gumagana lamang sa Notification Center. Ngayon ito ay iisang WidgetKit.

Gaano kadalas ina-update ang Today Widget?

Ang WidgetKit ay hindi nag-a-update ng mga widget gamit ang timer. Ang developer ay nagtatakda ng iskedyul sa pamamagitan ng Timeline Provider: mga record na may timestamp. Ginagarantiyahan ng system ang pag-update sa tinukoy na oras na isinasaalang-alang ang pagtitipid ng kuryente — maaaring maantala ng ilang minuto. Pinakamababang interval — 15 minuto, ngunit inirerekomenda ng Apple na hindi hihigit sa 1 beses bawat oras.

Maaari bang gumawa ng Today Widget na may mga interactive na pindutan?

Oo, simula sa iOS 17 sinusuportahan ng WidgetKit ang mga pindutan, switch at slider sa pamamagitan ng App Intents. Gumagana ang mga interactive na elemento sa desktop ng iPhone at iPad. Sa seksyong “Ngayon” lumitaw ang suporta sa iOS 18. Para sa iOS 16 at mas luma — pagbubukas lamang ng app kapag nag-tap sa widget.

Ilang Today Widget ang maaaring nasa isang app?

Walang mga limitasyon. Ang app ay maaaring magrehistro ng anumang bilang ng mga widget sa pamamagitan ng WidgetBundle — bawat isa ay may sariling uri, laki at configuration. Ang user ay nagdaragdag ng mga ito nang paisa-isa. Inirerekomenda na hindi hihigit sa 3–5 widget upang hindi ma-overload ang pagpili ng user.

Paano subukan ang Today Widget sa simulator?

Ang WidgetKit ay ganap na sinusuportahan sa iOS Simulator. Patakbuhin ang WidgetKit target scheme sa Xcode — lilitaw ang widget sa desktop ng simulator. Para suriin ang Timeline Provider gamitin ang WidgetKit Debug Profile: Xcode → Product → Profile → WidgetKit Debug. Suriin ang aktwal na pag-uugali sa isang pisikal na device.

Buod

  • Today Widget — iOS extension para sa pagpapakita ng impormasyon nang hindi binubuksan ang app.
  • WidgetKit (iOS 14+) — modernong framework, NCWidgetProviding — legacy para sa lumang bersyon.
  • Tatlong uri ng widget: impormasyon, interactive (iOS 17+), nako-configure sa pamamagitan ng Intents.
  • Timeline Provider ang namamahala ng iskedyul ng update sa halip na mga timer.
  • Ang disenyo ay dapat na glanceable: minimal na elemento, malaking font, pag-adapt sa laki.
  • Interaktiviti sa pamamagitan ng App Intents — mga pindutan at switch nang hindi binubuksan ang app.
  • WidgetCenter.shared.reloadTimelines — programmatic na pag-update kapag nagbago ang data.

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.

Pag-usapan ang proyekto

Basahin din