יצירת התראה על סגנון שיחה לאפליקציות לשיחות

ב-Android 12.0 (ברמת API 31) ואילך, המערכת מספקת את תבנית ההתראה CallStyle כדי להבחין בין התראות על שיחות לבין סוגים אחרים של התראות. בעזרת התבנית הזו אפשר ליצור התראות על שיחות נכנסות או שיחות פעילות. התבנית תומכת בהתראות בפורמט גדול שכוללות את פרטי המתקשר ופעולות נדרשות כמו מענה לשיחות או דחיית שיחות.

שיחות נכנסות ושיחות פעילות הן אירועים בעדיפות גבוהה, ולכן ההתראות האלה מקבלות עדיפות גבוהה במרכז ההתראות. הדירוג הזה גם מאפשר למערכת להעביר את השיחות האלה שקיבלו עדיפות למכשירים אחרים.

תבנית ההודעה CallStyle כוללת את הפעולות הנדרשות הבאות:

  • מענה או דחייה לשיחות נכנסות.
  • לנתק את השיחה.
  • מענה או ניתוק לסינון שיחות.

פעולות בסגנון הזה מופיעות כלחצנים, והמערכת מוסיפה באופן אוטומטי סמלים וטקסט מתאימים. אין תמיכה בהוספת תוויות ידנית לכפתורים. מידע נוסף על עקרונות העיצוב של התראות זמין במאמר התראות.

התראות בסגנון של שיחה עם לחצנים מסומנים
איור 1. תבנית CallStyle לשיחות נכנסות ושיחות פעילות.

הפעולות הנדרשות מועברות ככוונות, כמו hangupIntent ו-answerIntent בסעיפים הבאים. כל אחד מהם הוא הפניה לטוקן שמנוהל על ידי המערכת. האסימון הוא אובייקט קל משקל שאפשר להעביר בין אפליקציות ותהליכים שונים. המערכת אחראית לניהול תוחלת החיים של האסימון ולוודא שאפשר להשתמש ב-PendingIntent גם אם האפליקציה שיצרה אותו לא פועלת יותר. כשנותנים לאפליקציה אחרת PendingIntent, מעניקים לה הרשאה לבצע את הפעולה שצוינה, כמו דחייה או מענה. ההרשאה הזו ניתנת גם אם האפליקציה שיצרה את הכוונה לא פועלת. מידע נוסף מופיע במאמרי העזרה של PendingIntent.

החל מ-Android 14 (רמת API‏ 34), אפשר להגדיר שהתראות על שיחות לא ייסגרו. כדי לעשות את זה, משתמשים בהתראות CallStyle עם Notification.FLAG_ONGOING_EVENT עד Notification.Builder#setOngoing(true).

בדוגמאות הבאות מוסבר איך להשתמש בשיטות שונות עם ההתראה CallStyle.

  // Create a new call, setting the user as the caller.
  val incomingCaller = Person.Builder()
      .setName("Jane Doe")
      .setImportant(true)
      .build()

שיחה נכנסת

משתמשים ב-method‏ forIncomingCall() כדי ליצור התראה בסגנון של שיחה לשיחה נכנסת.

  // Create a call style notification for an incoming call.
  val builder = Notification.Builder(context, CHANNEL_ID)
      .setContentIntent(contentIntent)
      .setSmallIcon(smallIcon)
      .setStyle(
           Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
      .addPerson(incomingCaller)

שיחה פעילה

משתמשים ב-method‏ forOngoingCall() כדי ליצור התראה בסגנון של שיחה רציפה.

  // Create a call style notification for an ongoing call.
  val builder = Notification.Builder(context, CHANNEL_ID)
      .setContentIntent(contentIntent)
      .setSmallIcon(smallIcon)
      .setStyle(
           Notification.CallStyle.forOngoingCall(caller, hangupIntent))
      .addPerson(second_caller)

סינון שיחות

משתמשים ב-forScreeningCall() method כדי ליצור התראה בסגנון שיחה לסינון שיחות.

  // Create a call style notification for screening a call.
  val builder = Notification.Builder(context, CHANNEL_ID)
      .setContentIntent(contentIntent)
      .setSmallIcon(smallIcon)
      .setStyle(
           Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
      .addPerson(second_caller)

תאימות לגרסאות נוספות של Android

משייכים התראות CallStyle בגרסאות API 30 ומטה לשירות שפועל בחזית כדי להקצות להן את הדירוג הגבוה שמוקצה להן ברמת API 31 ומעלה. בנוסף, CallStyle אפשר להשיג דירוג דומה להתראות בגרסה 30 של API או בגרסאות קודמות, על ידי סימון ההתראה כצבעונית באמצעות השיטה setColorized().

שימוש ב-Telecom APIs עם הודעות CallStyle. מידע נוסף זמין במאמר סקירה כללית של מסגרת הטלקום.