Today Widget: nedir, türleri ve bildirim widget'ı oluşturma

Yazar: IT Sectr Yayınlanma: 2026-06-15 Okuma süresi: 10 dk

Today Widget, doğrudan Bildirim Merkezi'nde veya “Bugün” ekranında etkileşimli bilgileri görüntüleyen bir iOS uzantısıdır. Kullanıcı ana uygulamayı açmadan güncel verileri (hava durumu, döviz kurları, takvim) görür. Apple WWDC (2025)'ye göre, iOS 17'de etkileşimli widget'ların tanıtılmasından sonra WidgetKit kullanımı %40 arttı. Today Widget, bilgiye hızlı erişim sorununu çözer: ekrana bir bakış — ve kullanıcı uygulamada gezinmeden ihtiyaç duyduğu verileri alır.

Anahtar Noktalar

  • Today Widget — Bildirim Merkezi'nde bilgi görüntülemek için bir iOS uzantısı.
  • WidgetKit — widget oluşturmak için modern bir framework (iOS 14+).
  • NCWidgetProviding — Bildirim Merkezi uzantıları için bir protokol (iOS 8–13).
  • Auto Layout — widget'ı farklı ekran boyutlarına uyarlama.
  • Timeline Provider — WidgetKit'te veri güncelleme mekanizması.

Today Widget Nedir

Today Widget (Bildirim Merkezi widget'ı olarak da bilinir), bir uygulamayı başlatmadan özet bilgilerini görüntüleyen bir iOS arayüz öğesidir. Kullanıcı, Kilit Ekranı'nda veya Ana Ekran'da sola kaydırarak widget'ı görür. Widget dinamik verileri (döviz kurları, son haberler, görev durumu, cihaz durumu) gösterebilir.

Tarihsel olarak, Today Widget iOS 8'de Bildirim Merkezi framework'ü aracılığıyla uygulanan bir Bildirim Merkezi uzantısı olarak ortaya çıktı. iOS 14 ile Apple, widget'ları doğrudan Ana Ekran'a yerleştirmeye izin veren tamamen yeniden tasarlanmış bir mimari olan WidgetKit'i tanıttı. Modern anlamda Today Widget, “Bugün” bölümünde (ilk ekranın solundaki widget bölümü) bulunan bir WidgetKit widget'ıdır.

Neden Bir Today Widget'a İhtiyacınız Var

Ana amaç, bilgiye erişim süresini azaltmaktır. Uygulamayı açmak, menülerde gezinmek ve yüklenmeyi beklemek yerine, kullanıcı hemen ihtiyaç duyduğu verileri görür. Apple'a (2024) göre, widget'lara sahip uygulamalar %27 daha yüksek kullanıcı etkileşimi gösterir. Ek kullanım durumları: hızlı eylemler (bir görevi tamamlandı olarak işaretleme), izleme (kalp atış hızı, aktivite) ve durum (pil şarjı, bildirimler).

WidgetKit vs NCWidgetProviding

Bir Today Widget geliştiricisinin iki yaklaşımı vardır: modern WidgetKit (iOS 14+) ve eski NCWidgetProviding uzantısı (iOS 8–13). Seçim, desteklenen minimum iOS sürümüne bağlıdır. WidgetKit yeni projeler için önerilir, NCWidgetProviding eski cihazları desteklemek içindir.

ÖzellikWidgetKitNCWidgetProviding
Minimum iOSiOS 14iOS 8
KonumAna Ekran + “Bugün”Sadece “Bugün”
BoyutlarKüçük, Orta, BüyükTek sabit boyut
EtkileşimiOS 17+ düğmeler ve anahtarlarSadece uygulama açma
GüncellemeTimeline ProviderwidgetPerformUpdate
DilSwiftUIUIKit

WidgetKit Ne Zaman Kullanılır

Uygulamanız iOS 14 ve üstünü destekliyorsa WidgetKit kullanın. Zengin özellikler sunar: birden çok boyut, intent'ler aracılığıyla yapılandırma, iOS 17 ile yeniden tasarım ve derin bağlantılar. SwiftUI'nin bildirimsel yapısı widget kodunu kompakt ve okunabilir kılar. Timeline Provider, güç tüketimini dikkate alarak güncelleme programını otomatik olarak yönetir.

NCWidgetProviding Ne Zaman Kullanılır

Sadece iOS 9–13 desteği gerekiyorsa. NCWidgetProviding uygulaması daha basittir — bir protokole sahip normal bir UIViewController'dır. Ancak sınırlıdır: tek boyut, sadece UIKit, yapılandırma yok. Apple, availability check kullanarak eski projelerde bile WidgetKit'e geçiş yapılmasını önerir: iOS 14+'da WidgetKit, yedek olarak NCWidgetProviding.

Today Widget Türleri

Modern iOS'ta, işlevsel amaca göre üç tür widget vardır. Her tür kendi sorununu çözer ve veri ve arayüz tasarımına farklı bir yaklaşım gerektirir. Sınıflandırma, uygulamanız için doğru mimariyi seçmeye yardımcı olur.

Bilgi Widget'ları

Statik veya periyodik olarak güncellenen bilgileri görüntüler: hava durumu, tarih, döviz kurları, sunucu durumu. Veriler, Timeline Provider aracılığıyla bir programa göre güncellenir. Kullanıcı widget ile etkileşime girmez — sadece okur. Bilgi widget'ları uygulaması en basit olanlardır, dokunma olayı işlemesi gerektirmez ve ek izinler olmadan arka planda çalışır.

Etkileşimli Widget'lar

iOS 17 ile WidgetKit, widget'larda düğmeleri, anahtarları ve kaydırıcıları destekler. Kullanıcı, uygulamayı açmadan bir eylem gerçekleştirebilir — bir görevi işaretleme, müziği duraklatma, ışığı açma. Etkileşimli widget'lar, eylemleri ana uygulamaya iletmek için App Intents kullanır. Sınırlama: sadece Ana Ekran'da, iOS 18'e kadar “Bugün” bölümünde değil.

Yapılandırılabilir Widget'lar

Kullanıcı, sistem arayüzü aracılığıyla görüntülenen verileri özelleştirir — hava durumu için şehir, finans için hesap, haberler için kategori seçer. Intents Extension ve WidgetBundle'da yapılandırma aracılığıyla uygulanır. Yapılandırılabilir widget'lar, her kullanıcı için kişiselleştirmeyi ve bilginin alaka düzeyini artırır.

WidgetKit Widget'ı Oluşturma

WidgetKit kullanarak SwiftUI'de bir Today Widget oluşturma sürecine bakalım. Widget, otomatik güncellemelerle geçerli döviz kurunu gösterecektir. WidgetKit üç bileşen gerektirir: bir widget yapısı, yapılandırmalı bir Provider ve görüntüleme için bir View.

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

Provider, verileri görüntülenmek üzere hazırlamaktan sorumludur. getTimeline yöntemi bir güncelleme programı oluşturur: 15 dakika içinde bir sonraki güncelleme. TimelineProvider, widget'ın sunucuyu sürekli sorgulamadan güncel verileri göstermesini sağlar.

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 ve Veri Güncelleme

Timeline Provider, Today Widget verilerini yönetmek için WidgetKit'in merkezi mekanizmasıdır. Zamanlayıcı ile periyodik güncellemeler (eski NCWidgetProviding'deki gibi) yerine WidgetKit, timeline kavramını kullanır — zaman damgalı girdi dizisi. Sistem, geçerli girdiyi süresi dolana kadar görüntüler, ardından bir sonrakine geçer veya yenisini ister.

