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