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