Güncelleme Politikaları

Timeline üç politikayı destekler: .after(date) — belirtilen tarihte sonraki güncelleme; .never — WidgetCenter.reloadAllTimelines'a açık bir çağrı yapılana kadar widget güncellenmez; .atEnd — son girdi görüntülendikten sonra güncelleme. Döviz kurları olan bir Today Widget için 15–30 dakika aralıklı .after politikası idealdir. Enerji verimliliği WidgetKit'in önemli bir avantajıdır: sistem tüm widget'ların güncellemelerini tek bir pencerede gruplar.

WidgetCenter: Programatik Güncelleme

Timeline süresinden önce veriler değişirse (örneğin, kullanıcı uygulamada kuru güncellediyse), WidgetCenter.shared.reloadTimelines(ofKind: “CurrencyWidget”) çağrısını yapın. Bu, Provider'dan yeni bir timeline isteyecek ve görüntülemeyi güncelleyecektir. WidgetCenter ayrıca tek bir komutla tüm uygulama widget'larını yeniden yüklemeye izin verir — veri senkronizasyonundan sonra kullanışlıdır.

Widget Tasarım Yönergeleri

Apple, Today Widget tasarımında katı gereksinimler belirler: içerik, gereksiz öğeler olmadan ve net bir hiyerarşiyle bir bakışta okunabilir olmalıdır. HIG (İnsan Arayüzü Yönergeleri) tavsiyelerini ihlal etmek, App Store'da yayınlarken reddedilme nedenidir. Üç ilke: bakışta okunabilirlik, tutarlılık ve hiyerarşi.

