قد يحتاج تطبيقك إلى جذب انتباه المستخدم بشكل عاجل في حالات معيّنة، مثل منبّه مستمر أو مكالمة واردة. في التطبيقات التي تستهدف الأجهزة التي تعمل بالإصدار 9 من نظام التشغيل Android (المستوى 28 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم، يمكنك التعامل مع ذلك من خلال تشغيل نشاط أثناء عمل التطبيق في الخلفية. يوضّح هذا المستند كيفية تحقيق هذا السلوك على الأجهزة التي تعمل بالإصدارات من Android 10 (المستوى 29 لواجهة برمجة التطبيقات) إلى Android 13 (المستوى 33 لواجهة برمجة التطبيقات).
إضافة إذن POST_NOTIFICATIONS
بدءًا من نظام التشغيل Android 13، أضِف السطر التالي إلى ملف
AndroidManifest.xml
:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
بعد الحصول على هذا المعرّف، يمكنك إنشاء قناة إشعارات.
إنشاء قناة إشعارات
أنشئ قناة إشعارات لعرض إشعاراتك بشكل صحيح والسماح للمستخدم بإدارة الإشعارات في إعدادات التطبيق. لمزيد من المعلومات حول قنوات الإشعارات، يُرجى الاطّلاع على إنشاء قنوات الإشعارات وإدارتها.
أنشئ قنوات الإشعارات في طريقة onCreate
الخاصة بفئة Application
:
Kotlin
class DACapp : Application() { override fun onCreate() { super.onCreate() val channel = NotificationChannel( CHANNEL_ID, "High priority notifications", NotificationManager.IMPORTANCE_HIGH ) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } }
عندما يشغّل المستخدم تطبيقك للمرة الأولى، سيظهر له ما يشبه الشكل 1 في شاشة نظام معلومات التطبيق الخاصة بتطبيقك:

إدارة أذونات الإشعارات
بدءًا من نظام التشغيل Android 13، يجب طلب أذونات الإشعارات قبل عرض الإشعارات للمستخدمين.
يبدو الحد الأدنى للتنفيذ على النحو التالي:
Kotlin
val permissionLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.RequestPermission(), onResult = { hasNotificationPermission = it } ) ... Button( onClick = { if (!hasNotificationPermission) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) } } }, ) { Text(text = "Request permission") }
إذا كان جهازك يعمل بالإصدار 13 من نظام التشغيل Android، سيؤدي النقر على الزر Request
permission
إلى ظهور مربّع الحوار الموضّح في الشكل 2:

إذا وافق المستخدم على طلب الإذن، سيظهر قسم معلومات التطبيق على النحو التالي كما هو موضّح في الشكل 3:

إنشاء إشعار ذي أولوية قصوى
عند إنشاء الإشعار، أدرِج عنوانًا وصفيًا ورسالة.
يحتوي المثال التالي على إشعار:
Kotlin
private fun showNotification() { val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_auto_awesome_24) .setContentTitle("HIGH PRIORITY") .setContentText("Check this dog puppy video NOW!") .setPriority(NotificationCompat.PRIORITY_HIGH) .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION) notificationManager.notify(666, notificationBuilder.build()) }
عرض الإشعار للمستخدم
يؤدي استدعاء الدالة showNotification()
إلى تشغيل الإشعار على النحو التالي:
Kotlin
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
يبدو الإشعار في هذا المثال كما في الشكل 4:

إشعار بنشاط مستمر في الخلفية
عند عرض الإشعار للمستخدم، يمكنه تأكيد استلامه أو تجاهل التنبيه أو التذكير الذي يعرضه تطبيقك. على سبيل المثال، يمكن للمستخدم قبول مكالمة هاتفية واردة أو رفضها.
إذا كان الإشعار مستمرًا، مثل مكالمة هاتفية واردة، اربط الإشعار بخدمة تعمل في المقدّمة. يوضّح مقتطف الرمز البرمجي التالي كيفية عرض إشعار مرتبط بخدمة تعمل في المقدّمة:
Kotlin
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification)
Java
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification);