Androidアプリ開発で、
「実装したはずの通知が出ない」
という問題は、今やOS仕様を理解していないと必ずハマるポイントになっています。
特に Android 13 以降、通知は
「アプリの自由な表示」から「ユーザー主導で管理される仕組み」へと完全に移行しました。
この記事では、Android 13〜最新(Android 16 を見据えた設計)までを対象に、
通知が表示されない代表的な原因と、実務で使える対処法をまとめます。
原因①:POST_NOTIFICATIONS 権限をリクエストしていない(Android 13〜)
Android 13(API 33)以降、通知は実行時権限になりました。
つまり、ユーザーが明示的に許可しない限り、通知は一切表示されません。
これは Android 14 / 15 / 16 でも変わらず、
今後も必須前提となる仕様です。
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
実行時リクエスト例:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.POST_NOTIFICATIONS
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.POST_NOTIFICATIONS),
1001
)
}
}
通知が出ない=まずこの権限を疑う
これは Android 16 時代でも鉄則になります。
原因②:NotificationChannel の importance が低い
Android 8.0 以降、通知は NotificationChannel に紐づきます。
Android 15 以降は特に、importance の設定がユーザー体験に直結します。
val channel = NotificationChannel(
CHANNEL_ID,
"お知らせ通知",
NotificationManager.IMPORTANCE_DEFAULT
)
IMPORTANCE_LOW / MIN を設定すると、
- バナーが出ない
- 音が鳴らない
- 「通知が来ていない」と誤解される
という状態になります。
Android 16 では「静かな通知」はさらにユーザー管理寄りになる可能性が高いため、
重要通知は DEFAULT 以上を基本にしましょう。
原因③:一度作成した NotificationChannel は変更できない
これは Android 16 でも変わらない仕様です。
一度作成された NotificationChannel は、
- importance
- 音の有無
- バナー表示
をアプリ側から変更できません。
過去に「仮で作ったチャンネル」をそのまま使い続けていると、
何をしても通知が目立たない状態になります。
対策としては:
- チャンネルIDを新しくする
- ユーザーに設定画面を案内する
が現実的です。
原因④:バックグラウンド制限(Android 14〜16)
Android 14 以降、バックグラウンド処理はさらに厳しくなりました。
- フォアグラウンドサービスの起動制限
- 不要な常駐処理の制限
- 省電力最適化の影響
Android 16 でもこの流れは継続されるため、
「通知を出すための処理方法」が非常に重要です。
遅延通知・定期通知は、
WorkManager を使うのが最も安全です。
原因⑤:ユーザー側で通知が完全にオフになっている
Android 15 以降、ユーザーは
- アプリ単位
- チャンネル単位
で通知を細かく制御できます。
つまり、
「アプリにバグはないが通知は出ない」
という状態が普通に起こります。
重要な通知の場合は、
初回起動時などに通知の用途を説明するUIを用意すると親切です。
通知が出ないときの最終チェックリスト(Android 13〜16)
- POST_NOTIFICATIONS を許可しているか
- NotificationChannel を作成しているか
- importance が適切か
- チャンネルIDを途中で変えていないか
- WorkManager など推奨APIを使っているか
- 端末側で通知がオフになっていないか
まとめ
Android 13 以降、通知は
「出せるもの」ではなく「許可されたものだけ出せる」仕組みに完全移行しました。
Android 16 を見据えても、
この流れが緩和されることはまずありません。
これからの通知実装では、
ユーザー体験・権限説明・OS仕様をセットで考えることが必須です。
通知まわりで困ったときの備忘録として、
この記事が参考になれば幸いです。


コメント