התראה בסיסית כוללת בדרך כלל כותרת, שורת טקסט ופעולות המשתמש יכול לפעול בתגובה. כדי לספק יותר מידע אפשר ליצור התראות שניתנות להרחבה באמצעות החלת אחת מתוך כמה תבניות התראה, שמתוארים במסמך הזה.
כדי להתחיל, צור התראה עם כל התוכן הבסיסי כפי שמתואר ב-
יוצרים התראה. לאחר מכן:
לשלוח קריאה
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();
להוסיף גוש טקסט גדול
מימוש
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();
יצירת התראה בסגנון תיבת הדואר הנכנס
מימוש
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();
התוצאה נראית כך:
איך מציגים את השיחה בהתראות
מימוש
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();
כשמשתמשים בפונקציה NotificationCompat.MessagingStyle
, כל הערכים שניתנו ל-
setContentTitle()
וגם
setContentText()
המערכת מתעלמת ממנו.
אפשר להתקשר
setConversationTitle()
כדי להוסיף כותרת שתופיע מעל השיחה. יכול להיות שזאת
משתמש אחר של הקבוצה, או, אם אין לו שם ספציפי, רשימה
רשימת המשתתפים בשיחה. לא להגדיר שם לשיחה
בצ'אטים אישיים, כי המערכת משתמשת בקיומו של השדה הזה כרמז לכך.
ששיחה היא קבוצה.
הסגנון הזה רלוונטי רק למכשירים עם Android בגרסה 7.0 (API ברמה 24) ואילך.
כשמשתמשים בספריית התאימות
(NotificationCompat
),
כמו שראינו קודם, התראות עם MessagingStyle
מושבתות
באופן אוטומטי לסגנון התראה מורחב שנתמך.
כשיוצרים התראה כמו זו לשיחת צ'אט, צריך להוסיף פעולה בתגובה.
יצירת התראה באמצעות בקרי מדיה
מימוש
MediaStyleNotificationHelper.MediaStyle
כדי להציג פקדי הפעלת מדיה ולעקוב אחר פרטי המידע.
ציון השיוך המשויך
MediaSession
ב-
constructor. כך מערכת 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();
מקורות מידע נוספים
בהפניות הבאות אפשר למצוא מידע נוסף על MediaStyle
ועל
התראות ניתנות להרחבה.