استخدام فقاعات المحادثات للسماح للمستخدمين بالمشاركة في المحادثات

تسهِّل فقاعات المحادثات على المستخدمين مشاهدة المحادثات والمشاركة فيها.

الشكل 1. فقاعة محادثة

والفقاعات التفسيرية مدمجة في نظام الإشعارات. وهي تطفو فوق تطبيق آخر المحتوى ومتابعة المستخدم أينما ذهب. يمكن للمستخدمين توسيع الفقاعات التفسيرية لإظهار والتفاعل مع محتوى التطبيق، ويمكن تصغيرها عندما لا تكون باستخدامها.

عند قفل الجهاز أو تفعيل وضع "العرض الدائم"، تظهر فقاعات المحادثات الإشعارات عادة.

فقاعات المحادثات هي ميزة للإيقاف. عندما يعرض أحد التطبيقات فقاعة المحادثة الأولى، يقدّم مربّع حوار الأذونات خيارَين:

  • حظر كل فقاعات المحادثات من تطبيقك لم يتم حظر الإشعارات، ولكنّها لا تظهر أبدًا في شكل فقاعات.
  • السماح بجميع فقاعات المحادثات من تطبيقك جميع الإشعارات المُرسَلة باستخدام تظهر BubbleMetaData كفقاعات تفسيرية.

واجهة برمجة تطبيقات الفقاعة

يتم إنشاء الفقاعات التفسيرية باستخدام واجهة برمجة التطبيقات للإشعارات، لذا يُرجى إرسال الإشعار طبيعية. إذا كنت تريد أن يظهر الإشعار في شكل فقاعة، أرفِق بيانات إضافية. إليه.

يتم إنشاء العرض الموسَّع للفقاعة التفسيرية من نشاط تختاره. يجب ضبط النشاط ليتم عرضه بشكل صحيح كفقاعة تفسيرية. يجب أن يكون النشاط resizeable مضمّن. وإذا كانت تفتقر أيًا من هذه المتطلبات، يتم عرضه كإشعار بدلاً من ذلك.

توضح التعليمة البرمجية التالية كيفية تنفيذ فقاعة:

<activity
  android:name=".bubbles.BubbleActivity"
  android:theme="@style/AppTheme.NoActionBar"
  android:label="@string/title_activity_bubble"
  android:allowEmbedded="true"
  android:resizeableActivity="true"
/>

إذا كان تطبيقك يعرض فقاعات تفسيرية متعددة من النوع نفسه، مثل محادثات متعددة المحادثات مع جهات اتصال مختلفة، يجب أن يتمكن النشاط من بدء مثيلات متعددة. على الأجهزة التي تعمل بنظام التشغيل Android 10 والإصدارات الأقدم، لا يتم عرض الإشعارات كفقاعات تفسيرية ما لم تضبطها بشكل صريح documentLaunchMode إلى "always" بدءًا من نظام التشغيل Android 11، ليس عليك اتخاذ لضبط هذه القيمة، حيث يضبط النظام جميع المحادثات تلقائيًا documentLaunchMode إلى "always"

لإرسال فقاعة، اتبع الخطوات التالية:

  1. إنشاء إشعار أثناء عادة.
  2. الاتصال بالرقم BubbleMetadata.Builder(PendingIntent, Icon) أو BubbleMetadata.Builder(String) لإنشاء كائن BubbleMetadata.
  3. استخدام setBubbleMetadata() لإضافة البيانات الوصفية إلى الإشعار.
  4. إذا كنت تستهدف الإصدار 11 من نظام التشغيل Android أو إصدارًا أحدث، تأكَّد من ظهور الفقاعة. البيانات الوصفية أو الإشعار إلى اختصار مشاركة.

يتم عرض هذه الخطوات في المثال التالي:

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);

إذا كان تطبيقك في المقدّمة عند إرسال فقاعة تفسيرية، يتم تجاهل الأهمية. وتظهر الفقاعة التفسيرية دائمًا، ما لم يحظر المستخدم الفقاعات أو الإشعارات من تطبيقك.

إنشاء فقاعة تفسيرية موسّعة

يمكنك ضبط فقاعة المحادثة لعرضها تلقائيًا في الحالة الموسّعة. أر ننصح باستخدام هذه الميزة فقط إذا اتّخذ المستخدم إجراءً النتائج في فقاعة، مثل النقر على زر لبدء محادثة جديدة. وفي هذه الحالة، يكون من المنطقي أيضًا حجب الإشعار الأولي الذي يتم إرساله عندما إنشاء.

