1
2

More than 1 year has passed since last update.

Andorid 12でカスタム通知を使うときはsetCustomBigContentViewも設定するのを忘れない

Last updated at Posted at 2021-09-25

Android 12の正式リリースはまだですが、先走ってtargetSdk 31対応をして公式ドキュメントをちゃんと読まずに失敗したので注意喚起
Android 12でtargetSdkを31にするとカスタム通知に関する挙動が変更されます。

Android 12でもtargetSdkが31未満の場合、以下のようにsetCustomContentViewで設定したRemoteViewsが通知全体に表示されます。妙に角のRが大きい問題がありますが、角部分に重要な情報を配置していなければそれほど問題は無いでしょう。

しかし、targetSdkを31にすると以下のように通知の中の一部にのみにRemoteViewsが表示されるようになります。targetSdkはいずれ上げないといけないので、この制約の中で適切な表現を考える必要がありますね。

Android 12 をターゲットとするアプリでは、すべての通知を展開できます。そのため、setCustomContentView を使用している場合、通常は setBigCustomContentView も使用して、折りたたまれた状態と展開された状態に一貫性を持たせる必要があります。

はい、Android 12ではすべての通知が展開されてしまうため、setBigCustomContentView を設定していないと、展開したときに表示されるものがなくなってしまいます。

展開させたくなくても展開されてしまうので、 setBigCustomContentView でRemoteViewsを設定しておく必要があります、 setCustomContentView に指定したものと同じRemoteViewsで問題無いです。

なお、DecoratedCustomViewStyleを指定した場合も同様の効果がありますが、Android 12未満でも展開できるカスタム通知を作るためのものですね。
せっかく展開することが強制されるので、展開されたときはよりリッチなUIを提供して、Android 12未満と同様の挙動にさせたい場合はこれを使うのが良いですね。

以上です

1
2
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
1
2