自作アプリ「通知おやすみ」は、ボタンひとつでスマホの通知をまとめて止める Android アプリです。ところが作っている途中で、止めているはずなのにどうしても消えない通知があることに気づきました。
正体は、通話中や音楽の再生中に出ている表示など、Android の決まりで消せない通知でした。この記事では、なぜ消えないのかと、アプリでどう扱うことにしたかをまとめます。
何が起きたか
「通知おやすみ」は、止めている間に届いた通知をその場で消して、中身を「見逃した通知」に残します。あとからまとめて読めるので、見逃しの心配をせずに集中できる、というしくみです。
ところが、試していると、一部の通知だけは消そうとしても残りました。たとえば次のような表示です。
- 通話中に出ている表示
- 音楽を再生しているときの表示
なぜ消えないのか
Android の通知には、ふつうの通知と、使う人がスワイプしても消せない通知があります。消せない通知は、通話や音楽の再生のように「いま動いているもの」を知らせるためのもので、動いている間は出しっぱなしにする決まりです。
この種類の通知は、「通知へのアクセス」を許可されたアプリから消そうとしても、システムが受け付けません。つまり、アプリの作り方を工夫しても消せないものだったのです。
どうしたか:無理に消さず、対象外にした

消せないものを何度も消そうとするのはやめて、最初から対象外にしました。届いた通知ごとに、次のように分けています。
- 消せない通知:通話中・音楽再生中の表示などは、触らずにそのまま残す
- 電話の着信:着信の通知も消さない(電話は「連絡先の人は鳴らす」などの着信の設定で別に扱っているため)
- 目覚まし:目覚ましを鳴らす設定(はじめはこちら)のときは、アラームの画面も消さない
- 止めないアプリに選んだアプリ:その通知は届ける
- それ以外のふつうの通知:その場で消して、「見逃した通知」に残す
この分け方は、新しく届いた通知だけでなく、止め始めた時点ですでに出ている通知にも同じように使っています。ボタンを押すと、いま出ているふつうの通知も片付けて中身を残し、消せない通知や電話の通知はそのままにします。ルールをひとつにまとめたので、「さっきは消えたのに今度は残った」という食いちがいも起きにくくなりました。
あわせて、動画や音楽の音そのものも止めないようにしています。通知を止めたら音楽まで止まった、ということがないようにするためです。
また、「全部止める」と言いながら残る通知があると、使う人は「こわれているのかな」と思うかもしれません。そこで Google Play の説明文に、「通話中や音楽再生中の表示など、Android の仕様で消せない通知は残ります」と書きました。できないことは、先に伝えておくほうが親切だと考えました。
アプリを作る人へ
- 通知を消すアプリでは、消せない通知があるのが前提。消す前に「消せる通知かどうか」を確かめて、だめなものは触らないほうがすっきりする
- 電話や目覚ましのように、消すと困る通知はあえて残すことも考えておく
- どうしても残る通知は、説明文や画面で先に書いておくと、不具合とまちがわれにくい
まとめ
- 通話中や音楽再生中の表示など、Android の決まりで消せない通知がある
- 「通知おやすみ」では、無理に消さずに対象外にした
- 電話の着信や目覚ましも、消すと困るので残している
- 残る通知があることは、ストアの説明文に書いておいた
「通知おやすみ」は、Google Play で「通知おやすみ」と検索すると見つかります。作った話は「通知おやすみ」を作って公開した話に、ほかに作ったアプリは 作ったもの にまとめています。
ナノトイラボ 
