Kullanıcıların görüşmelere katılmasına izin vermek için baloncukları kullanın

Baloncuklar, kullanıcıların görüşmeleri görmesini ve görüşmelere katılmasını kolaylaştırır.

Şekil 1. Sohbet balonu.

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:

  1. Bildirim oluşturun gerekir.
  2. BubbleMetadata.Builder(PendingIntent, Icon) numaralı telefonu arayın veya BubbleMetadata.Builder(String) kullanarak BubbleMetadata nesne oluşturun.
  3. Tekliflerinizi otomatikleştirmek ve optimize etmek için setBubbleMetadata() seçeneğini tıklayın.
  4. 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:

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 Balonda onBackPressed 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:

Ö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.