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

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

تصویری که اطلاعات برنامه، صفحه اعلان برنامه شما را نشان می دهد.
شکل 1. بخش اعلان ها در صفحه اطلاعات برنامه تنظیمات سیستم برنامه.

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

از 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 را فعال می کند:

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

اگر کاربر درخواست مجوز را بپذیرد، بخش اطلاعات برنامه برنامه مانند شکل 3 است:

تصویری که صفحه اطلاعات برنامه را پس از درخواست مجوز اعلان نشان می دهد
شکل 3. مجوزهای اعلان داده شده است.

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

هنگام ایجاد اعلان، عنوان و پیام توصیفی را وارد کنید.

مثال زیر حاوی یک اعلان است:

کاتلین

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 است:

تصویری که یک اعلان با اولویت بالا را نشان می دهد
شکل 4. یک اعلان با اولویت بالا.

اطلاع رسانی در حال انجام

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

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

کاتلین

// 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);