どうも。どっことです。今回は、通知を実際に表示する実装方法を解説します。
通知領域に通知を表示する
通知チャンネルも実装できて、いよいよ通知を表示する方法まで来ました。さっそく実装方法を解説していきます。
通知を表示する実装の流れ
AndroidManifest.xml
にパーミッションの追加- 通知の表示の許諾確認
- 拒否された時はさらに確認
- 通知の表示処理
AndroidManifest.xmlにパーミッションの追加
まずはAndroidManifest.xml
に今回の通知表示に必要となるpermission.POST_NOTIFICATIONS
の権限を追加します。このpermission.POST_NOTIFICATIONS
が実装時に忘れやすいので、実装時にはぜひ備忘録としてご確認いただけると嬉しいです。
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
通知の表示の権限許諾確認
権限許諾ですが、実装方法は通常のパーミッションチェックと同様です。つまりregisterForActivityResult
を使ってlauncher
を生成し、Manifest.permission.POST_NOTIFICATIONS
の許諾確認をします。このManifest.permission.POST_NOTIFICATIONS
も実装時に忘れやすいので、ぜひ参考にしてください。
private val launcher = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) {
/** 許諾ダイアログが閉じられた。何かやりたいことがあればここに実装。*/
}
...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
TODO("あとで追加実装")
launcher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
拒否された時の再許諾確認
権限を確認したにもかかわらず拒否されてしまった場合ですが、一般的には次回などで「この権限がXXXという理由で必要なんだ」という権限を必要としている理由を説明した上で再度権限を確認する流れとなります。前項のTODO("あとで追加実装")
に追記していきます。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
// 権限を許諾してもらっている。後続処理に流さないでOK
return
}
val shouldShow = shouldShowRequestPermissionRationale(
Manifest.permission.POST_NOTIFICATIONS
)
if (shouldShow) {
// 過去に許諾確認したけど、許可してくれなかった人。
// ダイアログなどで権限を必要としている理由を説明した上で再度依頼する。
} else {
// それ以外。初回のケース、または「もう表示しない」設定としたケース。
launcher.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}
通知の表示処理
そしてManifest.permission.POST_NOTIFICATIONS
の許諾を確認をした上で、問題なければNotification
を表示するようNotificationManager
に依頼します
if (checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
val notification = Notification.Builder(this, "id")
.setContentTitle("this is title")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentText("this is text")
.build()
NotificationManagerCompat.from(this)
.notify(null, 0, notification)
}
実際にうまく動作していれば、上記の場合以下のような通知が通知領域に表示されます。

まとめ
今回は通知領域に通知を表示する方法を解説しました。実装はそんなに複雑ではないものの、参照すべき定数を毎回忘れてしまいがちなので、ぜひ参考にしていただけると嬉しいです。