Baloncuklar, kullanıcıların görüşmeleri görmesini ve görüşmelere katılmasını kolaylaştırır.
Baloncuklar, bildirim sisteminde yerleşik olarak bulunur. Başka bir uygulamanın üzerinde kayan ve her yerde takip edebilirsiniz. Kullanıcılar balonları genişleterek ve uygulama içeriğiyle etkileşimde bulunurlar. Tam olarak emin olmadıklarında yardımcı olabilir.
Cihaz kilitliyken veya her zaman açık ekran özelliği etkinken baloncuklar gerektiğini unutmayın.
Baloncuklar, devre dışı bırakılan bir özelliktir. Bir uygulama ilk balonunu gösterdiğinde izin iletişim kutusu iki seçenek sunar:
- Uygulamanızdan tüm baloncukları engelleyin. Bildirimler engellenmez ancak asla baloncuk olarak görünmez.
- Uygulamanızdaki tüm baloncuklara izin verin. Tüm bildirimler şununla gönderildi:
BubbleMetaData
baloncuk olarak görünür.
Balon API'si
Balonlar, bildirim API'si kullanılarak oluşturulur. Bu nedenle bildiriminizi normal. Bildiriminizin baloncuk olarak gösterilmesini istiyorsanız ekstra veri ekleyin .
Bir balonun genişletilmiş görünümü, seçtiğiniz bir etkinlikten oluşturulur. Etkinliği balon olarak düzgün bir şekilde görüntülenecek şekilde yapılandırın. Etkinlik, resizeable ve yerleştirilmiş. Herhangi bir yerine bildirim olarak görüntülenir.
Aşağıdaki kod, bir balonun nasıl uygulanacağını göstermektedir:
<activity
android:name=".bubbles.BubbleActivity"
android:theme="@style/AppTheme.NoActionBar"
android:label="@string/title_activity_bubble"
android:allowEmbedded="true"
android:resizeableActivity="true"
/>
Uygulamanızda aynı türde birden fazla baloncuk gösteriliyorsa (ör. birden fazla sohbet mesajı)
farklı kişilerle sohbet ediyorsanız, etkinlik başlatılabilmelidir.
sağlayabilir. Android 10 ve önceki sürümleri çalıştıran cihazlarda
açıkça belirtmediğiniz sürece bildirimler baloncuk olarak gösterilmez
documentLaunchMode
-
"always"
. Android 11'den itibaren, uygulamanızın
sistem tüm ileti dizilerini otomatik olarak ayarladığından bu değeri
documentLaunchMode
- "always"
.
Baloncuk göndermek için aşağıdaki adımları izleyin:
- Bildirim oluşturun gerekir.
BubbleMetadata.Builder(PendingIntent, Icon)
numaralı telefonu arayın veyaBubbleMetadata.Builder(String)
kullanarakBubbleMetadata
nesne oluşturun.- Tekliflerinizi otomatikleştirmek ve optimize etmek için
setBubbleMetadata()
seçeneğini tıklayın. - Android 11 veya sonraki bir sürümü hedefliyorsanız baloncuğun Meta veri veya bildirim bir paylaşım kısayoluna referans veriyor.
Bu adımlar aşağıdaki örnekte gösterilmektedir:
Kotlin
// Create a bubble intent. val target = Intent(context, BubbleActivity::class.java) val bubbleIntent = PendingIntent.getActivity(context, 0, target, 0 /* flags */) val category = "com.example.category.IMG_SHARE_TARGET" val chatPartner = Person.Builder() .setName("Chat partner") .setImportant(true) .build() // Create a sharing shortcut. val shortcutId = generateShortcutId() val shortcut = ShortcutInfo.Builder(mContext, shortcutId) .setCategories(setOf(category)) .setIntent(Intent(Intent.ACTION_DEFAULT)) .setLongLived(true) .setShortLabel(chatPartner.name) .build() // Create a bubble metadata. val bubbleData = Notification.BubbleMetadata.Builder(bubbleIntent, Icon.createWithResource(context, R.drawable.icon)) .setDesiredHeight(600) .build() // Create a notification, referencing the sharing shortcut. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setBubbleMetadata(bubbleData) .setShortcutId(shortcutId) .addPerson(chatPartner)
Java
// Create a bubble intent. Intent target = new Intent(mContext, BubbleActivity.class); PendingIntent bubbleIntent = PendingIntent.getActivity(mContext, 0, target, 0 /* flags */); private val CATEGORY_TEXT_SHARE_TARGET = "com.example.category.IMG_SHARE_TARGET" Person chatPartner = new Person.Builder() .setName("Chat partner") .setImportant(true) .build(); // Create a sharing shortcut. private String shortcutId = generateShortcutId(); ShortcutInfo shortcut = new ShortcutInfo.Builder(mContext, shortcutId) .setCategories(Collections.singleton(CATEGORY_TEXT_SHARE_TARGET)) .setIntent(Intent(Intent.ACTION_DEFAULT)) .setLongLived(true) .setShortLabel(chatPartner.getName()) .build(); // Create a bubble metadata. Notification.BubbleMetadata bubbleData = new Notification.BubbleMetadata.Builder(bubbleIntent, Icon.createWithResource(context, R.drawable.icon)) .setDesiredHeight(600) .build(); // Create a notification, referencing the sharing shortcut. Notification.Builder builder = new Notification.Builder(mContext, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setBubbleMetadata(bubbleData) .setShortcutId(shortcutId) .addPerson(chatPartner);
Bir baloncuk gönderildiğinde uygulamanız ön plandaysa önem düzeyi yoksayılır Kullanıcı baloncukları veya bildirimleri engellemediği sürece baloncuğunuz her zaman gösterilir. nasıl sağlayabileceğini de öğreneceksiniz.
Genişletilmiş baloncuk oluşturma
Balonunuzu, otomatik olarak genişletilmiş durumda gösterecek şekilde yapılandırabilirsiniz. Biz bu özelliği yalnızca kullanıcının yalnızca yeni bir sohbet başlatmak için düğmeye dokunma gibi bir baloncuk belirir. Böyle durumlarda bir baloncuk olduğunda gönderilen ilk bildirimi gizlemek de oluşturuldu.
Bu davranışları etkinleştiren işaretleri ayarlamak için kullanabileceğiniz yöntemler vardır:
setAutoExpandBubble()
ve
setSuppressNotification()
.
Aşağıdaki örnekte, otomatik olarak ekran gösterecek bir balonun nasıl yapılandırılacağı gösterilmektedir genişletilmiş durumda:
Kotlin
val bubbleMetadata = Notification.BubbleMetadata.Builder() .setDesiredHeight(600) .setIntent(bubbleIntent) .setAutoExpandBubble(true) .setSuppressNotification(true) .build()
Java
Notification.BubbleMetadata bubbleData = new Notification.BubbleMetadata.Builder() .setDesiredHeight(600) .setIntent(bubbleIntent) .setAutoExpandBubble(true) .setSuppressNotification(true) .build();
Balon içeriği yaşam döngüsü
Bir baloncuk genişletildiğinde, içerik etkinliği normal süreçten geçer. Bu durum, ön plan süreci haline getirilmesini sağlayabilirsiniz.
Balon daraltıldığında veya kapatıldığında etkinlik kaldırılır. Bu, uygulamada çalışan başka ön plan bileşenleri var.
Baloncuklar göründüğünde
Kullanıcının kesintilerini azaltmak için baloncuklar yalnızca belirli koşullar.
Android 11 veya sonraki bir sürümü hedefleyen uygulamalarda bildirim gösterilmez. konuşmaya uygun değilse bir baloncuk olarak görünür hakkında daha fazla bilgi edinin. Bir uygulama Android 10 veya önceki sürümlerde bildirim yalnızca şu durumlarda baloncuk olarak görünür: aşağıdaki koşullardan biri veya daha fazlası karşılanır:
- Bildirimde
MessagingStyle
ve sahipPerson
eklendi. - Bildirim,
Service.startForeground
varcategory
/CATEGORY_CALL
vePerson
eklenmiş. - Bildirim gönderildiğinde uygulama ön plandadır.
Bu koşullardan hiçbiri karşılanmazsa yerine bildirim gösterilir yer alır.
Baloncuklardan etkinlik başlatma
Bir baloncuk yeni bir etkinlik başlattığında, yeni etkinlik de ya içinde veya yeni bir görevde başlatan baloncuğu daraltarak kendisini tam ekran tutmasını sağlıyor.
Balonla aynı görevde yeni bir etkinlik başlatmak için:
1. Amaçları başlatırken etkinlik bağlamını kullanın.
activity.startActivity(intent)
ve
1. Niyette FLAG_ACTIVITY_NEW_TASK
işaretini ayarlamayın.
Aksi takdirde, yeni etkinlik yeni bir görevde başlatılır ve balon, daraltıldı.
Balonun belirli bir görüşmeyi temsil ettiğini unutmayın, bu nedenle etkinlikler söz konusu görüşmeyle ilgili olması gerekir. Ayrıca, balon içinde bir etkinlik başlatmak balonun görev yığınını artırıyor ve özellikle de uygulama geliştirmeleri yardımcı olabilir.
En iyi uygulamalar
- Bildirim baloncuğu olarak yalnızca önemli durumlarda (ör. sürekli bir iletişim parçası olarak veya kullanıcı açıkça içerik. Baloncuklar, ekran alanını kullanır ve diğer uygulama içeriklerini kapatır.
- Balon bildiriminizin normal bir bildirim olarak da çalıştığından emin olun. Zaman kullanıcı balonu devre dışı bırakırsa normal olarak bir baloncuk bildirimi bildirimi görürsünüz.
- Geçersiz kılma işlemi sırasında
super.onBackPressed
öğesini ara BalondaonBackPressed
etkinliği'ne dokunun. Aksi takdirde, baloncuğunuz doğru şekilde çalışmayabilir.
Daraltılmış bir baloncuk güncellenmiş bir mesaj aldığında balonda bir rozet gösterilir simgesini tıklayın. Kullanıcı mesajı aşağıdaki adımları uygulayın:
- Güncelle
BubbleMetadata
simgesini tıklayın. Telefonla aramaBubbleMetadata.Builder.setSuppressNotification()
. Bu işlem, kullanıcının iletiyle etkileşimde bulunduğunu belirtmek için rozet simgesini kaldırır. - Ayarla
Notification.Builder.setOnlyAlertOnce()
BubbleMetadata
öğesine eşlik eden sesi veya titreşimi engellemek içintrue
cihazına güncelleyin.
Örnek uygulama
İlgili içeriği oluşturmak için kullanılan Kişiler örnek uygulama, baloncuk kullanan bir sohbet uygulamasıdır. Bu demoda, bu uygulama chatbot kullanıyor. Gerçek dünyadaki uygulamalarda, Google'dan gelen mesajlar için baloncukları birlikte çalışır.