قد يحتاج تطبيقك إلى جذب انتباه المستخدم بشكل عاجل في حالات معيّنة، مثل المنبّهات الحالية أو المكالمات الواردة في التطبيقات التي تستهدف الأجهزة التي تعمل في نظام التشغيل Android 9 (المستوى 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>
بعد الحصول على هذا الإشعار، يمكنك إنشاء قناة للإشعارات.
إنشاء قناة للإشعارات
يجب إنشاء قناة إشعارات لعرض الإشعارات بشكل صحيح والسماح إدارة المستخدمين للإشعارات في إعدادات التطبيق. لمزيد من المعلومات عن قنوات الإشعارات، راجع إنشاء الإشعارات وإدارتها .
إنشاء قنوات الإشعارات في صف Application
طريقة onCreate
:
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 في شاشة النظام معلومات التطبيق الخاصة بتطبيقك:
![صورة تعرض "معلومات التطبيق" وشاشة "الإشعارات" الخاصة بتطبيقك.](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_channel_empty.png?authuser=19&hl=ar)
إدارة أذونات الإشعارات
بدءًا من الإصدار 13 من نظام التشغيل Android، يجب طلب أذونات إرسال الإشعارات قبل إظهار الإشعارات للمستخدمين.
يظهر الحد الأدنى من عملية التنفيذ على النحو التالي:
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:
![صورة تعرض مربّع حوار طلب الحصول على إذن](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_request_dialog.png?authuser=19&hl=ar)
في حال وافق المستخدم على طلب الإذن، سيظهر قسم معلومات التطبيق في التطبيق. مثل الشكل 3:
![صورة تعرض شاشة "معلومات التطبيق" بعد منح إذن إرسال الإشعارات](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_granted.png?authuser=19&hl=ar)
إنشاء إشعار ذي أولوية عالية
عند إنشاء الإشعار، ضمِّن عنوانًا وصفيًا ورسالة.
يحتوي المثال التالي على إشعار:
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:
![صورة تعرض إشعارًا ذا أولوية عالية](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification.png?authuser=19&hl=ar)
إشعار بنشاط مستمر في الخلفية
عند عرض إشعارك للمستخدم، يمكنه الإقرار أو رفضه. التنبيه أو التذكير الخاص بتطبيقك على سبيل المثال، يمكن للمستخدم قبول أو رفض مكالمة هاتفية واردة.
إذا كان الإشعار قيد المراجعة، مثل مكالمة هاتفية واردة، ربط الإشعار بمقدمة الخدمة. مقتطف الرمز التالي كيفية عرض إشعار مرتبط بخدمة تعمل في المقدّمة:
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);