Anlık Bildirimler
Firebase Cloud Messaging üzerinden anlık bildirimler gönderin. FCM'yi kurun, bildirim kanalları oluşturun, eylemlere sahip bildirimler hazırlayın ve ön plan ile arka plan teslimatını yönetin.
Anlık Bildirimler, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 6 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 6 dersten oluşur.
Anlık Bildirimler Nedir
Anlık bildirimler, uygulama ön planda olmasa bile sunucunuzun kullanıcılara mesaj göndermesini sağlar. Yaygın kullanım alanları:
- Yeni mesaj uyarıları
- Sipariş durumu güncellemeleri
- Son dakika haberleri
- Anımsatıcılar ve kampanyalar
Android'de Firebase Bulut Mesajlaşma (FCM), standart anlık bildirim iletim hizmetidir.
FCM'ye Genel Bakış
Firebase Bulut Mesajlaşma (FCM) akışı:
- Uygulama ilk açılışta FCM'ye kaydolur → bir cihaz belirteci alır
- Uygulama belirteci sunucunuza gönderir
- Anlık bildirim göndermek istediğinizde sunucunuz FCM'ye bir mesaj gönderir
- FCM mesajı cihaza iletir
FCM ücretsiz ve güvenilirdir; uygulama sonlandırılmış olsa bile çalışır.
Projeye Firebase Ekleme
Firebase ekleme adımları:
- Firebase Console'a gidin → Proje ekle → Android uygulaması ekle
- Uygulamanızı paket adıyla kaydedin
google-services.jsondosyasını indirin veapp/klasörüne yerleştirin- Eklentileri ve bağımlılıkları ekleyin
// project/build.gradle:
buildscript {
dependencies { classpath 'com.google.gms:google-services:4.4.1' }
}
// app/build.gradle:
plugins { id 'com.google.gms.google-services' }
dependencies {
implementation platform('com.google.firebase:firebase-bom:32.7.4')
implementation 'com.google.firebase:firebase-messaging-ktx'
}FCM İzni (Android 13+)
Android 13'ten (API 33) itibaren POST_NOTIFICATIONS iznini, tehlikeli bir izin gibi çalışma zamanında istemeniz gerekir:
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
// In Activity (Android 13+):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermissionLauncher.launch(android.Manifest.permission.POST_NOTIFICATIONS)
}FirebaseMessagingService
Gelen FCM mesajlarını ve belirteç yenilemelerini işleyen bir hizmet oluşturun:
class MyFirebaseService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
// Send token to your backend to enable push delivery
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
val title = message.notification?.title ?: "New Message"
val body = message.notification?.body ?: ""
showNotification(title, body)
}
}Hizmeti Manifest'e Kaydetme
Hizmeti AndroidManifest.xml içinde bildirin:
<service
android:name=".MyFirebaseService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>Bildirim Kanalları (Android 8+)
Android 8'den (Oreo) itibaren bildirimler bir kanala atanmalıdır. Kullanıcılar her kanal için sesi, titreşimi ve önem düzeyini denetleyebilir:
fun createNotificationChannel(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
"messages_channel", // channel ID
"Messages", // user-visible name
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Incoming message notifications"
enableVibration(true)
}
val manager = context.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
}Bildirim Oluşturma ve Gösterme
Android sürümleri arasında uyumluluk sağlamak için NotificationCompat.Builder kullanın:
fun showNotification(context: Context, title: String, body: String) {
val intent = Intent(context, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(body)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true) // dismiss on tap
.setContentIntent(pendingIntent) // open app on tap
.build()
NotificationManagerCompat.from(context)
.notify(System.currentTimeMillis().toInt(), notification)
}İşlem Düğmeli Bildirim
Kullanıcıların uygulamayı açmadan işlem yapabilmesi için bildirimlere işlem düğmeleri ekleyin:
val replyIntent = Intent(context, ReplyReceiver::class.java)
val replyPending = PendingIntent.getBroadcast(
context, 1, replyIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("New message from Alice")
.setContentText("Hey, are you coming?")
.addAction(R.drawable.ic_reply, "Reply", replyPending)
.addAction(R.drawable.ic_dismiss, "Dismiss", null)
.build()Ön Plan ve Arka Plan İşleme
FCM, uygulamanın durumuna bağlı olarak farklı davranır:
- Uygulama ön planda —
onMessageReceived()çağrılır; bildirimi kendiniz oluşturup gösterirsiniz - Uygulama arka planda veya sonlandırılmış — FCM,
notificationyükündeki bildirimi otomatik olarak gösterir;onMessageReceivedçağrılmaz
Ek verileri data yüküne koyun; böylece bunları onMessageReceived içinde her zaman alabilirsiniz.
FCM Belirteci Alma
Sunucunuza göndermek üzere geçerli FCM belirtecini alın:
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Fetching token failed", task.exception)
return@addOnCompleteListener
}
val token = task.result
Log.d("FCM", "Token: $token")
// Send token to your server
sendTokenToServer(token)
}Hızlı Kontrol
Uygulamanız arka plandayken FCM, 'notification' yükü içeren bir mesaj iletirse ne olur?
Özet: Anlık Bildirimler
Android'de FCM ile anlık bildirimler:
- Firebase'i,
google-services.jsondosyasını vefirebase-messaging-ktxöğesini ekleyin - Android 13 ve sonraki sürümlerde
POST_NOTIFICATIONSiznini isteyin FirebaseMessagingServiceoluşturun →onNewToken+onMessageReceived- Android 8 ve sonraki sürümler için bir
NotificationChanneloluşturun NotificationCompat.Builderile bildirimler oluşturunonMessageReceivediçinde her zaman alabilmek için data yükünü kullanın
Sırada: WorkManager ile arka plan işlerini zamanlamak var.
Sıkça Sorulan Sorular
“Anlık Bildirimler” dersi ücretsiz mi?
Evet — “Anlık Bildirimler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 6 dersten oluşur.
“Anlık Bildirimler” dersinde ne öğreneceğim?
Firebase Cloud Messaging üzerinden anlık bildirimler gönderin. FCM'yi kurun, bildirim kanalları oluşturun, eylemlere sahip bildirimler hazırlayın ve ön plan ile arka plan teslimatını yönetin. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Android Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 6 dersinin 4. dersidir.
“Anlık Bildirimler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Retrofit ve REST API'leri
- Coil ile Görüntü Yükleme
- Hata Yönetimi ve Kullanıcı Deneyimi
- Anlık Bildirimler
- WorkManager ve Arka Plan Görevleri
- Play Store'da Yayınlama