يتضمن الإشعار الأساسي عادةً عنوانًا وسطرًا من النص وإجراءات يمكن للمستخدم تنفيذها في الاستجابة. لتقديم المزيد من المعلومات، يمكنك إنشاء نماذج إشعارات قابلة للتوسيع من خلال تطبيق أحد نماذج الإشعارات المتعددة الموضحة في هذا المستند.
للبدء، أنشِئ إشعارًا يتضمّن كل المحتوى الأساسي كما هو موضَّح في
أنشئ إشعارًا. بعد ذلك، يُرجى اتّباع الخطوات التالية:
مكالمة
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.google.cn/static/images/ui/notifications/template-image_2x.png?authuser=9&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.google.cn/static/images/ui/notifications/template-large-text_2x.png?authuser=9&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.google.cn/static/images/ui/notifications/expanded_inbox_style_2.png?authuser=9&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.google.cn/static/images/ui/notifications/template-messaging_2x.png?authuser=9&hl=ar)
NotificationCompat.MessagingStyle
عند استخدام NotificationCompat.MessagingStyle
، يتم تحديد أي قيم محددة
setContentTitle()
أو
setContentText()
وتجاهلها.
يمكنك الاتصال
setConversationTitle()
لإضافة عنوان يظهر أعلى المحادثة قد يكون هذا هو
اسم المجموعة الذي أنشأه المستخدم، أو إذا لم يكن لها اسم محدد، قائمة
المشاركين في المحادثة. عدم تعيين عنوان للمحادثة لـ
محادثات بين شخصين، نظرًا لأن النظام يستخدم وجود هذا الحقل كتلميح
أن المحادثة عبارة عن مجموعة.
لا ينطبق هذا النمط إلا على الأجهزة التي تعمل بنظام التشغيل Android 7.0 (المستوى 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.google.cn/static/images/ui/notifications/template-media_2x.png?authuser=9&hl=ar)
MediaStyleNotificationHelper.MediaStyle
مصادر إضافية
يمكنك الاطّلاع على المراجع التالية للحصول على مزيد من المعلومات حول MediaStyle
و
الإشعارات القابلة للتوسيع