Mobil geliştirmede yerel bildirimler: özü, türleri ve nasıl çalıştıkları

Yazar: IT Sectr Yayınlanma: 2026-03-19 Okuma süresi: 8 dk

Yerel bildirim, uygulamanın uzak bir sunucuya ihtiyaç duymadan kullanıcıya gönderdiği bir mesajdır. Tüm veriler doğrudan alıcının cihazında işlenir ve görüntülenir. Bu mekanizma, uygulama arka plondayken veya kapalıyken hatırlatıcılar, zamanlayıcılar ve alarmlar için uygundur. Apple Developer Documentation'a göre UNUserNotificationCenter, iOS'ta yerel bildirimlerin merkezi yönetimini sağlar.

Önemli Noktalar

  • Yerel bildirim — sunucu katılımı olmadan cihaz tarafından planlanan ve teslim edilen mesaj
  • Platformlar — Android NotificationManager kullanır, iOS UNUserNotificationCenter kullanır
  • Planlama — bildirimler zaman, konum veya takvime göre tetiklenebilir
  • Sınırlamalar — yerel bildirimler cihazlar arasında çalışmaz ve ayrı senkronizasyon mantığı gerektirir
  • UX — doğru yapılandırılmış bildirimler etkileşimi artırır ve kullanıcıyı uygulamaya geri getirir

Yerel bildirim nedir?

Yerel bildirim, uygulamanın yüklü olduğu aynı cihazda işletim sistemi tarafından oluşturulan ve görüntülenen bir tetikleyici mesajdır. Push bildirimlerinin aksine, yerel bildirimler harici bir sunucudan geçmez — tüm planlama mantığı istemcide çalışır.

Bu bildirimler, uygulamanın durumundan bağımsız olarak çalışır: aktif, küçültülmüş veya tamamen kapatılmış. İşletim sistemi, planlanan zamanda teslimatı hallederken, geliştirici yalnızca içeriği ve tetikleyiciyi belirtir.

Sistem, ağ bağlantısı olmasa bile yerel bildirimin teslimini garanti eder. Bu, sabit bir internet bağlantısı ve çalışan bir sunucu gerektiren push bildirimlerine kıyasla önemli bir avantajdır.

Bir isteğin ana bileşenleri

Her yerel bildirim üç bölümden oluşur: içerik (başlık, gövde, ses), tetikleyici (zaman veya konum koşulu) ve istek tanımlayıcısı. Tanımlayıcı, bildirimin teslimattan önce iptal edilmesine veya güncellenmesine olanak tanır.

Bir geliştirici, iOS'ta uygulama başına 64'e kadar yerel bildirim ve Android'de sınırsız sayıda planlayabilir. Bu fark, işletim sistemlerinin mimari kısıtlamalarından kaynaklanmaktadır.

iOS ve Android'de yerel bildirimler nasıl çalışır?

Her iki platform da yerel bildirimlerle çalışmak için kendi API'lerini sağlar. iOS'ta merkezi bileşen UNUserNotificationCenter, Android'de ise NotificationManager'dır. Farklı arayüzlere rağmen mantık aynıdır: uygulama bir istek oluşturur, sisteme kaydeder ve işletim sistemi planlanan zamanda bildirimi teslim eder.

iOS, takvim etkinlikleri için UNCalendarNotificationTrigger, aralıklar için UNTimeIntervalNotificationTrigger ve konum için UNLocationNotificationTrigger kullanır. Android, AlarmManager, WorkManager ve setExact aracılığıyla hassas planlama sunar.

Android 12'den itibaren — SCHEDULE_EXACT_ALARM kullanıcıdan özel izin gerektirir. iOS'ta izin, UNUserNotificationCenter.requestAuthorization aracılığıyla bir kez istenir ve kullanıcı erişim düzeyini seçer: banner'lar, sesler, rozetler.

Yerel bildirim türleri

Yerel bildirimler, içeriğe göre değil tetikleyici türüne göre sınıflandırılır. Her tür, bildirimin kullanıcıya ne zaman ve hangi koşullarda gösterileceğini belirler.

Platforma göre tetikleyici karşılaştırması

iOS ve Android'de tetikleyici türleri farklı şekilde uygulanır, ancak mantıksal sınıflandırma aynıdır. iOS, tarihler için UNCalendarNotificationTrigger, aralıklar için UNTimeIntervalNotificationTrigger ve konum için UNLocationNotificationTrigger kullanır. Android, setExact ve setRepeating ile AlarmManager'ın yanı sıra ertelenmiş görevler için WorkManager sunar.

Tetikleyici türüAçıklamaÖrnek
Zaman aralığıBaşlatmadan N saniye sonra bildirimGeri sayım zamanlayıcısı
Takvim tarihiBelirli bir saat ve tarihte bildirimToplantı hatırlatıcısı
KonumBir bölgeye girerken/çıkarken bildirimMağaza hatırlatıcısı
AnındaAPI çağrısında anında teslimatİndirme bildirimi

