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

ممکن است برنامه شما در موقعیت‌های خاص، مانند زنگ هشدار مداوم یا تماس ورودی، نیاز داشته باشد که فوراً توجه کاربر را جلب کند. در دستگاه‌هایی که اندروید ۹ (سطح API 28) یا پایین‌تر را اجرا می‌کنند، می‌توانید این کار را با راه‌اندازی یک فعالیت در حالی که برنامه در پس‌زمینه است، انجام دهید. این سند نحوه دستیابی به این رفتار را در دستگاه‌هایی که اندروید ۱۰ (سطح API 29) (سطح API 29) و بالاتر را اجرا می‌کنند، نشان می‌دهد.

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

از اندروید ۱۳ (سطح API ۳۳) به بعد، مجوز 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)
    }
}

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

صفحه اعلان اطلاعات برنامه که کانال ایجاد شده را نشان می‌دهد.
شکل ۱. بخش اعلان‌ها در صفحه اطلاعات برنامه در تنظیمات سیستم برنامه.

مدیریت مجوزهای اعلان‌ها

از اندروید ۱۳ به بعد، قبل از نمایش اعلان‌ها به کاربران، مجوزهای اعلان را درخواست کنید.

مثال کد زیر نحوه درخواست مجوز اعلان زمان اجرا در 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")
}

در دستگاه‌هایی که اندروید ۱۳ و بالاتر را اجرا می‌کنند، ضربه زدن روی دکمه درخواست مجوز، پنجره سیستمی نشان داده شده در شکل ۲ را نمایش می‌دهد:

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

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

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

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

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

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

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)

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

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