0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Android アプリがバックグラウンドの時にヘッドアップ通知する

Posted at

やりたいこと

アプリがバックグラウンドの時にヘッドアップ通知する
なお、フォアグラウンドの場合は従来通りFirebaseMessagingServiceのonMessageReceivedで通知を作成すればよいので割愛

やること

事前準備

今回はFirebaseCloudMessagingを使用しますので以下のURLを参考にPush通知を受ける準備はしておく

通知チャネルの作成

いろんなサンプルコードには通知チャネルと通知(NotificationManagerCompat.Notify)をするところが一緒に実装されていることが多いので盲点だったのですが、通知チャネルは永続化されていて一度作成するだけでOK。
つまり実装箇所はFirebaseMessagingServiceで通知を受けた時ではなく、Applicationクラスなどアプリの初期処理で通知チャネルを作成しておく。

通知チャネルは一度作ると同じ名前で再度作成しようと思っても実行されない、なので既存で利用している通知チャネルの重要度だけ変更するとかもできない。新しいChannelIDで作成しましょう。
↓ここにもちゃんと書いてる
https://developer.android.com/training/notify-user/channels?hl=ja#CreateChannel

この時にNotificationManager.IMPORTANCE_HIGHをセットしておく。

App.kt
val name = getString(R.string.channel_name)
val descriptionText = getString(R.string.channel_description)
val importance = NotificationManager.IMPORTANCE_HIGH // ←ここ必須
val mChannel = NotificationChannel("CHANNEL_ID_HEAD_UP", name, importance)
mChannel.description = descriptionText
val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(mChannel)

配信側

あとは通知を送る側で上で作成した通知チャネルIDを指定していればOK
例えばFirebaseのCloud Messagingだと通知の作成の項目にあるAndroid通知チャネルに上で作成した"CHANNEL_ID_HEAD_UP"を指定する。

スクリーンショット 2022-11-04 16.36.30.png

スクリーンショット 2022-11-04 16.37.23.png

テストメッセージを配信

事前にLogcatなどから取得しておいたFCM登録トークンをコピーしておいて
Cloud Messagingからテストメッセージを配信してみます。

スクリーンショット 2022-11-16 11.00.28.png

アプリがバックグラウンドの状態でヘッドアップ通知が出来ました!

Screenshot_20221116-105809_One UI Home.jpg

ソースコード

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?