顯示具時效性的通知

您的應用程式在某些情況下可能需要立即引起使用者註意。 例如正在響鈴的鬧鐘或來電指定執行平台裝置的應用程式內 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>

確認無誤後,就可以建立通知管道。

建立通知管道

建立通知管道以正確顯示通知,並 使用者必須透過應用程式設定管理通知。如要進一步瞭解 通知管道,請參閱建立及管理通知 管道

Application 的類別中建立通知管道 onCreate 方法:

Kotlin

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 所示 在應用程式的「App info」(應用程式資訊) 系統畫面中:

顯示應用程式資訊、通知畫面的圖片。
圖 1. App 中的通知部分 應用程式系統設定的「資訊」畫面。

管理通知權限

從 Android 13 開始,請在以下日期前要求通知權限: 向使用者顯示通知時

基本實作方式如下:

Kotlin

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,輕觸 Request permission 按鈕可觸發圖 2 所示的對話方塊:

顯示權限要求對話方塊的圖片
圖 2. 通知的系統對話方塊 權限要求。

如果使用者接受權限要求,應用程式的「應用程式資訊」部分會顯示 就像圖 3:

圖片:顯示獲得通知權限要求後的應用程式資訊畫面
圖 3. 已授予通知權限。
,瞭解如何調查及移除這項存取權。

建立高優先順序通知

建立通知時,請提供描述性的標題和訊息。

以下範例包含通知:

Kotlin

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() 函式會觸發通知,如下所示:

Kotlin

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

這個範例中的通知如圖 4 所示:

顯示高優先順序通知的圖片
圖 4. 高優先順序通知。

持續性通知

當您向使用者顯示通知時,他們可以進行確認或關閉 來接收應用程式快訊或提醒舉例來說,使用者可以接受或拒絕 來電顯示。

如果是進行中的通知 (例如有人來電), 連結通知與前景 服務。下列程式碼片段 說明如何顯示與前景服務相關聯的通知:

Kotlin

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

Java

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