هناك طرق يمكنك استخدامها لضبط علامات تتيح تفعيل هذه السلوكيات: setAutoExpandBubble() أو setSuppressNotification()

يوضّح المثال التالي كيفية ضبط فقاعة تفسيرية لتقديم العرض تلقائيًا في حالة موسّعة:

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();

مراحل محتوى الفقاعات التفسيرية

فعندما يتم توسيع فقاعة تفسيرية، يمر نشاط المحتوى خلال العملية المعتادة دورة حياة المنتج، ما يؤدي إلى أن يصبح التطبيق عملية تعمل في المقدّمة، إذا لم يكن قد حدث بالفعل.

وعند تصغير الفقاعة التفسيرية أو إغلاقها، يتم إتلاف النشاط. هذا قد تخزين العملية مؤقتًا ثم قتلها لاحقًا، اعتمادًا على ما إذا كان يتضمّن التطبيق مكونات أخرى قيد التشغيل في المقدّمة.

وقت ظهور الفقاعات التفسيرية

لتقليل الانقطاعات في تجربة المستخدم، لا تظهر الفقاعات التفسيرية إلا ضمن نطاقات محددة. الظروف.

إذا كان التطبيق يستهدف الإصدار 11 من نظام التشغيل Android أو إصدارًا أحدث، فلن يتم إرسال الإشعار تظهر في شكل فقاعة إلا إذا استوفت المحادثة متطلبات المشروع. إذا استهدف أحد التطبيقات الإصدار 10 من نظام التشغيل Android أو الإصدارات الأقدم، لا يظهر الإشعار في شكل فقاعة إلا إذا استيفاء شرط واحد أو أكثر من الشروط التالية:

وفي حال عدم استيفاء أي من هذه الشروط، سيتم عرض الإشعار بدلاً من فقاعة.

إطلاق الأنشطة من الفقاعات

عندما تبدأ فقاعة تفسيرية نشاطًا جديدًا، سيتم إطلاق النشاط الجديد. ضمن المهمة نفسها وفي نفس النافذة التي تظهر فيها فقاعات، أو في مهمة جديدة في وضع ملء الشاشة، لتصغير الفقاعة التفسيرية التي أطلقتها.

لبدء نشاط جديد في نفس المهمة مثل الفقاعة: 1- استخدم سياق النشاط عند إطلاق الأهداف activity.startActivity(intent)، 1- لا تضع علامة FLAG_ACTIVITY_NEW_TASK على الغرض.

وبخلاف ذلك، يبدأ النشاط الجديد في مهمة جديدة وتكون الفقاعة التفسيرية تمّ التصغير.

ضع في اعتبارك أن الفقاعة التفسيرية تمثل محادثة محددة، لذا فإن الأنشطة داخل الفقاعة التفسيرية، يجب أن تكون مرتبطة بتلك المحادثة. بالإضافة إلى ذلك، يؤدي إطلاق نشاط داخل الفقاعة إلى زيادة حزمة المهام في الفقاعة ويمكن أن تؤدي إلى تعقيد تجربة المستخدم، خاصة حول التنقل.

أفضل الممارسات

  • إرسال إشعار على شكل فقاعة فقط إذا كان ذلك مهمًا، على سبيل المثال عندما يكون جزء من اتصال مستمر أو إذا طلب المستخدم صراحةً فقاعة المحتوى. تستخدم الفقاعات التفسيرية مساحة الشاشة وتغطي محتوى التطبيق الآخر.
  • تأكَّد من أنّ إشعار الفقاعة التفسيرية يعمل أيضًا كإشعار عادي. فعندما إيقاف المستخدِم للفقاعة، وسيظهر إشعار فقاعة تفسيرية كالمعتاد .
  • طلب super.onBackPressed عند الإلغاء onBackPressed في الفقاعة الأخرى. وإلا فقد لا تعمل الفقاعة التفسيرية بشكل صحيح.

عندما تتلقّى فقاعة تفسيرية مصغّرة رسالة معدَّلة، تعرض الفقاعة التفسيرية شارة. للإشارة إلى الرسالة غير المقروءة. عندما يفتح المستخدِم الرسالة في تطبيق مرتبط، اتبع الخطوات التالية:

نموذج تطبيق

تشير رسالة الأشكال البيانية الأشخاص نموذج التطبيق هو تطبيق محادثة يستخدم فقاعات المحادثات. لأغراض التوضيح، هذا التطبيق يستخدم روبوتات الدردشة. في التطبيقات العملية، يمكنك استخدام الفقاعات التفسيرية للرسائل البشر.