どうも。どっことです。今回は通知チャンネルを作成するための実装方法について解説します。
通知チャンネルを作成する方法
Android 8(Oreo)から 通知領域に通知を表示するためには、その通知に対応する通知チャンネルをあらかじめ作成しておかなければならなくなりました。
以前の記事で「作成した通知チャンネルの設定画面に遷移する」実装方法を解説しましたが、そもそも通知チャンネルの追加方法を解説していなかったので、今回はこちらをテーマに解説していこうと思います。
通知チャンネルの作成
通知チャンネルは以下の手順で作成します。
NotificationManager
のインスタンスを取得- 通知チャンネルインスタンスを生成
NotificationManager
に通知チャンネルの作成を依頼
順番に解説していきます。
NotificationManagerのインスタンスを取得
まずはNotificationManager
のインスタンスを取得します。androidxではNotifcationManagerCompat
というクラスが提供されており、今まではAndroidのバージョンがO未満かどうかで制御をする必要がありましたが、このクラスが提供されたことによりAndroidのバージョンを気にせず制御することができるようになりました。
呼び出し方も単純で、以下でOKです。
val manager = NotificationManagerCompat.from(this)
通知チャンネルインスタンスを生成
次に実際に作成する通知チャンネルのインスタンスを生成します。最小の構成では、ID、Importanceとタイトルさえあれば作成できるはずです。
val channel = NotificationChannelCompat.Builder("id", NotificationManagerCompat.IMPORTANCE_DEFAULT)
.setName("ChannelName")
.setDescription("ChannelDescription")
.build()
実装するとき一番よく忘れるのが、Importance
です。定数はNotificationManagerCompat
で定義されていますので、そちらを参照してください。以下が定義されています。
NotificationManagerCompat.IMPORTANCE_MAX
NotificationManagerCompat.IMPORTANCE_HIGH
NotificationManagerCompat.IMPORTANCE_DEFAULT
NotificationManagerCompat.IMPORTANCE_LOW
NotificationManagerCompat.IMPORTANCE_MIN
NotificationManagerCompat.IMPORTANCE_NONE
NotificationManagerCompat.IMPORTANCE_UNSPECIFIED
NotificationManagerに通知チャンネルの作成を依頼
最後に生成した通知チャンネルのインスタンスをNotificationManager#createNotificationChannel()
で渡して、通知チャンネルの作成を依頼します。
manager.createNotificationChannel(channel)
まとめ
今回は通知チャンネルの作成手順を解説しました。Androidの通知に関する処理は、最新のバージョンになるに連れて必要な実装が増えていくのが辛いところですが、素敵なアプリには必要不可欠な要素の一つだと思いますので、是非ともマスターしたいところですね。
おまけ:通知チャンネルの削除を依頼する
作るのと同じで、NotificationManager#deleteNotificationChannel(id)
を呼ぶことで、通知チャンネルの削除依頼することができます。
manager.deleteNotificationChannel(channel)