يتضمّن الإشعار الأساسي عادةً عنوانًا وسطرًا من النص والإجراءات التي يمكن للمستخدم اتّخاذها ردًا على الإشعار. لتقديم المزيد من المعلومات، يمكنك إنشاء إشعارات كبيرة قابلة للتوسيع من خلال تطبيق أحد نماذج الإشعارات المتعددة كما هو موضح في هذا المستند.
للبدء، أنشئ إشعارًا يتضمّن كل المحتوى الأساسي كما هو موضّح في مقالة إنشاء إشعار. بعد ذلك، استدعِ الدالة 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() لإضافة عنوان يظهر فوق المحادثة. قد يكون هذا الاسم الذي أنشأه المستخدم للمجموعة أو قائمة بالمشاركين في المحادثة إذا لم يكن للمجموعة اسم محدّد.
لا تضبط عنوان محادثة للمحادثات بين شخصين، لأنّ النظام يستخدم توفّر هذا الحقل كإشارة إلى أنّ المحادثة هي محادثة جماعية.
لا ينطبق هذا النمط إلا على الأجهزة التي تعمل بالإصدار 7.0 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 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 والإشعارات القابلة للتوسيع.