Android için Live Update Notification (Canlı Güncellenen Bildirimler) demo uygulaması. Sipariş takibi gibi çok aşamalı işlemlerde gerçek zamanlı bildirim güncellemeleri gösterir.
Bu proje, Android 15'te (API 36) tanıtılan Live Update Notification özelliğini kullanarak, kullanıcılara gerçek zamanlı güncellenen bildirimler göstermeyi amaçlar. Bir yemek sipariş uygulaması senaryosu üzerinden, siparişin hazırlanma aşamalarını canlı olarak takip edebilirsiniz.
-
🔄 İki Farklı Bildirim Modu
- Foreground Service: Arka planda güvenli ve kesintisiz bildirim güncellemeleri
- Direkt Bildirim: Daha hızlı başlangıç, hafif kullanım için
-
📊 Görsel İlerleme Gösterimi
- Dinamik ilerleme çubuğu
- Renkli segmentler ve aşama göstergeleri
- Her aşama için özel ikonlar
-
⚡ Anında Başlatma
- Optimize edilmiş kod yapısı
- İlk bildirimin gecikme olmadan gösterilmesi
- Sorunsuz aşama geçişleri
-
🎨 Jetpack Compose UI
- Modern Android UI toolkit
- Material 3 tasarım dili
- Karanlık tema desteği
Uygulama, bir yemek siparişinin 5 farklı aşamasını simüle eder:
-
Onaylanıyor ⏳ (0 saniye - Anında)
- İlk bildirim hemen gösterilir
- İlerleme: Belirsiz (dönen animasyon)
-
Hazırlanıyor 🍳 (5 saniye sonra)
- İlerleme: %25
- Sarı segment ve mavi nokta gösterimi
-
Yolda 🚴 (10 saniye sonra)
- İlerleme: %50
- İki segment tamamlandı (yeşil renk)
-
Kapıda 🚪 (15 saniye sonra)
- İlerleme: %75
- Üç segment tamamlandı
-
Tamamlandı ✅ (20 saniye sonra)
- İlerleme: %100
- Tüm segmentler yeşil
- "Teslimatı Değerlendir" aksiyon butonu eklenir
- 3 saniye sonra bildirim/servis kapatılır
1. Butona Tıklama
2. İlk bildirim HEMEN gösterilir (NotificationManager.notify)
3. Foreground Service başlatılır
4. Service, kalan 4 aşamayı zamanlar (Handler.postDelayed)
5. Her aşamada bildirim güncellenir
6. Son aşamadan 3 saniye sonra servis otomatik durdurulur
1. Butona Tıklama
2. LiveNotificationManager.startNotificationWithoutService() çağrılır
3. İlk bildirim hemen gösterilir
4. Kalan aşamalar Handler ile zamanlanır
5. Her aşamada bildirim güncellenir
6. Son aşamadan 3 saniye sonra bildirim kaldırılır
- Android Studio: Ladybug | 2024.2.1 veya üzeri
- Minimum SDK: 36 (Android 15)
- Target SDK: 36
- JDK: 17
- Kotlin: 2.0+
-
Projeyi Klonlayın
git clone https://github.com/gkhnakbs/GALiveNotification.git cd GALiveNotification -
Android Studio'da Açın
- Android Studio'yu başlatın
- "Open an Existing Project" seçin
- Proje klasörünü seçin
-
Çalıştırın
- Android 15 (API 36) cihaz veya emülatör gereklidir
- Run butonuna basın (Shift + F10)
Uygulama otomatik olarak aşağıdaki izinleri ister:
POST_NOTIFICATIONS- Bildirim gösterme izniPOST_PROMOTED_NOTIFICATIONS- Live Update bildirimleri içinFOREGROUND_SERVICE- Arka plan servisi çalıştırmaFOREGROUND_SERVICE_SPECIAL_USE- Özel amaçlı foreground service
GALiveNotification/
│
├── app/src/main/
│ ├── java/com/gkhnakbs/galivenotification/
│ │ ├── MainActivity.kt # Ana aktivite, UI ve izin yönetimi
│ │ ├── LiveNotificationManager.kt # Bildirim oluşturma ve yönetme
│ │ ├── LiveNotificationService.kt # Foreground service implementasyonu
│ │ └── ui/theme/ # Compose tema dosyaları
│ │
│ ├── res/
│ │ ├── drawable/ # Bildirim ikonları
│ │ │ ├── live_notification_prepare.png
│ │ │ ├── live_notification_food_pan.png
│ │ │ ├── live_notification_courier.png
│ │ │ ├── live_notification_door.png
│ │ │ └── live_notification_check.png
│ │ ├── values/strings.xml # İngilizce metinler
│ │ └── values-tr/strings.xml # Türkçe metinler
│ │
│ └── AndroidManifest.xml # İzinler ve servis tanımları
│
├── gradle/
│ └── libs.versions.toml # Bağımlılık versiyonları
│
├── build.gradle.kts # Proje yapılandırması
└── README.md # Bu dosya
Singleton bir nesne olarak tasarlanmıştır ve aşağıdaki fonksiyonları sağlar:
// Başlatma (Activity onCreate veya Service onCreate içinde)
LiveNotificationManager.initialize(context, notificationManager)
// İlk bildirimi al
val notification = LiveNotificationManager.getInitialNotification()
// Belirli bir durum için bildirim oluştur
val orderStates = LiveNotificationManager.getOrderStates()
val notification = LiveNotificationManager.buildNotificationForState(orderStates[2])
// Foreground service olmadan bildirim başlat
LiveNotificationManager.startNotificationWithoutService()
// Zamanlanmış bildirimleri iptal et
LiveNotificationManager.cancelScheduledTasks()
// Bildirimi kaldır
LiveNotificationManager.cancelNotification()
// Promoted notifications izni kontrolü
val isEnabled = LiveNotificationManager.isPostPromotionsEnabled()Foreground service kullanarak bildirimleri yönetir:
// Servisi başlat
context.startForegroundService(Intent(context, LiveNotificationService::class.java))
// Servis otomatik olarak:
// - İlk bildirimi foreground notification olarak gösterir
// - Kalan aşamaları zamanlar
// - Tamamlandığında kendini durdururBildirim zamanlamalarını değiştirmek için LiveNotificationManager.getOrderStates() fonksiyonundaki delay değerlerini düzenleyin:
OrderStateData(
delay = 5000, // Milisaniye cinsinden gecikme
progress = 25,
iconResId = R.drawable.live_notification_food_pan,
contentText = R.string.order_preparing_content,
subText = R.string.order_status_preparing,
ticker = R.string.order_preparing_ticker
)- Durum çubuğu renk değiştirme butonu
- Foreground service ile bildirim gönderme butonu
- Direkt bildirim gönderme butonu
- Promoted notifications izin durumu (varsa)
- Uygulama ikonu ve adı
- Sipariş durum başlığı
- Durum açıklaması
- İlerleme çubuğu (segment ve nokta gösterileri)
- Büyük ikon (aşamaya özel)
- Aksiyon butonu (son aşamada)
- Kotlin - Programlama dili
- Jetpack Compose - UI framework
- Material 3 - Tasarım sistemi
- Android Notification API - Bildirim yönetimi
- Foreground Service - Arka plan işlemleri
- Handler & Looper - Zamanlama mekanizması
- Lazy Initialization: Handler ve NotificationManager nesneleri sadece gerektiğinde oluşturulur
- Gereksiz Tekrar Önleme: İlk bildirim startForeground ile gösterildiği için tekrar gönderilmez
- Anında Gösterim: MainActivity'de önce bildirim gösterilir, sonra servis başlatılır
- Bellek Yönetimi: Runnable referansları tutulur ve iptal edilebilir
Önceki durum: Foreground service başlayana kadar bildirim gösterilmiyordu (~500ms gecikme)
Çözüm:
// MainActivity.onCheckout()
1. NotificationManager.notify() ile bildirim HEMEN gösterilir
2. startForegroundService() ile servis başlatılır
3. Servis aynı notification ID ile devam ederSonuç: Sıfır gecikme ile bildirim gösterimi
- 🇬🇧 İngilizce (varsayılan)
- 🇹🇷 Türkçe
Yeni dil eklemek için res/values-{language_code}/strings.xml dosyası oluşturun.
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.
Gökhan Akbaş
Android Live Update Notification özelliğini keşfetmeme ilham veren Android geliştirici topluluğuna teşekkürler!
⭐ Projeyi beğendiyseniz yıldız vermeyi unutmayın!
- ✅ Otomatik Zamanlama: Handler üzerinden otomatik adım ilerlemesi
- ✅ Esneklik: Farklı durum ve senaryolara özelleştirilebilir
- Android SDK: API Level 36 (Android 15.0 / Baklava) ve üstü
- Kotlin: 1.9 ve üstü
- Jetpack Compose: Latest
- AndroidX Core: Latest
Bu proje MIT Lisansı altında lisanslanmıştır. Detaylı bilgi için LICENSE dosyasını inceleyiniz.
Katkılar: Bu proje için yapılacak katkılar memnuniyetle kabul edilir. Lütfen değişikliklerinizle bir pull request gönderin.