iOS ayrıca UNNotificationAttachment'ı da destekler — bildirim gövdesine bir resim, ses veya video ekleme. Android, NotificationCompat.Style aracılığıyla düğmeler ve büyük resimler içeren özel şablonları destekler.

Tetikleyici seçimi senaryoya bağlıdır: takvim hatırlatıcıları takvim tetikleyicileriyle, konum hatırlatıcıları konumla en iyi şekilde çalışır. Aralık tetikleyicileri, sabit süreli yinelenen etkinlikler için uygundur.

Arka planda tetikleyici davranışı

iOS'ta, uygulama kapalıyken bile yerel bildirimler sistem tarafından teslim edilir — UNUserNotificationCenter sırayı bağımsız olarak yönetir. Android'de teslimat, seçilen mekanizmaya bağlıdır: AlarmManager ekran kapalıyken bile çalışırken, WorkManager güç tasarrufunu dikkate alır.

Mobil uygulamalarda kullanım senaryoları

Yerel bildirimler, harici altyapının aşırı veya kullanılamadığı görevleri çözer. Ana senaryolar: hatırlatıcılar, zamanlayıcılar, kullanıma başlama ipuçları ve ertelenmiş eylemler.

  • Hatırlatıcılar — takvim uygulaması belirtilen etkinlik tarihi için yerel bildirim oluşturur
  • Kullanıma başlama ipuçları — kurulumdan bir gün sonra uygulama ekranda bir ipucu gösterir
  • Zamanlayıcılar — mutfak zamanlayıcısı, uygulama kapalıyken bile belirlenen süre sonunda çalışır
  • İşlem ilerlemesi — tamamlanan indirme veya veri dışa aktarma bildirimi

Localytics araştırmaları, yerel hatırlatıcıları kullanan uygulamaların kurulumdan sonraki ilk haftada %35 daha fazla kullanıcıyı elde tuttuğunu göstermektedir. Bu, yerel bildirimleri güçlü bir kullanıma başlama aracı haline getirir.

Sıklığı kötüye kullanmamak önemlidir — sistem aynı uygulamadan gelen bildirimleri gruplandırır ve kullanıcı rahatsız edici hale gelirse tüm yerel bildirimleri devre dışı bırakabilir. Kritik olmayan etkinlikler için ideal sıklık günde 2-3 bildirimi geçmemelidir.

Android'de planlama örneği

Android'de yerel bir bildirim planlamak için AlarmManager ile birlikte NotificationManager kullanın. Android 8+'da önce bir bildirim kanalı oluşturmalısınız, aksi takdirde bildirim görüntülenmez.

kotlin
val channelId = "reminder_channel"
val notificationId = "task_reminder_42"

val channel = NotificationChannel(
    channelId,
    "Hatırlatıcılar",
    NotificationManager.IMPORTANCE_HIGH
).apply {
    description = "Görev hatırlatıcıları için kanal"
}

val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)

val intent = Intent(this, ReminderReceiver::class.java).apply {
    putExtra("notification_id", notificationId)
    putExtra("channel_id", channelId)
}

val pendingIntent = PendingIntent.getBroadcast(
    this, notificationId.hashCode(),
    intent, PendingIntent.FLAG_UPDATE_CURRENT
)

val alarmManager = getSystemService(AlarmManager::class.java)
alarmManager.setExact(
    AlarmManager.RTC_WAKEUP,
    triggerTimeMillis,
    pendingIntent
)

Android 12+'da, setExact'i çağırmadan önce SCHEDULE_EXACT_ALARM iznini kontrol edin. İzin verilmemişse — bir zaman penceresi içinde teslimatı garanti eden setWindow'u kullanın.

BroadcastReceiver'da işleme

AlarmManager tetiklendiğinde, sistem BroadcastReceiver tarafından alınan bir yayın Intent'i gönderir. Bunun içinde, NotificationManager aracılığıyla bildirimi oluşturmanız ve göstermeniz gerekir. PendingIntent'in FLAG_UPDATE_CURRENT kullandığından emin olun, aksi takdirde veriler değiştiğinde eski bildirimler güncelliğini yitirmiş Intent'i kullanmaya devam eder.

iOS'te planlama örneği

iOS'ta, yerel bildirimler UNUserNotificationCenter aracılığıyla UNMutableNotificationContent ve tetikleyicilerden biri kullanılarak oluşturulur. Planlamadan önce kullanıcıdan izin almanız gerekir.

swift
import UserNotifications

let center = UNUserNotificationCenter.current()

center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
    guard granted else { return }
}

let content = UNMutableNotificationContent()
content.title = "Görev hatırlatıcısı"
content.body = "Raporu 18:00'a kadar tamamlamayı unutmayın"
content.sound = .default
content.userInfo = ["task_id": "42"]

let trigger = UNTimeIntervalNotificationTrigger(
    timeInterval: 3600,
    repeats: false
)

let request = UNNotificationRequest(
    identifier: "task_reminder_42",
    content: content,
    trigger: trigger
)

center.add(request)

iOS, aynı anda 64'e kadar yerel bildirim isteğini destekler. Sınır aşılırsa, aktif istekler teslim edilene veya iptal edilene kadar sistem yeni istekleri reddeder. Geçerli sırayı kontrol etmek için getPendingNotificationRequests kullanın.

Temsilci yanıtını işleme

Bir kullanıcı iOS'ta yerel bir bildirimle etkileşime girdiğinde, UNUserNotificationCenterDelegate temsilcisinin userNotificationCenter:didReceive response yöntemi çağrılır. Bu yöntem, istek tanımlayıcısını, actionIdentifier'ı (hangi düğmeye basıldı) ve özel userInfo'yu sağlar. Bu, basit bir bildirim açma ile belirli bir eylem düğmesine basma arasında ayrım yapmayı sağlar.

Yerel bildirimler için en iyi uygulamalar

Yerel bildirimlerin sinir bozucu değil yararlı olması için birkaç önemli kurala uyun. Birincisi: sıklığı kontrol edin — kritik olmayan etkinlikler için günde 2-3 bildirimi geçmeyin, aksi takdirde kullanıcı tüm uygulama bildirimlerini devre dışı bırakır.

İkincisi: kullanıcıya seçenek verin. Arayüzde belirli yerel bildirim türlerini devre dışı bırakma özelliği ekleyin. Android'de bunun için düşük öneme sahip ayrı bir NotificationChannel kullanın; iOS'ta uygulama ayarlarında ayrı bir kategori kullanın.

Üçüncüsü: bağlamsal uygunluk — bildirim, kullanıcının ihtiyacı olduğunda görünmelidir. Konum tetikleyicileri eve yakın hatırlatıcılar için idealdir, takvim tetikleyicileri toplantılar için, aralık tetikleyicileri su içme veya esneme gibi düzenli aktiviteler için uygundur. Gereksiz yere türleri karıştırmayın.

Dördüncüsü: gerçek cihazlarda test edin. iOS simülatörü, özellikle arka planda olmak üzere yerel bildirim teslimatının tüm senaryolarını simüle etmez. Android'de, planlanmış bildirimlerin sırasını ve parametrelerini kontrol etmek için adb shell dumpsys notification kullanın. Beşincisi: kullanıcıya her zaman uygulama arayüzü aracılığıyla bildirimleri devre dışı bırakma olanağı sağlayın — bu, UX ve App Store İnceleme Yönergeleri'nin zorunlu bir gerekliliğidir.

Sıkça sorulan sorular

Yerel bildirim ile push bildirimi arasındaki fark nedir?

Yerel bildirim, sunucu katılımı olmadan cihaz tarafından planlanır ve teslim edilir. Push bildirimi harici bir hizmet (FCM, APNS) ve internet bağlantısı gerektirir. Yerel bildirimler çevrimdışı çalışır, push bildirimleri yalnızca ağ erişimiyle çalışır.

Kaç tane yerel bildirim planlanabilir?

iOS, aynı anda 64 planlanmış istekle sınırlar. Android'in katı bir sınırı yoktur, ancak 500'den fazla bildirim sistem performansını düşürebilir ve teslimat süresini etkileyebilir.

Planlamadan sonra yerel bildirim iptal edilebilir mi?

Evet, iOS'ta istek tanımlayıcısıyla removePendingNotificationRequests kullanın. Android'de NotificationManager.cancel çağırın veya AlarmManager aracılığıyla PendingIntent'i iptal edin. İptal için benzersiz bir tanımlayıcı zorunludur.

Yerel bildirimler için kullanıcı izni gerekli mi?

iOS'ta, requestAuthorization aracılığıyla izin zorunludur. Android 13+'te (Tiramisu) ayrıca POST_NOTIFICATIONS izni gereklidir. Eski Android sürümleri, yerel bildirimler için açık izin gerektirmez.

Yerel bildirime düğme nasıl eklenir?

iOS'ta bir UNNotificationAction oluşturun ve UNNotificationCategory'ye ekleyin. Android'de, BroadcastReceiver'ı hedefleyen bir PendingIntent ile NotificationCompat.Builder.addAction kullanın. Her düğme uygulamada ayrı bir eylemi tetikler.

Özet

  • Yerel bildirimler — sunucu altyapısı olmadan cihaz tarafından planlanan ve teslim edilen mesajlar
  • UNUserNotificationCenter — iOS'ta yerel bildirimler için ana API
  • NotificationManager — Android'de yerel bildirimler için ana API
  • Tetikleyici türleri — zaman aralığı, takvim tarihi, konum ve anında teslimat
  • Sınırlar — iOS 64 planlanmış istekle sınırlar, Android'in katı sınırı yoktur
  • İzinler — iOS ve Android 13+, bildirimler için açık kullanıcı onayı gerektirir
  • Çevrimdışı — yerel bildirimler internet bağlantısı olmadan çalışır ve push'tan daha güvenilirdir

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