في الإصدار Android 12.0 (المستوى 31 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يوفر النظام نموذج إشعار CallStyle
للتمييز بين إشعارات المكالمات والأنواع الأخرى من الإشعارات. استخدم هذا القالب لإنشاء إشعارات
المكالمات الواردة أو المستمرة. يدعم النموذج الإشعارات كبيرة الحجم
التي تتضمن معلومات المتصل والإجراءات المطلوبة مثل الرد على المكالمات أو رفضها.
نظرًا لأن المكالمات الواردة والجارية هي أحداث ذات أولوية عالية، تحظى هذه الإشعارات بالأولوية القصوى في مركز الإشعارات. يتيح هذا الترتيب أيضًا للنظام إعادة توجيه هذه المكالمات ذات الأولوية إلى أجهزة أخرى.
يتضمّن نموذج إشعارات CallStyle
الإجراءات التالية المطلوبة:
- الردّ أو الرفض للمكالمات الواردة
- قطع الاتصال للمكالمات الجارية.
- الردّ أو إنهاء المكالمة لفحص المكالمات
تظهر الإجراءات في هذا النمط كأزرار، ويضيف النظام تلقائيًا الأيقونات والنصوص المناسبة. لا يتم توفير التسمية اليدوية للأزرار. للمزيد من المعلومات حول مبادئ تصميم الإشعارات، يُرجى مراجعة الإشعارات.
يتم تمرير الإجراءات المطلوبة كأغراض، مثل hangupIntent
وanswerIntent
في الأقسام التالية. يعد كل منها إشارة إلى الرمز
المميّز الذي يحتفظ به النظام. الرمز المميز هو كائن خفيف يمكن
تمريره بين تطبيقات وعمليات مختلفة. ويكون النظام
هو المسؤول عن إدارة فترة صلاحية الرمز المميّز والتأكّد من
أنّ
PendingIntent
قابل للاستخدام حتى إذا لم يعُد التطبيق الذي أنشأته
قيد التشغيل. عندما تمنح تطبيقًا آخر PendingIntent
، يعني ذلك أنّك تمنحه الإذن لتنفيذ العملية المحدّدة، مثل الرفض أو الإجابة.
ويتم منح هذا الإذن حتى إذا لم يكن التطبيق الذي أنشأ الغرض
من التشغيل قيد التشغيل في الوقت الحالي. لمزيد من المعلومات، اطّلِع على المستندات
المراجعة حول PendingIntent
.
بدءًا من نظام التشغيل Android 14 (المستوى 34 لواجهة برمجة التطبيقات)، يمكنك ضبط إشعارات المكالمات
لعدم إغلاقها. لإجراء ذلك، استخدِم إشعارات "CallStyle
" من خلال عرض
Notification.FLAG_ONGOING_EVENT
حتى
Notification.Builder#setOngoing(true)
.
في ما يلي أمثلة على استخدام طُرق مختلفة من خلال الإشعار CallStlye
.
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
. لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على إطار عمل الاتصالات الإلكترونية.