ぶたのしっぽ

アプリの通知が来ない

だんなです。 最近LINEやtwitterなどスマホのアプリからのメッセージが届いた通知が表示されなくなりました。 いままでは「いいね」とか返信されたりするとスマホの画面の上の方に通知が表示されていました。 画面が表示されている時には通知はされるんですよ。変ですよね。

ネットにも同じ悩みを持っている人がいるようです。 まずいつからそうなったかというと「本体ソフトの更新」という案内があってAndroidのバージョンアップをしてからなんです。

わたしの使っているXperiaはAndroid 7.1.1になっています。 どうもAndroidのバージョンに関係がありそうです。

使っているシステムのバージョンを確認しよう

まず使っているスマホの情報を確認しましょう。

端末情報 Androidバージョン

「設定」をタップして下の方にある「端末情報」をタップします。 すると「Androidバージョン」という項目があります。 ここにAndroidに続いて数字が書かれています。この例では7.1.1です。 今回の通知の問題が発生しているのはどうも 6.xからのようです。

省電力設定を変更する

アプリの通知処理は、使っている人が何かするわけじゃなくて裏で動いているアプリが必要な時に通知をしてくれるものです。 という事は画面も消えている時に通知が起きてほしいわけですよね。

どうもAndroid 7.x (Nougat)からスマホのバッテリー持ちを改善するために省電力機能が強化されたようなんです。 具体的には画面を消して省電力状態の時に、勝手にアプリが裏でガンガン動いたりするとバッテリーの消耗が起きるので、それを抑止しようというわけです。

しかし、その省電力機能がアプリの通知に悪影響を及ぼしているのでないかと推測されます。 省電力状態で、LINEの通知を受けたとします。この時にLINEは通知を表示しようと動こうとします。 ところが省電力機能がその動きを阻んでしまったら動けないので通知できません。 どうもそんな感じになってしまっているようです。

そこで省電力状態でも指定したアプリは動けるようにすれば、ちゃんと通知が働くのではないかという事です。

バッテリー 電池の最適化

「設定」→「バッテリー」と進みます。すると画面の右上に点が3つのアイコンがあるのでタップします。

するとメニューがポップアップされるので「電池の最適化」をタップします。

許可するアプリを選択

画面の上に「アプリ」という項目があるのでタップするとスマホに入っているアプリ一覧が表示されます。 ここで通知をちゃんとしてほしいアプリの左にある□をタップして選択します。 例えばLINEやtwitterなどです。

ここで選択したアプリは省電力状態でも必要な処理を行うことができるようになります。

これでしばらくすると、いままでのように通知が行われるようになると思います。

わたしは自分が作ったアプリがあって、通知が表示されない事を不審に思って調べていて、今回の様な結論にたどりつきました。 これはある意味Android 7.xの不具合ではないかと考えています。早くこんな設定をしなくても期待するようにアプリが動けるようになるといいなと思います。 Googleさん頑張って。

Doze

少しわかりました。Android 6.x (Marshmallow)から省電力機能としてDozeが導入されました。このDozeが働くと次のような制限がされます。

  • AlarmManagerを無視
  • GPSとWiFiのスキャン停止
  • ネットワークアクセスの禁止
  • SyncAdapter や Job Scheduler の停止

確かにこれでは通知処理は動けませんね。AlarmManagerなどによる定期的な処理は延期され、およそ1時間おきなどまとめて処理されるようです。

Android M/NのDozeによる制限とバックグラウンドタスク実行に関するまとめ (Qiita)