على نظام التشغيل Android 12.0 (مستوى واجهة برمجة التطبيقات 31) والإصدارات الأحدث، يوفّر النظام نموذج الإشعار CallStyle لتمييز الإشعارات بتلقّي مكالمة عن الأنواع الأخرى من الإشعارات. استخدِم هذا النموذج لإنشاء إشعارات
بالمكالمات الواردة أو الجارية. يتيح النموذج الإشعارات الكبيرة الحجم التي تتضمّن معلومات المتصل والإجراءات المطلوبة، مثل الردّ على المكالمات أو رفضها.
بما أنّ المكالمات الواردة والجارية هي أحداث ذات أولوية عالية، فإنّ هذه الإشعارات تحصل على الأولوية القصوى في مركز الإشعارات. يتيح هذا الترتيب أيضًا للنظام إعادة توجيه هذه المكالمات ذات الأولوية إلى أجهزة أخرى.
يتضمّن نموذج الإشعار "CallStyle" الإجراءات المطلوبة التالية:
- الردّ أو الرفض للمكالمات الواردة
- إنهاء المكالمات الجارية
- الردّ أو إنهاء المكالمة لفحص المكالمات
تظهر الإجراءات بهذا النمط كأزرار، ويضيف النظام تلقائيًا الرموز والنصوص المناسبة. لا يمكن تصنيف الأزرار يدويًا. لمزيد من المعلومات حول مبادئ تصميم الإشعارات، يُرجى الاطّلاع على الإشعارات.
يتم تمرير الإجراءات المطلوبة كأهداف، مثل hangupIntent وanswerIntent في الأقسام التالية. كلّ من هذه المراجع يشير إلى رمز مميّز
يحتفظ به النظام. الرمز المميّز هو عنصر خفيف الوزن يمكن تمريره بين التطبيقات والعمليات المختلفة. النظام مسؤول عن إدارة مدة صلاحية الرمز المميّز وضمان إمكانية استخدام PendingIntent حتى إذا لم يعُد التطبيق الذي أنشأه قيد التشغيل. عندما تمنح تطبيقًا آخر PendingIntent، فإنك تمنحه
الإذن لتنفيذ العملية المحددة، مثل الرفض أو الرد.
يتم منح هذا الإذن حتى إذا كان التطبيق الذي أنشأ الغرض لا
يعمل. لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المرجعية حول
PendingIntent.
بدءًا من الإصدار 14 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 34)، يمكنك ضبط إشعارات بتلقي مكالمة
بحيث لا يمكن إغلاقها. لإجراء ذلك، استخدِم إشعارات CallStyle مع
Notification.FLAG_ONGOING_EVENT من خلال
Notification.Builder#setOngoing(true).
في ما يلي أمثلة على استخدام طرق مختلفة مع إشعار CallStyle.
// Create a new call, setting incoming caller. val incomingCaller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
مكالمة واردة
استخدِم طريقة forIncomingCall() لإنشاء إشعار بنمط المكالمات لمكالمة واردة.
// For demonstrative purposes only, should use a well-defined Intents. val contentIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val declineIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val hangupIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val answerIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) // Create a call style notification for an incoming call. val builderForIncomingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forIncomingCall(incomingCaller, declineIntent, answerIntent)) .addPerson(incomingCaller)
مكالمة جارية
استخدِم طريقة forOngoingCall() لإنشاء إشعار بنمط المكالمات لمكالمة جارية.
// Create a call style notification for an ongoing call. val builderForOngoingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forOngoingCall(callerAtOtherEnd, hangupIntent)) .addPerson(caller)
فحص مكالمة
استخدِم طريقة forScreeningCall() لإنشاء إشعار بنمط المكالمة
لفحص المكالمة.
// Create a call style notification for screening a call. val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(caller)
توفير التوافق مع المزيد من إصدارات Android
اربط إشعارات CallStyle في الإصدارات 30 أو الإصدارات الأقدم من واجهة برمجة التطبيقات بخدمة تعمل في المقدّمة من أجل منحها الترتيب العالي الذي تحصل عليه في مستوى واجهة برمجة التطبيقات 31 أو المستويات الأحدث. بالإضافة إلى ذلك، يمكن للإشعارات من النوع CallStyle في الإصدار 30 من واجهة برمجة التطبيقات أو الإصدارات الأقدم تحقيق ترتيب مماثل من خلال وضع علامة على الإشعار بأنّه ملوّن باستخدام الطريقة setColorized().
استخدام واجهات برمجة تطبيقات Telecom مع إشعارات CallStyle لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على إطار عمل الاتصالات.