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

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

افزودن اجازه POST_NOTIFICATIONS

از Android نسخه ۱۳ (سطح میانای برنامه‌سازی کاربردی ۳۳) به بعد، اجازه 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 نسخه ۱۳ به بعد، قبل‌از نمایش اعلان‌ها به کاربران، اجازه‌های اعلان را درخواست کنید.

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

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

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

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

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

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

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

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)

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

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