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未満と同様の挙動にさせたい場合はこれを使うのが良いですね。
以上です