يتضمن الإشعار الأساسي عادةً عنوانًا وسطرًا من النص والإجراءات التي يمكن للمستخدم تنفيذها ردًا على ذلك. لتقديم المزيد من المعلومات، يمكنك إنشاء إشعارات كبيرة قابلة للتوسيع من خلال تطبيق أحد نماذج الإشعارات المتعددة كما هو موضّح في هذا المستند.
للبدء، أنشئ إشعارًا يتضمّن كل المحتوى الأساسي كما هو موضّح في مقالة إنشاء إشعار. بعد ذلك، يمكنك استدعاء setStyle() باستخدام عنصر نمط وتقديم معلومات تتوافق مع كل نموذج، كما هو موضّح في الأمثلة التالية.
إضافة صورة كبيرة
لإضافة صورة في الإشعار، عليك تمرير مثيل من
NotificationCompat.BigPictureStyle إلى setStyle().
var notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(com.example.compose.snippets.R.drawable.ic_logo) .setContentTitle("Title") .setContentText("Content text") .setStyle( NotificationCompat.BigPictureStyle() .bigPicture(bitmapImage) ) .build()
لإظهار الصورة كصورة مصغّرة فقط عندما يكون الإشعار
مصغّرًا، كما هو موضّح في الشكل التالي، يمكنك استدعاء
setLargeIcon()
وتمرير الصورة إليه. بعد ذلك، يمكنك استدعاء
BigPictureStyle.bigLargeIcon()
وتمرير null إليه حتى يختفي الرمز الكبير عند توسيع
الإشعار:
notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("Title") .setContentText("Content text") .setLargeIcon(Icon.createWithResource(context, R.drawable.dog)) .setStyle( NotificationCompat.BigPictureStyle() .bigPicture(bitmapImage) .bigLargeIcon(null as Bitmap?) ) .build()
NotificationCompat.BigPictureStyle
إضافة مجموعة نصية كبيرة
طبِّق NotificationCompat.BigTextStyle لعرض النص في منطقة المحتوى الموسَّعة للإشعار:
notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("Sender name") .setContentText("Email subject") .setLargeIcon(Icon.createWithResource(context, R.drawable.dog)) .setStyle( NotificationCompat.BigTextStyle() .bigText(someVeryLongMessage) ) .build()
NotificationCompat.BigTextStyle
إنشاء إشعار على نمط البريد الوارد
يمكنك تطبيق NotificationCompat.InboxStyle على إشعار إذا أردت إضافة
أسطر متعددة من الملخّصات القصيرة، مثل مقتطفات من الرسائل الإلكترونية الواردة. يتيح لك ذلك إضافة أجزاء متعددة من نص المحتوى يتم اقتطاع كل منها إلى سطر واحد، بدلاً من سطر النص المتواصل الذي يوفّره NotificationCompat.BigTextStyle.
لإضافة سطر جديد، يمكنك استدعاء addLine() حتى ست مرات، كما هو موضح في المثال التالي. إذا أضفت أكثر من ستة أسطر، فلن يظهر سوى أول ستة أسطر.
notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.mail) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(bitmapImage) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build()
تظهر النتيجة على النحو التالي:
عرض محادثة في إشعار
يمكنك تطبيق NotificationCompat.MessagingStyle لعرض الرسائل المتسلسلة
بين أي عدد من الأشخاص. هذا الخيار مثالي لتطبيقات المراسلة، لأنّه يوفّر تنسيقًا متّسقًا لكل رسالة من خلال معالجة اسم المُرسِل ونص الرسالة بشكل منفصل، ويمكن أن تتألف كل رسالة من أسطر متعدّدة.
لإضافة رسالة جديدة، يمكنك استدعاء addMessage()، مع تمرير نص الرسالة ووقت الاستلام واسم المُرسِل. يمكنك أيضًا تمرير هذه المعلومات كعنصر NotificationCompat.MessagingStyle.Message، كما هو موضّح في المثال التالي:
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()
NotificationCompat.MessagingStyle
عند استخدام NotificationCompat.MessagingStyle، يتم تجاهل أي قيم يتم منحها لـ setContentTitle() وsetContentText().
يمكنك استدعاء setConversationTitle() لإضافة عنوان يظهر أعلى
المحادثة. قد يكون هذا الاسم الذي أنشأه المستخدم للمجموعة أو، إذا لم يكن لها اسم محدّد، قائمة بالمشاركين في المحادثة.
لا تضبط عنوان محادثة للمحادثات الفردية، لأنّ النظام يستخدم وجود هذا الحقل كتلميح إلى أنّ المحادثة هي محادثة جماعية.
لا ينطبق هذا النمط إلا على الأجهزة التي تعمل بنظام التشغيل Android 7.0 (مستوى واجهة برمجة التطبيقات 24) والإصدارات الأحدث.
عند استخدام مكتبة التوافق (NotificationCompat)، كما
هو موضّح سابقًا، تعود الإشعارات التي تتضمّن MessagingStyle تلقائيًا
إلى نمط إشعار موسّع متوافق.
عند إنشاء إشعار مثل هذا لمحادثة، أضِف إجراء ردّ مباشر.
إنشاء إشعار يتضمّن أدوات التحكّم في الوسائط
طبِّق MediaStyleNotificationHelper.MediaStyle لعرض عناصر التحكّم في تشغيل الوسائط ومعلومات الأغنية.
حدِّد MediaSession المرتبط في الدالة الإنشائية. يتيح ذلك لنظام Android عرض المعلومات الصحيحة حول الوسائط.
يمكنك استدعاء addAction() خمس مرات كحد أقصى لعرض ما يصل إلى خمسة أزرار رموز.
يُرجى الاتصال بالرقم setLargeIcon() لضبط صورة الألبوم.
على عكس أنماط الإشعارات الأخرى، يتيح لك MediaStyle أيضًا تعديل
عرض المحتوى المصغّر من خلال تحديد ثلاثة أزرار إجراءات تظهر أيضًا
في العرض المصغّر. لإجراء ذلك، قدِّم فهارس أزرار الإجراءات إلى
setShowActionsInCompactView().
يوضّح المثال التالي كيفية إنشاء إشعار يتضمّن أدوات التحكّم في الوسائط:
notification = NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(com.example.compose.snippets.R.drawable.play) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.previous, "Previous", null /* Add valid intent */) // #0 .addAction(R.drawable.pause, "Pause", null /* Add valid intent */) // #1 .addAction(R.drawable.next, "Next", null /* Add valid intent */) // #2 // Apply the media style template. .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button */)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(bitmapImage) .build()
MediaStyleNotificationHelper.MediaStyle
مراجع إضافية
يمكنك الاطّلاع على المراجع التالية لمزيد من المعلومات حول MediaStyle والإشعارات القابلة للتوسيع.