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

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

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

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

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

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

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

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

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

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

Kotlin

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

Java

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

שיחה נכנסת

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

Kotlin

// 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)

Java

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

שיחה פעילה

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

Kotlin

// 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)

Java

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

סינון שיחה

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

Kotlin

// 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)

Java

// Create a call style notification for screening a call.
Notification.Builder builder = new 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().

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