يتضمن الإشعار الأساسي عادةً عنوانًا وسطرًا من النص وإجراءات يمكن للمستخدم تنفيذها ردًا على ذلك. لتقديم المزيد من المعلومات، يمكنك إنشاء إشعارات كبيرة وقابلة للتوسيع من خلال تطبيق أحد نماذج الإشعارات العديدة كما هو موضّح في هذا المستند.
للبدء، أنشئ إشعارًا يتضمن كل المحتوى الأساسي كما هو موضّح في
إنشاء إشعار. بعد ذلك، استدعِ setStyle()
مع كائن نمط ووفّر معلومات تتوافق مع كل نموذج، كما هو موضّح في الأمثلة التالية.
إضافة صورة كبيرة
لإضافة صورة في الإشعار، عليك ضبط مثال NotificationCompat.BigPictureStyle
على setStyle()
.
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setStyle(NotificationCompat.BigPictureStyle() .bigPicture(myBitmap)) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(myBitmap)) .build();
لجعل الصورة تظهر كصورة مصغّرة فقط عند تصغير الإشعار، كما هو موضّح في الشكل التالي، اتصل بالرمز setLargeIcon()
واعرضه بالصورة. بعد ذلك، اطلب الرمز
BigPictureStyle.bigLargeIcon()
ومرِّره null
لكي يختفي الرمز الكبير عند توسيع
الإشعار:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setLargeIcon(myBitmap) .setStyle(NotificationCompat.BigPictureStyle() .bigPicture(myBitmap) .bigLargeIcon(null)) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setLargeIcon(myBitmap) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(myBitmap) .bigLargeIcon(null)) .build();
![صورة تعرض إشعارًا مصغّرًا وإشعارًا موسّعًا يحتوي على صورة زرقاء](https://developer.android.com/static/images/ui/notifications/template-image_2x.png?authuser=6&hl=ar)
NotificationCompat.BigPictureStyle
.
إضافة جزء كبير من النص
تطبيق
NotificationCompat.BigTextStyle
لعرض النص في منطقة المحتوى الموسّعة في الإشعار:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setStyle(NotificationCompat.BigTextStyle() .bigText(emailObject.getSubjectAndSnippet())) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setStyle(new NotificationCompat.BigTextStyle() .bigText(emailObject.getSubjectAndSnippet())) .build();
![صورة تعرض إشعارًا مصغّرًا وإشعارًا موسّعًا باستخدام BigTextStyle](https://developer.android.com/static/images/ui/notifications/template-large-text_2x.png?authuser=6&hl=ar)
NotificationCompat.BigTextStyle
.
إنشاء إشعار على طراز البريد الوارد
طبِّق NotificationCompat.InboxStyle
على إشعار إذا كنت تريد إضافة عدة أسطر ملخّصات قصيرة، مثل مقتطفات من الرسائل الإلكترونية الواردة. يتيح لك ذلك إضافة أجزاء متعدّدة من نص المحتوى
يتم اقتطاع كل منها إلى سطر واحد، بدلاً من سطر واحد متواصل من النص
المتوفّر من خلال NotificationCompat.BigTextStyle
.
لإضافة سطر جديد، قم باستدعاء addLine()
حتى ست مرات، كما هو موضح في المثال التالي. إذا أضفت أكثر من ستة أسطر،
فستظهر الستة الأولى فقط.
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_email_24) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo)) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build()
Java
Notification notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_email_24) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo)) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build();
تبدو النتيجة على النحو التالي:
![صورة تعرض إشعارًا بنمط البريد الوارد الموسَّع](https://developer.android.com/static/images/ui/notifications/expanded_inbox_style_2.png?authuser=6&hl=ar)
عرض محادثة في إشعار
تطبيق NotificationCompat.MessagingStyle
لعرض الرسائل المتسلسلة بين أي عدد من الأشخاص وهذا مثالي لمراسلة التطبيقات، لأنّه يوفّر تنسيقًا متناسقًا لكل رسالة من خلال التعامل مع اسم المُرسِل ونص الرسالة بشكل منفصل، ويمكن أن تكون كل رسالة طويلة عدة أسطر.
لإضافة رسالة جديدة، اتصل بـ
addMessage()
، واضبط نص الرسالة ووقت الاستلام واسم المرسل. يمكنك أيضًا تمرير هذه المعلومات ككائن NotificationCompat.MessagingStyle.Message
، كما هو موضّح في المثال التالي:
Kotlin
val message1 = NotificationCompat.MessagingStyle.Message( messages[0].getText(), messages[0].getTime(), messages[0].getSender()) val message2 = NotificationCompat.MessagingStyle.Message( messages[1].getText(), messages[1].getTime(), messages[1].getSender()) val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_message) .setStyle( NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)) .addMessage(message1) .addMessage(message2)) .build()
Java
NotificationCompat.MessagingStyle.Message message1 = new NotificationCompat.MessagingStyle.Message(messages[0].getText(), messages[0].getTime(), messages[0].getSender()); NotificationCompat.MessagingStyle.Message message2 = new NotificationCompat.MessagingStyle.Message(messages[1].getText(), messages[1].getTime(), messages[1].getSender()); Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_message) .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)) .addMessage(message1) .addMessage(message2)) .build();
![صورة تعرض إشعارًا في نمط المراسلة](https://developer.android.com/static/images/ui/notifications/template-messaging_2x.png?authuser=6&hl=ar)
NotificationCompat.MessagingStyle
.
عند استخدام NotificationCompat.MessagingStyle
، يتم تجاهل أي قيم تُمنح لـ
setContentTitle()
وsetContentText()
.
يمكنك استدعاء
setConversationTitle()
لإضافة عنوان يظهر أعلى المحادثة. قد يكون هذا هو الاسم الذي أنشأه المستخدم للمجموعة أو إذا لم يكن له اسم محدد، أو قائمة بالمشاركين في المحادثة. لا تضبط عنوان محادثة للمحادثات الفردية، لأن النظام يستخدم وجود هذا الحقل كتلميح إلى أنّ المحادثة عبارة عن مجموعة.
لا ينطبق هذا النمط إلا على الأجهزة التي تعمل بالإصدار 7.0 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات) والإصدارات الأحدث.
عند استخدام مكتبة التوافق
(NotificationCompat
)،
كما أوضحنا سابقًا، تعود الإشعارات التي تتضمّن MessagingStyle
تلقائيًا إلى نمط إشعارات موسّع متوافق.
عند إنشاء إشعار كهذا لمحادثة محادثة، يمكنك إضافة إجراء رد مباشر.
إنشاء إشعار باستخدام عناصر التحكّم في الوسائط
تطبيق
MediaStyleNotificationHelper.MediaStyle
لعرض عناصر التحكّم في تشغيل الوسائط ومعلومات التتبّع.
حدِّد السمة MediaSession
المرتبطة في الدالة الإنشائية. يسمح ذلك لنظام Android بعرض المعلومات الصحيحة حول الوسائط.
يمكنك الاتصال بـ addAction()
حتى خمس مرات لعرض ما يصل إلى خمسة أزرار للرموز. يمكنك الاتصال بـ setLargeIcon()
لضبط
صورة غلاف الألبوم.
على عكس أنماط الإشعارات الأخرى، يتيح لك MediaStyle
أيضًا تعديل طريقة عرض المحتوى المصغَّر من خلال تحديد ثلاثة أزرار إجراءات تظهر أيضًا في العرض المصغّر. لإجراء ذلك، عليك تقديم مؤشرات أزرار الإجراءات إلى setShowActionsInCompactView()
.
يوضّح المثال التالي كيفية إنشاء إشعار باستخدام عناصر التحكّم في الوسائط:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.ic_stat_player) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0 .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1 .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2 // Apply the media style template. .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button \*/)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(albumArtBitmap) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.ic_stat_player) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0 .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1 .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2 // Apply the media style template. .setStyle(new MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button */)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(albumArtBitmap) .build();
![صورة تعرض إشعارًا بنمط وسائط](https://developer.android.com/static/images/ui/notifications/template-media_2x.png?authuser=6&hl=ar)
MediaStyleNotificationHelper.MediaStyle
.
مراجع إضافية
راجِع المراجع التالية للحصول على مزيد من المعلومات حول MediaStyle
والإشعارات القابلة للتوسيع.