Bildirimler, uygulamanız kullanılmadığı sırada uygulamanızdaki etkinlikler hakkında kısa ve zamanında bilgi sağlar. Bu belgede, çeşitli özelliklere sahip bir bildirimin nasıl oluşturulacağı açıklanmaktadır. Bildirimlerin Android'de nasıl göründüğüne dair giriş niteliğinde bilgi edinmek için Bildirimlere genel bakış başlıklı makaleyi inceleyin. Bildirimleri kullanan örnek kod için GitHub'daki SociaLite örneğine bakın.
Bu sayfadaki kod, AndroidX kitaplığındaki NotificationCompat API'lerini kullanır. Bu API'ler, Android 9'a (API düzeyi 28) kadar geriye dönük uyumluluk sağlarken yalnızca Android'in daha yeni sürümlerinde kullanılabilen özellikler eklemenize olanak tanır.
Ancak satır içi yanıtlama işlemi gibi bazı özellikler, önceki sürümlerde işlem yapılmamasına neden olur.
Temel bildirim oluşturma
En temel ve kompakt biçimindeki (daraltılmış biçim olarak da bilinir) bir bildirimde simge, başlık ve az miktarda metin içeriği gösterilir. Bu bölümde, kullanıcının uygulamanızda bir etkinliği başlatmak için dokunabileceği bir bildirimin nasıl oluşturulacağı gösterilmektedir.
Şekil 1. Simge, başlık ve metin içeren bir bildirim.
Bildirimin her bir bölümü hakkında daha fazla bilgi için bildirim anatomisi ile ilgili bölümü okuyun.
Çalışma zamanında istenen izni beyan etme
Android 13 (API düzeyi 33) ve sonraki sürümler, bir uygulamadan muaf olmayan bildirimler [Ön Plan Hizmetleri (FGS) dahil] yayınlamak için çalışma zamanında istenen izinleri destekler.
Uygulamanızın manifest dosyasında beyan etmeniz gereken izin, aşağıdaki kod snippet'inde gösterilmektedir:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Çalışma zamanında istenen izinler hakkında daha fazla bilgi için Bildirimler için çalışma zamanında istenen izin başlıklı makaleyi inceleyin.
Bildirim içeriğini ayarlama
Başlamak için NotificationCompat.Builder nesnesini kullanarak bildirimin içeriğini ve kanalını ayarlayın. Aşağıdaki örnekte, aşağıdaki özelliklere sahip bir bildirimin nasıl oluşturulacağı gösterilmektedir:
setSmallIcon()tarafından ayarlanan küçük bir simge. Kullanıcıya gösterilmesi gereken tek içerik budur.setContentTitle()tarafından ayarlanan başlık.setContentText()tarafından ayarlanan gövde metni.setPriority()tarafından ayarlanan bildirim önceliği. Öncelik, Android 7.1 ve önceki sürümlerde bildirimin ne kadar müdahaleci olduğunu belirler. Android 8.0 ve sonraki sürümlerde, kanal önemini bir sonraki bölümde gösterildiği gibi ayarlayın.
val textTitle = "Title" val textContent = "Content" val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle(textTitle) .setContentText(textContent) .setPriority(NotificationCompat.PRIORITY_DEFAULT)
NotificationCompat.Builder oluşturucusu, bir kanal kimliği sağlamanızı gerektirir. Bu, Android 8.0 (API düzeyi 26) ve sonraki sürümlerle uyumluluk için gereklidir ancak önceki sürümler tarafından yoksayılır.
Varsayılan olarak, bildirimin metin içeriği tek satıra sığacak şekilde kısaltılır. Genişletilebilir bir bildirim oluşturarak ek bilgiler gösterebilirsiniz.
Şekil 2. Daraltılmış ve genişletilmiş biçimlerde genişletilebilir bir bildirim.
Bildiriminizin daha uzun olmasını istiyorsanız setStyle() ile bir stil şablonu ekleyerek genişletilebilir bildirimi etkinleştirebilirsiniz. Örneğin, aşağıdaki kod daha büyük bir metin alanı oluşturur:
val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("My notification") .setContentText("Much longer text that cannot fit one line...") .setStyle(NotificationCompat.BigTextStyle() .bigText("Much longer text that cannot fit one line...")) .setPriority(NotificationCompat.PRIORITY_DEFAULT)
Resim ve medya oynatma kontrolleri ekleme de dahil olmak üzere diğer büyük bildirim stilleri hakkında daha fazla bilgi için Genişletilebilir bildirim oluşturma başlıklı makaleyi inceleyin.
Kanal oluşturma ve önem düzeyini ayarlama
Android 8.0 ve sonraki sürümlerde bildirimi yayınlayabilmek için NotificationChannel örneğini createNotificationChannel() öğesine ileterek uygulamanızın bildirim kanalını sisteme kaydedin. Aşağıdaki kod, SDK_INT sürümündeki bir koşul tarafından engelleniyor:
fun createNotificationChannel(context: Context) { // Create the NotificationChannel, but only on API 26+ because // the NotificationChannel class is not in the Support Library. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val name = context.getString(R.string.channel_name) val descriptionText = context.getString(R.string.channel_description) val importance = NotificationManager.IMPORTANCE_DEFAULT val channel = NotificationChannel(CHANNEL_ID, name, importance).apply { description = descriptionText } // Register the channel with the system. val notificationManager: NotificationManager = context.getSystemService(NotificationManager::class.java) as NotificationManager notificationManager.createNotificationChannel(channel) } }
Android 8.0 ve sonraki sürümlerde bildirim yayınlamadan önce bildirim kanalını oluşturmanız gerektiğinden, uygulamanız başlatıldığında bu kodu yürütün. Mevcut bir kanalı oluşturmak hiçbir şey yapmadığından tekrar tekrar çağrılması güvenlidir.
NotificationChannel oluşturucusu, NotificationManager sabiti kullanan bir önem düzeyi gerektirir. Bu, kullanıcının nasıl kesintiye uğratılacağını belirler. Android 7.1 ve önceki sürümleri desteklemek için önceliği, yukarıdaki örnekte gösterildiği gibi setPriority() ile de ayarlayın.
Önem veya öncelik düzeyini ayarlamanız gerekse de sistem, uyarı davranışını garanti etmez. Sistem, diğer faktörlere göre bu düzeyi ayarlayabilir ve kullanıcı, kanalın önem düzeyini dilediği zaman özelleştirebilir.
Farklı düzeylerin ne anlama geldiği hakkında daha fazla bilgi için bildirim önem düzeyleri ile ilgili makaleyi okuyun.
Bildirimin dokunma işlemini ayarlama
Her bildirim, dokunma işlemine yanıt vermelidir. Bu yanıt genellikle uygulamanızda bildirime karşılık gelen bir etkinliği açar. Bunun için PendingIntent nesnesiyle tanımlanan bir içerik intent'i belirtin ve bunu setContentIntent() yöntemine iletin.
Aşağıdaki snippet'te, kullanıcı bildirime dokunduğunda bir etkinliği açmak için temel bir intent'in nasıl oluşturulacağı gösterilmektedir:
// Create an explicit intent for an Activity in your app. val intent = Intent(context, AlertDetails::class.java).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK } val pendingIntent: PendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE) val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("My notification") .setContentText("Hello World!") .setPriority(NotificationCompat.PRIORITY_DEFAULT) // Set the intent that fires when the user taps the notification. .setContentIntent(pendingIntent) .setAutoCancel(true)
Bu kod, kullanıcı dokunduğunda bildirimi otomatik olarak kaldıran setAutoCancel() yöntemini çağırır.
Yukarıdaki örnekteki intent işaretleri, kullanıcı bildirimi kullanarak uygulamanızı açtıktan sonra beklenen gezinme deneyimini korur. Başlattığınız etkinliğin türüne bağlı olarak bu yöntemi kullanmak isteyebilirsiniz. Etkinlik türleri şunlar olabilir:
Yalnızca bildirime verilen yanıtlar için mevcut olan bir etkinlik. Kullanıcının normal uygulama kullanımı sırasında bu etkinliğe gitmesi için bir neden yoktur. Bu nedenle etkinlik, uygulamanızın mevcut görevine ve eski yığınına eklenmek yerine yeni bir görev başlatır. Bu, önceki örnekte oluşturulan niyet türüdür.
Uygulamanızın normal uygulama akışında bulunan bir etkinlik. Bu durumda, etkinliğin başlatılması bir eski yığın oluşturur. Böylece kullanıcının Geri ve Yukarı düğmeleri ile ilgili beklentileri korunur.
Bildirimi göster
Bildirimin görünmesi için NotificationManagerCompat.notify() yöntemini çağırın ve bu yönteme bildirim için benzersiz bir kimlik ile NotificationCompat.Builder.build() sonucunu iletin. Bu durum aşağıdaki örnekte gösterilmektedir:
with(NotificationManagerCompat.from(context)) { if (ActivityCompat.checkSelfPermission( context, Manifest.permission.POST_NOTIFICATIONS ) != PackageManager.PERMISSION_GRANTED ) { // TODO: Consider calling ActivityCompat#requestPermissions here // to request the missing permissions, and then overriding // public fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, // grantResults: IntArray) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return@with } // notificationId is a unique int for each notification that you must define. notify(notificationId, builder.build())
NotificationManagerCompat.notify() yöntemine ilettiğiniz bildirim kimliğini kaydedin. Bildirimi güncellemek veya kaldırmak istediğinizde bu kimliğe ihtiyacınız olacaktır.
Ayrıca, Android 13 ve sonraki sürümleri çalıştıran cihazlarda temel bildirimleri test etmek için bildirimleri manuel olarak etkinleştirin veya bildirim isteğinde bulunmak için bir iletişim kutusu oluşturun.
İşlem düğmeleri ekleme
Bildirimlerde, kullanıcının hızlıca yanıt vermesini sağlayan en fazla üç işlem düğmesi (ör. hatırlatıcıyı erteleme veya kısa mesajı yanıtlama) bulunabilir. Ancak bu işlem düğmeleri, kullanıcı bildirime dokunduğunda gerçekleştirilen işlemi kopyalamamalıdır.
Şekil 3. Tek işlem düğmesi içeren bildirim.
İşlem düğmesi eklemek için addAction() yöntemine bir PendingIntent iletin. Bu, bildirimin varsayılan dokunma işlemini ayarlamaya benzer. Ancak bir etkinliği başlatmak yerine, arka planda bir iş gerçekleştiren BroadcastReceiver başlatmak gibi başka işlemler yapabilirsiniz. Böylece işlem, açık olan uygulamayı kesintiye uğratmaz.
Örneğin, aşağıdaki kodda belirli bir alıcıya nasıl yayın gönderileceği gösterilmektedir:
val ACTION_SNOOZE = "snooze" val snoozeIntent = Intent(context, MyBroadcastReceiver::class.java).apply { action = ACTION_SNOOZE putExtra(EXTRA_NOTIFICATION_ID, 0) } val snoozePendingIntent: PendingIntent = PendingIntent.getBroadcast(context, 0, snoozeIntent, PendingIntent.FLAG_IMMUTABLE) val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("My notification") .setContentText("Hello World!") .setPriority(NotificationCompat.PRIORITY_DEFAULT) .setContentIntent(pendingIntent) .addAction(R.drawable.snooze, context.getString(R.string.snooze), snoozePendingIntent)
Arka planda çalışma yürütmek için BroadcastReceiver oluşturma hakkında daha fazla bilgi edinmek istiyorsanız Yayınlara genel bakış başlıklı makaleyi inceleyin.
Bunun yerine, parçaları duraklatma ve atlama gibi medya oynatma düğmeleri içeren bir bildirim oluşturmaya çalışıyorsanız medya kontrolleri içeren bir bildirim oluşturma başlıklı makaleyi inceleyin.
Hızlı yanıt işlemi ekleme
Android 7.0'da (API düzeyi 24) kullanıma sunulan hızlı yanıt işlemi, kullanıcıların doğrudan bildirime metin girmesine olanak tanır. Ardından metin, bir etkinlik açılmadan uygulamanıza gönderilir. Örneğin, kullanıcıların kısa mesajları yanıtlamasına veya görev listelerini bildirimden güncellemesine olanak tanımak için hızlı yanıt işlemini kullanabilirsiniz.
Şekil 4. "Yanıtla" düğmesine dokunduğunuzda metin girişi açılır.
Hızlı yanıt işlemi, bildirimde metin girişi açan ek bir düğme olarak görünür. Kullanıcı yazmayı bitirdiğinde sistem, metin yanıtını bildirim işlemi için belirttiğiniz intent'e ekler ve intent'i uygulamanıza gönderir.
Yanıt ekle düğmesi
Hızlı yanıtı destekleyen bir bildirim işlemi oluşturmak için aşağıdaki adımları uygulayın:
Bildirim işleminize ekleyebileceğiniz bir RemoteInput.Builder örneği oluşturun. Bu sınıfın oluşturucusu, sistemin metin girişi için anahtar olarak kullandığı bir dizeyi kabul eder. Uygulamanız daha sonra bu anahtarı kullanarak girişin metnini alır.
// Key for the string that's delivered in the action's intent. val replyLabel: String = context.resources.getString(R.string.reply_label) val remoteInput: RemoteInput = RemoteInput.Builder(KEY_TEXT_REPLY).run { setLabel(replyLabel) build() }
Yanıt işlemi için PendingIntent oluşturun.
// Build a PendingIntent for the reply action to trigger. val replyPendingIntent: PendingIntent = PendingIntent.getBroadcast(context, conversationId, getMessageReplyIntent(conversationId), PendingIntent.FLAG_MUTABLE)
addRemoteInput() kullanarak RemoteInput nesnesini bir işleme ekleyin.
// Create the reply action and add the remote input. val action: NotificationCompat.Action = NotificationCompat.Action.Builder(R.drawable.reply, context.getString(R.string.reply_label), replyPendingIntent) .addRemoteInput(remoteInput) .build()
İşlemi bir bildirime uygulayın ve bildirimi yayınlayın.
// Build the notification and add the action.
val newMessageNotification = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_message)
.setContentTitle(context.getString(R.string.title))
.setContentText(context.getString(R.string.content))
.addAction(action)
.build()
// Issue the notification.
NotificationManagerCompat.from(context).notify(notificationId, newMessageNotification)
Sistem, Şekil 4'te gösterildiği gibi kullanıcı bildirim işlemini tetiklediğinde yanıt girmesini ister.
Yanıttan kullanıcı girişini alma
Bildirimin yanıt kullanıcı arayüzünden kullanıcı girişi almak için RemoteInput.getResultsFromIntent() işlevini çağırın ve BroadcastReceiver tarafından alınan Intent değerini iletin:
private fun getMessageText(intent: Intent): CharSequence? { return RemoteInput.getResultsFromIntent(intent)?.getCharSequence(KEY_TEXT_REPLY) }
Metni işledikten sonra, aynı kimlik ve etiketle (kullanılıyorsa) NotificationManagerCompat.notify() yöntemini çağırarak bildirimi güncelleyin. Bu, hızlı yanıt kullanıcı arayüzünü gizlemek ve kullanıcıya yanıtının alındığını ve doğru şekilde işlendiğini onaylamak için gereklidir.
// Build a new notification, which informs the user that the system // handled their interaction with the previous notification. val repliedNotification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.message) .setContentText(context.getString(R.string.replied)) .build() // Issue the new notification. NotificationManagerCompat.from(context).notify(notificationId, repliedNotification)
Diğer verileri alma
Diğer veri türlerinin işlenmesi de RemoteInput ile benzer şekilde çalışır. Aşağıdaki örnekte giriş olarak resim kullanılmıştır.
val replyLabel: String = context.resources.getString(R.string.reply_label) val remoteInput: RemoteInput = RemoteInput.Builder(KEY_REPLY).run { setLabel(replyLabel) // Allow for image data types in the input. // This method can be used again to allow for other data types. setAllowDataType("image/*", true) build() }
RemoteInput#getDataResultsFromIntent yöntemini çağırın ve ilgili verileri ayıklayın.
class ReplyReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val dataResults = RemoteInput.getDataResultsFromIntent(intent, KEY_REPLY) val imageUri: Uri? = dataResults?.get("image/*") as? Uri if (imageUri != null) { // Extract the image context.contentResolver.openInputStream(imageUri)?.use { inputStream -> val bitmap = BitmapFactory.decodeStream(inputStream) // Display the image // ... } } } companion object { const val KEY_REPLY = "key_reply" const val KEY_TEXT_REPLY = "key_text_reply" } }
Bu yeni bildirimle çalışırken alıcının onReceive() yöntemine iletilen bağlamı kullanın.
setRemoteInputHistory() yöntemini çağırarak yanıtı bildirimin alt kısmına ekleyin. Ancak bir mesajlaşma uygulaması geliştiriyorsanız mesajlaşma stili bildirim oluşturun ve yeni mesajı görüşmeye ekleyin.
Mesajlaşma uygulamalarından gelen bildirimlerle ilgili daha fazla tavsiye için mesajlaşma uygulamaları için en iyi uygulamalar bölümüne bakın.
Acil mesaj gösterme
Uygulamanızın, gelen telefon araması veya çalan alarm gibi acil ve zamana duyarlı bir mesaj göstermesi gerekebilir. Bu gibi durumlarda, bildiriminize tam ekran intent'i ekleyebilirsiniz.
Bildirim çağrıldığında kullanıcılar, cihazın kilit durumuna bağlı olarak aşağıdakilerden birini görür:
- Kullanıcının cihazı kilitliyse kilit ekranını kaplayan tam ekran bir etkinlik görünür.
- Kullanıcının cihazının kilidi açıksa bildirim, bildirimi işleme veya kapatma seçeneklerini içeren genişletilmiş bir biçimde görünür.
Aşağıdaki kod snippet'inde, bildiriminizi tam ekran intent ile nasıl ilişkilendireceğiniz gösterilmektedir:
val fullScreenIntent = Intent(context, ImportantActivity::class.java) val fullScreenPendingIntent = PendingIntent.getActivity(context, 0, fullScreenIntent, PendingIntent.FLAG_IMMUTABLE) val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("My notification") .setContentText("Hello World!") .setPriority(NotificationCompat.PRIORITY_DEFAULT) .setFullScreenIntent(fullScreenPendingIntent, true)
Kilit ekranı görünürlüğünü ayarlama
Kilit ekranından bildirimde görünen ayrıntı düzeyini kontrol etmek için setVisibility() yöntemini çağırın ve aşağıdaki değerlerden birini belirtin:
VISIBILITY_PUBLIC: Bildirimin tüm içeriği kilit ekranında gösterilir.VISIBILITY_SECRET: Bildirimin hiçbir bölümü kilit ekranında gösterilmez.VISIBILITY_PRIVATE: Kilit ekranında yalnızca bildirimin simgesi ve içerik başlığı gibi temel bilgiler gösterilir. Bildirimin tam içeriği gösterilmez.
VISIBILITY_PRIVATE değerini ayarladığınızda, bildirim içeriğinin belirli ayrıntıları gizleyen alternatif bir sürümünü de sağlayabilirsiniz. Örneğin, bir SMS uygulaması "3 yeni kısa mesajınız var" şeklinde bir bildirim gösterebilir ancak mesaj içeriklerini ve gönderenleri gizleyebilir. Bu alternatif bildirimi sağlamak için önce her zamanki gibi NotificationCompat.Builder ile alternatif bildirimi oluşturun. Ardından, setPublicVersion() ile alternatif bildirimi normal bildirime ekleyin.
Kullanıcının, bildirimlerinin kilit ekranında görünür olup olmayacağı konusunda her zaman nihai kontrole sahip olduğunu ve bunları uygulamanızın bildirim kanallarına göre kontrol edebileceğini unutmayın.
Bildirimleri güncelleme
Bir bildirimi yayınladıktan sonra güncellemek için NotificationManagerCompat.notify() yöntemini tekrar çağırın ve daha önce kullandığınız kimliği iletin. Önceki bildirim kapatılırsa bunun yerine yeni bir bildirim oluşturulur.
İsteğe bağlı olarak setOnlyAlertOnce() yöntemini çağırabilirsiniz. Böylece bildiriminiz, yalnızca ilk kez göründüğünde kullanıcıyı ses, titreşim veya görsel ipuçlarıyla uyarır ve sonraki güncellemelerde uyarı vermez.
Bildirimleri kaldırma
Bildirimler, aşağıdakilerden biri gerçekleşene kadar görünür kalır:
- Kullanıcı bildirimi kapatır.
- Bildirimi oluştururken
setAutoCancel()yöntemini çağırırsanız kullanıcı bildirime dokunur. - Belirli bir bildirim kimliği için
cancel()yöntemini çağırırsınız. Bu yöntem, devam eden bildirimleri de siler. - Daha önce gönderdiğiniz tüm bildirimleri kaldıran
cancelAll()yöntemini çağırırsınız. - Bildirimi oluştururken
setTimeoutAfter()kullanarak bir zaman aşımı ayarladıysanız belirtilen süre dolar. Gerekirse belirtilen zaman aşımı süresi dolmadan önce bildirimi iptal edebilirsiniz.
Mesajlaşma uygulamaları için en iyi uygulamalar
Mesajlaşma ve sohbet uygulamalarınız için bildirim oluştururken burada listelenen en iyi uygulamaları göz önünde bulundurun.
MessagingStyle'ı kullanma
Android 7.0 (API düzeyi 24) sürümünden itibaren Android, özellikle mesajlaşma içeriği için bir bildirim stili şablonu sunar. NotificationCompat.MessagingStyle sınıfını kullanarak bildirimde gösterilen etiketlerin birçoğunu değiştirebilirsiniz. Bunlar arasında görüşme başlığı, ek mesajlar ve bildirimin içerik görünümü yer alır.
Aşağıdaki kod snippet'inde, MessagingStyle sınıfını kullanarak bir bildirimin stilini nasıl özelleştireceğiniz gösterilmektedir.
val message1 = NotificationCompat.MessagingStyle.Message( messages[0].text, messages[0].time, messages[0].sender ) val message2 = NotificationCompat.MessagingStyle.Message( messages[1].text, messages[1].time, messages[1].sender ) notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.MessagingStyle(Person.Builder().setName("Me").build()) .addMessage(message1) .addMessage(message2) ) .build()
Android 9.0 (API düzeyi 28) sürümünden itibaren, bildirimin ve avatarlarının en iyi şekilde oluşturulması için Person sınıfının kullanılması da gerekir.
NotificationCompat.MessagingStyle kullanırken aşağıdakileri yapın:
- İkiden fazla kişinin katıldığı grup sohbetlerine başlık eklemek için
MessagingStyle.setConversationTitle()yöntemini çağırın. Grup sohbetinin adı veya adı yoksa görüşmedeki katılımcıların listesi iyi bir görüşme başlığı olabilir. Bu bilgi olmadan mesaj, görüşmedeki en son mesajı gönderen kişiyle yapılan bire bir görüşmeye aitmiş gibi yanlış anlaşılabilir. - Resim gibi medya mesajları eklemek için
MessagingStyle.setData()yöntemini kullanın. image/* kalıbındaki MIME türleri desteklenir.
Hızlı yanıt özelliğini kullanma
Hızlı yanıt, kullanıcıların bir mesajı satır içi olarak yanıtlamasına olanak tanır.
- Kullanıcı satır içi yanıt işlemiyle yanıt verdikten sonra
MessagingStylebildirimini güncellemek içinMessagingStyle.addMessage()kullanın ve bildirimi geri çekmeyin veya iptal etmeyin. Bildirimin iptal edilmemesi, kullanıcının bildirimden birden fazla yanıt göndermesine olanak tanır. - Satır içi yanıt işlemini Wear OS ile uyumlu hale getirmek için
Action.WearableExtender.setHintDisplayInlineAction(true)yöntemini çağırın. - Bildirime geçmiş mesajları ekleyerek doğrudan yanıt görüşmesine bağlam sağlamak için
addHistoricMessage()yöntemini kullanın.
Akıllı Yanıt'ı etkinleştirme
- Akıllı Yanıt'ı etkinleştirmek için yanıt işleminde
setAllowGeneratedResponses(true)yöntemini çağırın. Bu sayede, bildirim bir Wear OS cihazına bağlandığında Akıllı Yanıt yanıtları kullanıcılara sunulur. Akıllı Yanıtlar,NotificationCompat.MessagingStylebildiriminin sağladığı bağlamı kullanan ve tamamen kol saatinde çalışan bir makine öğrenimi modeli tarafından oluşturulur. Yanıtların oluşturulması için internete veri yüklenmez.
Bildirim meta verileri ekleme
- Cihaz Rahatsız Etmeyin modundayken sisteme uygulama bildirimlerinizi nasıl işleyeceğini bildirmek için bildirim meta verileri atayın. Örneğin, Rahatsız Etmeyin modunu geçersiz kılmak için
addPerson()veyasetCategory(Notification.CATEGORY_MESSAGE)yöntemini kullanın.