アプリは特定の状況で緊急にユーザーの注意を引く必要がある場合があります。 通知することもできます。以下を搭載したデバイスをターゲットとするアプリ内 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] 画面を示す画像。](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_channel_empty.png?authuser=2&hl=ja)
通知権限の管理
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 に示すダイアログが表示されます。
![権限リクエスト ダイアログを示す画像](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_request_dialog.png?authuser=2&hl=ja)
ユーザーが権限リクエストを承認すると、アプリの [アプリ情報] セクションに 図 3 のように、
![通知権限リクエストが許可された後の [アプリ情報] 画面の画像](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification_permission_granted.png?authuser=2&hl=ja)
高優先度通知を作成する
通知を作成する際は、わかりやすいタイトルとメッセージを含めます。
次の例には通知が含まれています。
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 のようになります。
![優先度の高い通知の画像](https://developer.android.google.cn/static/images/ui/notifications/time-sensitive_notification.png?authuser=2&hl=ja)
進行中の通知
通知をユーザーに表示するとき、ユーザーは通知を確認または拒否できます 追加できますたとえば、ユーザーは指定されたスペースで 通話の着信。
電話の着信など、進行中の通知の場合は、 その通知をフォアグラウンド サービス。次のコード スニペット フォアグラウンド サービスに関連付けられた通知を表示する方法を示します。
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);