نمایش اعلان‌های حساس به زمان

برنامه شما ممکن است در شرایط خاصی نیاز داشته باشد که توجه کاربر را به‌سرعت جلب کند، مثل هشدار جاری یا تماس ورودی. در دستگاه‌هایی که از Android 9 (میانای برنامه کاربردی سطح ۲۸) یا پایین‌تر استفاده می‌کنند، می‌توانید این کار را با راه‌اندازی یک فعالیت درحالی‌که برنامه در پس‌زمینه است انجام دهید. این سند نشان می‌دهد چگونه می‌توان به این رفتار در دستگاه‌های دارای Android 10 (میانای برنامه کاربردی سطح ۲۹) و بالاتر دست یافت.

اجازه POST_NOTIFICATIONS را اضافه کنید

از Android 13 (میانای برنامه‌سازی کاربردی سطح ۳۳) شروع کنید، اجازه POST_NOTIFICATIONS را در فایل AndroidManifest.xml خود اعلام کنید:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

پس‌از اعلام اجازه، کانال اعلان ایجاد کنید.

ایجاد کانال اعلان

کانال اعلانی ایجاد کنید تا اعلان‌ها را نمایش دهید و به کاربران اجازه دهید دسته‌های اعلان را در تنظیمات سیستم مدیریت کنند. برای اطلاعات بیشتر درباره کانال‌های اعلان، ایجاد و مدیریت کانال‌های اعلان را ببینید.

کانال‌های اعلان را در روش onCreate کلاس Application ایجاد کنید:

class MyApplication : 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 به بعد، قبل‌از اینکه اعلان‌ها را به کاربران نشان دهید، اجازه‌های اعلان را درخواست کنید.

مثال کد زیر نحوه درخواست اجازه اعلان زمان اجرا در Jetpack Compose را نشان می‌دهد:

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 و نسخه‌های بالاتر را اجرا می‌کنند، تک‌ضرب زدن روی دکمه درخواست اجازه کادر گفتگوی سیستم نشان‌داده‌شده در «شکل ۲» را نمایش می‌دهد:

کادر گفتگوی سیستم که از کاربر می‌خواهد اجازه دهد اعلان‌ها را دریافت کند.
شکل ۲. کادر گفتگوی سیستم برای درخواست اجازه اعلان.

وقتی کاربر اجازه را اعطا می‌کند، سیستم صفحه اطلاعات برنامه را به‌روز می‌کند، همان‌طور که در «شکل ۳» نشان داده شده است:

صفحه «اطلاعات برنامه» که اجازه‌های اعلان اعطاشده را نشان می‌دهد.
شکل ۳. اجازه‌های اعلان اعطا شد.

ایجاد اعلان اولویت بالا

وقتی اعلان اولویت بالا می‌سازید، عنوان و متن پیام واضحی ارائه دهید. همچنین یک کانال با اهمیت بالا و سطح اولویت را اختصاص دهید.

مثال کد زیر یک اعلان اولویت بالا را پیکربندی و ایجاد می‌کند:

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(0, notificationBuilder.build())
}

اعلان به کاربر نمایش داده می‌شود

فراخوانی تابع showNotification باعث راه‌اندازی اعلان به‌صورت زیر می‌شود:

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

شکل ۴ اعلان اولویت بالایی را که سیستم نمایش می‌دهد نشان می‌دهد:

اعلان اولویت بالایی در دستگاه نمایش داده می‌شود.
شکل ۴. اعلان اولویت بالا.

اعلان جاری

وقتی اعلانتان را به کاربر نشان می‌دهید، او می‌تواند هشدار یا یادآوری برنامه‌تان را تأیید یا رد کند. برای مثال، کاربر می‌تواند تماس تلفنی ورودی را بپذیرد یا رد کند.

اگر اعلان شما نشان‌دهنده یک وظیفه پس‌زمینه‌ای جاری، مانند تماس تلفنی فعال، است، اعلان را با یک سرویس پیش‌زمینه‌ای مرتبط کنید. تکه‌کد زیر نحوه نمایش اعلان مرتبط با سرویس پیش‌زمینه‌ای را نشان می‌دهد:

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification)

استفاده از «به‌روزرسانی‌های زنده» را درنظر بگیرید

اعلان‌های جاری حساس به زمان می‌توانند از نمایان‌تر شدن بهره‌مند شوند. برای نمایش اطلاعات وضعیت در سطوح رابط کاربری سیستم، اعلان‌های جاری را به‌عنوان به‌روزرسانی‌های زنده تبلیغ کنید.