Bakışta Okunabilirlik — bir bakışta okunabilir

Kullanıcı bir widget'ta bir saniyeden az zaman harcar. 3–4'ten fazla veri öğesi eklemeyin. Yazı tipi — etiketler için minimum 11pt, değerler için 17pt. Anahtar sayılar için kalın (Semibold) kullanın. Kaydırmadan kaçının — Today Widget kaydırılmaz.

Boyutlara Uyarlama

WidgetKit üç boyutu destekler: Küçük (170×170pt), Orta (364×170pt), Büyük (364×382pt). “Bugün” bölümündeki Today Widget için Orta en yaygın seçimdir. EnvironmentValues aracılığıyla uyarlanabilir tasarım: boyuta göre bilgi yoğunluğunu değiştirin. Küçük — tek sayı, Orta — sayı + grafik, Büyük — tablo.

Karanlık Mod ve Dynamic Type Desteği

Widget, geliştiricinin ek işlem yapmasına gerek kalmadan açık ve koyu temalarda doğru görüntülenmelidir — WidgetKit otomatik olarak sistem renklerini alır. Widget'lar için Dynamic Type sınırlıdır: yazı tipi boyutu sabittir, ancak okunabilir olmalıdır. UIColor.label ve UIColor.systemBackground her iki temada da metin ve arka plan için temel renklerdir.

Sıkça Sorulan Sorular

Today Widget, Ana Ekran'daki normal widget'tan nasıl farklıdır?

Bugün aynı WidgetKit widget'ıdır. Fark sadece konumdadır: Ana Ekran'da ve “Bugün” bölümünde (ilk ekranın solunda). iOS 14'ten önce, Today Widget yalnızca Bildirim Merkezi'nde çalışan ayrı bir NCWidgetProviding uzantısıydı. Şimdi tek bir WidgetKit'tir.

Today Widget ne sıklıkla güncellenir?

WidgetKit, widget'ları zamanlayıcı ile güncellemez. Geliştirici, Timeline Provider aracılığıyla programı belirler: zaman damgalı girdiler. Sistem, güç tasarrufunu dikkate alarak belirtilen zamanda güncellemeyi garanti eder — birkaç dakika gecikebilir. Minimum aralık 15 dakikadır, ancak Apple saatte bir defadan fazla olmamasını önerir.

Etkileşimli düğmeleri olan bir Today Widget yapabilir miyim?

Evet, iOS 17'den itibaren WidgetKit, App Intents aracılığıyla düğmeleri, anahtarları ve kaydırıcıları destekler. Etkileşimli öğeler iPhone ve iPad Ana Ekranı'nda çalışır. “Bugün” bölümünde destek iOS 18'de geldi. iOS 16 ve öncesi için — widget'a dokunulduğunda sadece uygulama açılır.

Bir uygulamada kaç Today Widget olabilir?

Herhangi bir sınırlama yoktur. Bir uygulama, WidgetBundle aracılığıyla her biri kendi türü, boyutu ve yapılandırmasıyla herhangi bir sayıda widget kaydedebilir. Kullanıcı bunları tek tek ekler. Kullanıcının seçimini zorlaştırmamak için önerilen 3–5'ten fazla widget olmamasıdır.

Simülatörde Today Widget nasıl test edilir?

WidgetKit, iOS Simulator'da tamamen desteklenir. Xcode'da WidgetKit hedef şemasını çalıştırın — widget simülatörün Ana Ekranı'nda görünecektir. Timeline Provider'ı test etmek için WidgetKit Debug Profile kullanın: Xcode → Product → Profile → WidgetKit Debug. Gerçek davranışı fiziksel bir cihazda kontrol edin.

Özet

  • Today Widget — uygulamayı açmadan bilgi görüntülemek için bir iOS uzantısı.
  • WidgetKit (iOS 14+) — modern framework, NCWidgetProviding — eski sürümler için miras.
  • Üç widget türü: bilgi, etkileşimli (iOS 17+), Intents aracılığıyla yapılandırılabilir.
  • Timeline Provider, zamanlayıcılar yerine güncelleme programını yönetir.
  • Tasarım bakışta okunabilir olmalı: minimum öğe, büyük yazı tipi, boyut uyarlaması.
  • App Intents aracılığıyla etkileşim — uygulamayı açmadan düğmeler ve anahtarlar.
  • WidgetCenter.shared.reloadTimelines — veri değiştiğinde programatik güncelleme.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun