Notifications
Manager powiadomień lokalnych z planowaniem
📖 Przegląd
Moduł Notifications umożliwia zarządzanie powiadomieniami lokalnymi:
tworzenie kanałów, natychmiastowe wyświetlanie oraz planowanie z WorkManager.
Szybki przykład
// Utwórz kanał
ADict.Notifications.createChannel("promo", "Promocje")
// Pokaż natychmiast
ADict.Notifications.show(
id = 1,
title = "Nowa oferta!",
body = "Sprawdź naszą promocję",
channelId = "promo"
)
// Zaplanuj na później
ADict.Notifications.schedule(
id = "reminder_24h",
title = "Wróć do nas!",
body = "Mamy coś nowego",
delayMs = 24 * 60 * 60 * 1000L
)
📢 Kanały
createChannel(channelId, channelName, description?, importance?)
Utwórz kanał powiadomień (wymagane na Android 8+).
deleteChannel(channelId: String)
Usuń kanał.
Konfiguracja kanałów
// Domyślny kanał tworzony automatycznie
// Własne kanały:
ADict.Notifications.createChannel(
channelId = "promo",
channelName = "Promocje i oferty",
description = "Powiadomienia o promocjach",
importance = NotificationManager.IMPORTANCE_DEFAULT
)
ADict.Notifications.createChannel(
channelId = "urgent",
channelName = "Ważne powiadomienia",
importance = NotificationManager.IMPORTANCE_HIGH
)
ADict.Notifications.createChannel(
channelId = "silent",
channelName = "Ciche aktualizacje",
importance = NotificationManager.IMPORTANCE_LOW
)
📲 Natychmiastowe powiadomienia
show(id, title, body, channelId?, smallIcon?, autoCancel?, priority?, intentClass?, extras?)
Pokaż powiadomienie natychmiast.
Pokazywanie powiadomień
// Proste powiadomienie
ADict.Notifications.show(
id = 1,
title = "Witaj!",
body = "Dziękujemy za korzystanie z aplikacji"
)
// Z akcją kliknięcia
ADict.Notifications.show(
id = 2,
title = "Nowa wiadomość",
body = "Masz nową wiadomość od Jana",
channelId = "messages",
intentClass = ChatActivity::class.java,
extras = mapOf("chat_id" to "123")
)
// Wysokie priorytety
ADict.Notifications.show(
id = 3,
title = "Zamówienie wysłane!",
body = "Twoje zamówienie jest w drodze",
priority = NotificationCompat.PRIORITY_HIGH
)
⏰ Planowanie powiadomień
schedule(id, title, body, delayMs, channelId?, smallIcon?, intentClass?, extras?)
Zaplanuj powiadomienie na później (WorkManager).
scheduleRepeating(id, title, body, intervalMs, channelId?, ...)
Zaplanuj powtarzające się powiadomienie.
cancel(id: String)
Anuluj zaplanowane powiadomienie.
cancelAll()
Anuluj wszystkie zaplanowane.
Planowanie
// Za 24 godziny
ADict.Notifications.schedule(
id = "comeback_24h",
title = "Tęsknimy za Tobą!",
body = "Wróć i sprawdź nowości",
delayMs = 24 * 60 * 60 * 1000L
)
// Za 7 dni
ADict.Notifications.schedule(
id = "weekly_reminder",
title = "Cotygodniowe podsumowanie",
body = "Zobacz swoje statystyki",
delayMs = 7 * 24 * 60 * 60 * 1000L,
intentClass = StatsActivity::class.java
)
// Codzienne przypomnienie (powtarzające się)
ADict.Notifications.scheduleRepeating(
id = "daily_tip",
title = "Porada dnia",
body = "Sprawdź nową poradę!",
intervalMs = 24 * 60 * 60 * 1000L
)
// Anulowanie
ADict.Notifications.cancel("comeback_24h")
ADict.Notifications.cancelAll()
🔧 Builder
Użycie Buildera
val notification = ADict.Notifications.Builder("promo_123")
.title("Specjalna oferta!")
.body("50% zniżki tylko dziś")
.channelId("promo")
.priority(NotificationCompat.PRIORITY_HIGH)
.onClick(PromoActivity::class.java)
.extras(mapOf("promo_code" to "SAVE50"))
.build()
ADict.Notifications.show(notification)
🔐 Uprawnienia
hasNotificationPermission(): Boolean
Sprawdź czy aplikacja ma uprawnienie do powiadomień.
⚠️ Android 13+: Wymagane uprawnienie POST_NOTIFICATIONS.
Dodaj do manifestu i poproś użytkownika o zgodę.
Sprawdzanie uprawnień
// W Activity
if (!ADict.Notifications.hasNotificationPermission()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}