ممکن است برنامه شما در شرایط خاصی مانند زنگ هشدار مداوم یا تماس دریافتی، نیاز به جلب توجه کاربر فوری داشته باشد. در برنامههایی که دستگاههایی را هدف قرار میدهند که Android 9 (سطح API 28) یا قبلتر را اجرا میکنند، ممکن است با راهاندازی یک فعالیت در حالی که برنامه در پسزمینه است، این کار را انجام دهید. این سند نحوه دستیابی به این رفتار را در دستگاههای دارای Android 10 (سطح API 29) تا Android 13 (سطح API 33) نشان میدهد.
مجوز POST_NOTIFICATIONS را اضافه کنید
با شروع در Android 13، خط زیر را به فایل AndroidManifest.xml
خود اضافه کنید:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
هنگامی که این را دارید، می توانید یک کانال اعلان ایجاد کنید.
یک کانال اطلاع رسانی ایجاد کنید
یک کانال اعلان ایجاد کنید تا اعلان های شما به درستی نمایش داده شود و به کاربر اجازه دهید اعلان ها را در تنظیمات برنامه مدیریت کند. برای اطلاعات بیشتر درباره کانالهای اعلان، به ایجاد و مدیریت کانالهای اعلان مراجعه کنید.
کانال های اعلان خود را در روش onCreate
کلاس Application
خود ایجاد کنید:
کاتلین
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?hl=fa)
مجوزهای اعلان ها را مدیریت کنید
از Android 13، قبل از اینکه اعلانها را به کاربران نشان دهید، مجوزهای اعلان را درخواست کنید.
حداقل پیاده سازی به صورت زیر است:
کاتلین
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 را اجرا می کند، با ضربه زدن روی دکمه Request permission
، گفتگوی نشان داده شده در شکل 2 را فعال می کند:
![تصویری که گفتگوی درخواست مجوز را نشان می دهد](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_request_dialog.png?hl=fa)
اگر کاربر درخواست مجوز را بپذیرد، بخش اطلاعات برنامه برنامه مانند شکل 3 است:
![تصویری که صفحه اطلاعات برنامه را پس از درخواست مجوز اعلان نشان می دهد](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_granted.png?hl=fa)
یک اعلان با اولویت بالا ایجاد کنید
هنگام ایجاد اعلان، عنوان و پیام توصیفی را وارد کنید.
مثال زیر حاوی یک اعلان است:
کاتلین
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()
اعلان را به صورت زیر فعال می کند:
کاتلین
Button(onClick = { showNotification() }) { Text(text = "Show notification") }
اعلان در این مثال مانند شکل 4 است:
![تصویری که یک اعلان با اولویت بالا را نشان می دهد](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification.png?hl=fa)
اطلاع رسانی در حال انجام
هنگامی که اعلان خود را به کاربر نمایش می دهید، آنها می توانند هشدار یا یادآوری برنامه شما را تأیید یا رد کنند. به عنوان مثال، کاربر می تواند یک تماس تلفنی دریافتی را بپذیرد یا رد کند.
اگر اعلان شما در حال انجام است، مانند تماس تلفنی ورودی، اعلان را با یک سرویس پیش زمینه مرتبط کنید. قطعه کد زیر نحوه نمایش یک اعلان مرتبط با یک سرویس پیش زمینه را نشان می دهد:
کاتلین
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification)
جاوا
// Provide a unique integer for the "notificationId" of each notification. startForeground(notificationId, notification);