إنشاء إشعار بنمط المكالمات لتطبيقات الاتصال

في Android 12.0 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يوفر النظام CallStyle للتمييز بين إشعارات المكالمات والأنواع الأخرى من الإشعارات استخدم هذا القالب لإنشاء رسائل إشعارات المكالمات الجارية. يتيح النموذج إرسال الإشعارات كبيرة الحجم. التي تتضمن معلومات المتصل والإجراءات المطلوبة مثل الرد أو ورفض المكالمات.

ولأنّ المكالمات الواردة والجارية هي أحداث ذات أولوية عالية، لا يتم إرسال هذه الإشعارات أولوية قصوى في مركز الإشعارات يتيح هذا الترتيب أيضًا إعادة توجيه هذه المكالمات ذات الأولوية إلى أجهزة أخرى.

يتضمّن نموذج الإشعارات CallStyle الإجراءات المطلوبة التالية:

  • يمكنك الرد أو رفض للمكالمات الواردة.
  • إنهاء المكالمة للمكالمات الجارية.
  • يمكنك الردّ أو إنهاء المكالمة لفحص المكالمات.

تظهر الإجراءات في هذا النمط كأزرار، حيث يضيف النظام تلقائيًا للأيقونات والنصوص المناسبة. لا يتوفّر التصنيف اليدوي للأزرار. لمزيد من المعلومات حول مبادئ تصميم الإشعارات، راجع الإشعارات:

إشعارات نمط المكالمات مع أزرار مصنَّفة
الشكل 1. نموذج CallStyle للمكالمات الواردة والجارية

يتم تمرير الإجراءات المطلوبة كأهداف، مثل hangupIntent answerIntent في الأقسام التالية. كلٌّ من هذه يعد بمثابة إشارة إلى الذي يحتفظ به النظام. الرمز المميز عبارة عن كائن خفيف يمكن تمريرها بين التطبيقات والعمليات المختلفة. النظام هو مسئولاً عن إدارة فترة بقاء الرمز المميز والتأكد من يمكن استخدام PendingIntent حتى إذا لم يعُد التطبيق الذي أنشأه قد انتهى الجري. عندما تمنح تطبيقًا آخر PendingIntent، يعني ذلك أنّك تمنح إذن بتنفيذ العملية المحددة، مثل الرفض أو الإجابة. يتم منح هذا الإذن حتى إذا كان التطبيق الذي أنشأ intent. ليست قيد التشغيل حاليًا. لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المرجعية. لحساب PendingIntent.

يمكنك ضبط إشعارات المكالمات بدءًا من Android 14 (المستوى 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" على الإصدار 30 أو الإصدارات الأقدم من واجهة برمجة التطبيقات خدمة تعمل في المقدّمة لمنحهم الترتيب الأعلى الذي يتم منحهم به في واجهة برمجة التطبيقات من المستوى 31 أو أعلى. بالإضافة إلى ذلك، هناك CallStyle إشعار على الإصدار 30 من واجهة برمجة التطبيقات أو الأقدم منه في ترتيب مشابه عن طريق وضع علامة على الإشعار كـ باستخدام طريقة setColorized().

استخدام واجهات برمجة تطبيقات Telecom مع إشعارات CallStyle لمزيد من المعلومات، يُرجى مراجعة نظرة عامة على إطار عمل الاتصالات السلكية.