قد يحتاج تطبيقك إلى جذب انتباه المستخدم بشكل عاجل في حالات معيّنة، مثل المنبّه الجاري أو المكالمة الواردة. في التطبيقات التي تستهدف الأجهزة التي تعمل بالإصدار Android 9 (المستوى 28 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم، يمكنك معالجة ذلك من خلال بدء نشاط عندما يكون التطبيق في الخلفية. يوضّح هذا المستند كيفية تحقيق هذا السلوك على الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android (المستوى 29 لواجهة برمجة التطبيقات) وحتى الإصدار 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) } }
عندما يشغِّل المستخدم تطبيقك للمرة الأولى، سيظهر له ما يلي في شاشة نظام معلومات التطبيق في تطبيقك:
إدارة أذونات الإشعارات
بدءًا من 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:
إذا وافق المستخدم على طلب الإذن، سيظهر قسم معلومات التطبيق في التطبيق بالشكل الموضَّح في الشكل 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);