【Android 13〜16対応】通知が表示されない原因まとめと正しい対処法

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仕様をセットで考えることが必須です。

通知まわりで困ったときの備忘録として、
この記事が参考になれば幸いです。

コメント

タイトルとURLをコピーしました