Notification Action — push bildiriminde doğrudan görünen ve kullanıcının uygulamayı açmadan bir işlem gerçekleştirmesini sağlayan etkileşimli düğmeler ve giriş alanlarıdır. Bu, kullanıcı deneyiminin önemli bir unsurudur ve hedef ekrana giden yolu kısaltır. Android Developers, 2025'e göre, Notification Action etkileşimdeki sürtüşmeyi azaltarak kullanıcı katılımını %40'a kadar artırır.
Önemli Noktalar
Notification Action, belirli bir işlemi gerçekleştirmek için push bildirimine eklenen etkileşimli bir arayüz öğesidir. Kullanıcı, uygulamaya girmeden bir mesaja yanıt verebilir, bir görevi onaylayabilir veya belirli bir ekranı açabilir. İşlemler, bildirim metninin altında düğmeler olarak veya kaydırma sırasında genişletilmiş görünümde görünür.
Notification Action'ın temel amacı, kullanıcının hedefine ulaşması için gereken adım sayısını azaltmaktır. Uygulamayı açıp istenen ekrana gitmek yerine, kullanıcı tek bir düğmeye basar. Araştırmalar, etkileşimli bildirimlere sahip uygulamaların basit bildirimlere kıyasla %25–40 daha yüksek katılım gösterdiğini ortaya koymaktadır.
Android'de Notification Action, kompakt görünümde simge düğmeleri ve genişletilebilir modda metin düğmeleri olarak görüntülenir. iOS'ta işlemler, bildirime uzun basıldığında veya sola kaydırıldığında görünür. Her platformun işlem sayısıyla ilgili kendi önerileri vardır — Android en fazla 3, iOS en fazla 4 önerir.
| Platform | Maks. İşlem | Görüntüleme Yöntemi | İşlem Türleri |
|---|---|---|---|
| Android | 3 | Simge + Metin | Düğmeler, Metin Girişi |
| iOS | 4 | Uzun Basma / Kaydırma | Düğmeler, Metin Girişi |
Android'de, Notification Action, NotificationCompat.Builder kullanılarak addAction() yöntemiyle oluşturulur. Her işlem bir simge, metin ve dokunulduğunda tetiklenen PendingIntent içerir. Android 7.0 (API 24)'ten itibaren RemoteInput aracılığıyla doğrudan metin girişi desteklenir.
Bir bildirimde düğme oluşturmak için, dokunulduğunda başlatılacak bir PendingIntent tanımlamak gerekir. PendingIntent bir Activity açabilir, Service veya BroadcastReceiver başlatabilir. İşlem simgesi tek renkli olmalı ve Material Design'a uygun olmalıdır.
val acceptIntent = Intent(context, AcceptActionReceiver::class.java)
acceptIntent.putExtra("notification_id", notificationId)
val acceptPendingIntent = PendingIntent.getBroadcast(
context, requestCode,
acceptIntent, PendingIntent.FLAG_UPDATE_CURRENT
)
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Onay talebi")
.setContentText("Görevin tamamlandığını onaylayın")
.addAction(R.drawable.ic_accept, "Onayla", acceptPendingIntent)
.build()
Metin girişi gerektiren senaryolar için (örneğin, bir mesaja yanıt verme), Android RemoteInput sağlar. Kullanıcı metni doğrudan bildirime girer ve uygulama bir Activity açmadan alır. RemoteInput, Android 7.0+'da desteklenir ve bir BroadcastReceiver veya Service'de açık işleme gerektirir.
val remoteInput = RemoteInput.Builder("reply_input")
.setLabel("Yanıtı girin")
.build()
val replyAction = NotificationCompat.Action.Builder(
R.drawable.ic_reply, "Yanıtla", replyPendingIntent
)
.addRemoteInput(remoteInput)
.build()
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.addAction(replyAction)
.build()
Bir işleme dokunulduğunda, sistem belirtilen PendingIntent'i başlatır. RemoteInput aracılığıyla girilen metni almak için RemoteInput.getResultsFromIntent(intent) çağrısını yapın. UI iş parçacığını bloke etmemek için işlemlerin IntentService veya WorkManager'da işlenmesi önerilir.
iOS'ta, Notification Action, UserNotifications çerçevesi aracılığıyla uygulanır. Geliştirici işlem kategorileri (UNNotificationCategory) oluşturur ve bunları uygulama başlangıcında kaydeder. Her işlem, benzersiz bir tanımlayıcıya sahip UNNotificationAction nesnesiyle tanımlanır.
iOS'ta push bildirimlerine işlem eklemek için, ilgili işlemleri gruplayan bir kategori oluşturmak gerekir. Kategori, bildirim yükünde category alanı aracılığıyla belirtilir. Bir bildirim alındığında, sistem belirtilen kategoriden kullanılabilir işlemleri görüntüler.
import UserNotifications
class NotificationSetup {
func registerNotificationCategories() {
let approveAction = UNNotificationAction(
identifier: "APPROVE_ACTION",
title: "Onayla",
options: [.foreground]
)
let declineAction = UNNotificationAction(
identifier: "DECLINE_ACTION",
title: "Reddet",
options: [.destructive]
)
let category = UNNotificationCategory(
identifier: "REQUEST_CATEGORY",
actions: [approveAction, declineAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
}
}
Kullanıcı bir işleme dokunduğunda, sistem UNUserNotificationCenter temsilcisinde userNotificationCenter:didReceiveNotificationResponse yöntemini çağırır. response.actionIdentifier, gerçekleştirilen işlemin tanımlayıcısını içerir. Metin girişi için, kullanıcının girdiği metni sağlayan UNTextInputNotificationAction kullanılır.
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(
center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void
) {
switch response.actionIdentifier {
case "APPROVE_ACTION":
Log.d("Action: approved")
case "DECLINE_ACTION":
Log.d("Action: declined")
case UNNotificationDefaultActionIdentifier:
Log.d("Action: opened app")
default:
break
}
completionHandler()
}
}
Notification Action, etkileşim türüne ve kullanım senaryosuna göre sınıflandırılır. İşlem türünün doğru seçimi, kullanıcı deneyimini ve hedef işleme dönüşümü doğrudan etkiler.
En yaygın tür — uygulamayı belirli bir ekranda açan düğme. Android'de PendingIntent.getActivity(), iOS'ta UNNotificationAction'ın .foreground seçeneği kullanılır. Sipariş ayrıntılarını görüntüleme gibi tam arayüz gerektiren işlemler için kullanılır.
Uygulamayı açmadan yürütülen işlemler. Android'de PendingIntent.getBroadcast() veya PendingIntent.getService() kullanılır. iOS'ta — .authenticationRequired seçeneği veya .foreground olmadan. Örnekler: görevi tamamlandı olarak işaretleme, gönderiyi beğenme, favorilere ekleme.
Kullanıcının doğrudan bildirime metin girmesini sağlar. Android'de RemoteInput aracılığıyla, iOS'ta UNTextInputNotificationAction aracılığıyla uygulanır. Mesajlara yanıt verme, yorumlar, tek kullanımlık doğrulama kodları girmek için kullanılır.
Verileri geri döndürülemez şekilde değiştiren işlemler — silme, reddetme, engelleme. Android'de görsel olarak vurgulanır (bazı sistemlerde kırmızı renk), iOS'ta .destructive seçeneği gerektirir. Yıkıcı işlemler için, örneğin ek bir iletişim kutusu veya ikinci bir dokunuş yoluyla onay istenmesi önerilir.
Ayrı bir işlem sınıfı — bildirimden doğrudan metin girişi. Android'de bu, PendingIntent ile birlikte RemoteInput aracılığıyla uygulanır. iOS'ta, UNNotificationAction'dan miras alan UNTextInputNotificationAction kullanılır. Bu tür işlemler, mesajlaşma uygulamalarında hızlı yanıtlar, promosyon kodu girişi, geri bildirim formlarını doldurma veya hizmet kalitesini değerlendirme için kullanılır. Girilen metin, işlem tanımlayıcısıyla birlikte uygulamaya iletilir. Her iki platformda metin girişinin doğru işlenmesi için, hedef işlemi yürütmeden önce girilen verilerin ayrıştırılması ve doğrulanması uygulanmalıdır.
Doğru Notification Action işleme, analitik ve kullanıcı deneyimi için kritiktir. Her dokunuş günlüğe kaydedilmeli ve işlem, uygulama kapalı olsa bile güvenilir bir şekilde yürütülmelidir.
Her Notification Action dokunuşunu analitik sisteminiz aracılığıyla izleyin. Firebase Analytics, Mixpanel veya Yandex.Metrica, işlem tanımlayıcısını, dokunma zamanını ve bildirim bağlamını kaydetmeye olanak tanır. Bu veriler, bildirim stratejinizi optimize etmeye ve katılımı artırmaya yardımcı olur. Farklı işlem setleriyle A/B testi, kullanıcıyla en etkili etkileşim senaryolarını belirlemeye yardımcı olur.
Uygulama kapalıysa, sistem yine de bir işleme dokunulduğunda Intent veya UNNotificationResponse'u iletir. Android'de, garantili işleme için bir BroadcastReceiver kullanın. iOS'ta, sistem uygulamayı arka planda başlatır ve yanıtı temsilciye iletir. Kritik işlemler için (ödeme onayı, yetkilendirme), bir yeniden deneme mekanizması ekleyin ve kullanıcıya başarılı tamamlama hakkında bildirimde bulunun.
Android 7.0'dan itibaren geliştirici, simgeler ve renkler aracılığıyla Notification Action'ın görünümünü etkileyebilir. Simgeler tek renkli (alfa kanalı), 24x24 dp boyutunda olmalıdır. iOS'ta düğme özelleştirmesi sınırlıdır — sistem renkleri ve yazı tipleri kullanılır. Material Design, işlemlerin önceliğe göre gruplandırılmasını önerir: en önemli işlem ilk, yıkıcı olanlar son.
Sıkça Sorulan Sorular
Android en fazla 3 işlem önerir, iOS — 4'e kadar. Sınırın aşılması, bazı işlemlerin görüntülenmemesine veya bir alt menüde gizlenmesine neden olur.
Simge, NotificationCompat.Action.Builder'a bir drawable kaynağı olarak iletilir. Simge tek renkli (alfa kanalı), 24x24 dp boyutunda ve Material Design yönergelerine uygun olmalıdır.
Evet, bildirim kilitli ekranda görüntüleniyorsa ve visibility bayrağı VISIBILITY_PUBLIC olarak ayarlanmışsa çalışır. iOS'ta, yetkilendirme gerektiren işlemler için .authenticationRequired seçeneği gereklidir.
Android'de sistem süreci yeniden oluşturur ve Intent'i iletir. iOS'ta sistem uygulamayı arka planda başlatır. Garantili teslimat, Android'de BroadcastReceiver ve iOS'ta UNNotificationServiceExtension kullanılarak elde edilebilir.
Android'de işlemler, bildirimin hemen altında simgeler olarak görünür. iOS'ta işlemler, uzun basma veya kaydırmanın arkasında gizlidir. Bildirimlerin UX tasarımı bu platform farklılıklarını dikkate almalıdır.
Özet
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.
Ayrıca okuyun