HIKKIE

PC / スマートフォン / ガジェット好きのひきこもりライフログBlog

Android スマートフォンでアプリの通知がすぐに届かない原因は「電池の最適化」だけではない

Android スマートフォンのトラブルでもポピュラーなものが、通知が遅れる、来ない、鳴らないという症状。

僕も先日、Pixel 3aからPixel 5a (5G)に機種変更を行った後、Kyashの3Dセキュア認証キーをプッシュ通知で受け取ろうとした時、通知がすぐに来ずちょっと悩みました。

アイキャッチ

そもそもプッシュ通知はどうやって受け取っているのか

アプリからの通知をリアルタイムで受け取るには、実はGoogleの「通知サーバー」とのセッションが維持されている必要があります。Android端末はユーザーが何も操作していない瞬間でも、物凄く小さなパケット(Keep-Alive)を数分ごとの一定間隔で通知サーバーへと送り続けています。

定期的に、この端末は活動していますよ、という生存報告を行うことで、この端末は使われているんだ、じゃあ通知を送らないとね、ということで通知を送ってもらえて、端末でも受信が出来るということです。

通知が遅れる原因

電池の最適化

もっともメジャーな通知が来なくなる原因は、電池の最適化と呼ばれるAndroid OSの省電力機能です。Android 6.0から追加され、7.0でも機能の拡張が行われています。

電池の最適化は日本語名で、別名をDozeと言います。
Doze(居眠り)の名前の通り、この機能が有効になるとアプリはスリープ状態に入り、CPUやネットワークの利用を制限されます。そのため、バッテリーの消費が削減され、長寿命化が期待できます。

DozeはおおまかにDeep Doze(深い居眠り)とLightweight Doze(軽い居眠り)に分かれます。充電器に接続中は有効になりません。

Deep Dozeはディスプレイの電源が切られ、端末が静止した状態で長時間置かれた時に有効になります。GPSやBluetoothまで含めてネットワークの利用が制限され、アプリによって優先度が高く設定された通知以外を受信しません。基本的に端末が取り上げられた時にモーションを感知して、Deep Dozeは解除されます。アラームの設定時間が近づいた時も無効化されます。
Lightweght Dozeはディスプレイの電源が切られただけで有効になります。ネットワークの利用が制限され、アプリの同期・通知の取得間隔は数分間ごとに制限されます。このために通知が遅延する・すぐに届かないといった現象が発生します。

すぐに通知を受け取りたい、アプリが常時ネットワークを利用出来ないと困る…といった場合は電池の最適化を無効にする設定を行う必要があります。日本語圏で利用者が多かったり、スリープに入ると困る可能性の高いアプリだと、LINEとか、接触確認アプリ COCOAで設定の必要があるでしょう。

※以下はPixel 5a (5G)およびAndroid 11にて確認

無効化するためには、

「設定」アプリを開く
「アプリと通知」→詳細設定をタップ、「特別なアプリアクセス」を開く
「電池の最適化」を開く

そのままだと最適化していないアプリが表示されるので、

「最適化していないアプリ」をタップ→「すべてのアプリ」を選ぶ
電池の最適化を無効化したいアプリを選択(右上の虫眼鏡アイコンをタップすると検索が出来ます)
「最適化しない」を選択→「完了」を選ぶ

通知の自動調整

電池の最適化とは別に、通知が来ない、遅れる原因となるのが「通知の自動調整」機能です。こちらは、Android 10から追加され、Android 11で機能の拡張が行われています。比較的最近に追加された機能なので、電池の最適化だけで想定通りに通知が機能せず、困惑されることが多いです。

通知の自動調整は、システムがアプリの利用状況や種別から通知の優先度を自動的に判断し、通知の頻度を減らしたり、通知音声を鳴らさずサイレントで通知のみを表示する、といった機能です。電池の最適化を無効にしているアプリでも、通知の優先度が低いとシステムに判断されたとき、通知の遅延が発生する場合があります。

この場合、通知の自動調整を根本的に無効にする必要があります。

「設定」アプリを開く
「アプリと通知」→詳細設定をタップ、「特別なアプリアクセス」を開く
「通知の自動調整」を開く
「なし」を選択

格安SIM(MVNO)

MVNOが提供する、いわゆる格安SIMにおいては様々な方法でコストの低減策が取られ、安価な通信費を実現しています。

前述の通り、スマートフォンが通知を受信するためには通知サーバーとの定期的なセッションの維持が必要となるのですが、利用しているMVNO事業者によっては一定時間通信していない時間が続くと、通信を自動的に切断してしまうことがあります。そうなるとセッションはタイムアウトし、通知が届かないということが起こります。

回避策として、メールアプリなどの設定で同期間隔を短く設定するとか、Keep-Aliveの送信間隔を手動で設定できるアプリなんてものもあります。まあ、最近はMNOの格安プランが本当に安かったりするので、そちらに移籍するという手もありますが。

いずれも最近の大容量バッテリを搭載する製品ではバッテリ持ちへの影響は軽微

バックグラウンドアプリの動作を制限する機能を無効化することで、バッテリ消費にまったく影響が出ないということは考えにくいです。ただ、最近のAndroid スマートフォンは大型化に伴いバッテリ容量も大きく向上しています。最新のチップセットは低負荷時の消費電力については省エネ化しています。また、昔はそもそも存在しなかった機能ですから、これを無効にしたからといって著しく古いスマートフォンより電池持ちが悪化するということは基本的にありません。

スマートフォンでもっとも電池を消耗するのは、ディスプレイの点灯、それと高負荷でのCPUとGPUの利用です。

参考・関連リンク

Android版接触確認アプリをご利用の方へ(PDF)

あわせて読みたい: