緊急を要する通知を表示する

アプリは特定の状況で緊急にユーザーの注意を引く必要がある場合があります。 通知することもできます。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, Notification] 画面を示す画像。
図 1. アプリの [Notifications] セクション 情報画面。

通知権限の管理

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