この記事で分かること
- 「通知おやすみ」がどんなアプリで、何ができるのか
- 止めている間に届いた通知を、あとからまとめて読める仕組み
- 通知を読み取る強い許可を使うアプリで、プライバシーをどう守っているか
- 個人で Android アプリを Google Play に出すまでにつまずいたところ
アプリはこちら
「通知おやすみ」は Android 専用の無料アプリです(画面下に小さなバナー広告があります)。
- Google Play:https://play.google.com/store/apps/details?id=com.toybox.tsuchioff
- 紹介ページ:https://toybox-anime.github.io/tsuchi-off-site/
なぜ作ったか
普段はシステムエンジニアとして働いていて、休日に「あったらいいな」と思ったものをアプリにしています。
今回のきっかけは、スマホの通知です。鳴りやまないグループLINE、寝ている間に届く通知、集中したいときや映画を観ているときにポンと出てくるお知らせ。そんなときに、「ボタンをひとつ押したら、決めた時間だけ通知を全部止める。時間が来たら勝手に元に戻る」アプリを作ることにしました。
ただ、通知を止めると「大事な連絡を見逃したらどうしよう」という不安が出てきます。なので、止めている間に届いた通知はアプリの中にためておき、あとでまとめて読めるようにしました。「止めるけど、無視はしない」がこのアプリの考え方です。
できること
- ワンタップで通知を全部オフ:30分・1時間・3時間・8時間・朝まで・時刻指定から選んで押すだけ。届いた通知はその場で消え、音もバイブも鳴りません。時間が来たら自動で元に戻り、途中で「+30分」の延長もできます。
- 見逃した通知をあとから読める:止めている間に届いた通知は「見逃した通知」にたまります。アプリごとに絞り込めて、タップするとそのアプリを開けます。
- スケジュールで自動オフ:「毎日 23:00〜7:00」「平日 9:00〜18:00」のように、決まった時間に自動で止めて、自動で戻します。
- 大事なものは届ける:止めないアプリを選べます(家族のLINEだけは届ける、など)。連絡先に登録している人の電話は鳴らせますし、同じ番号から15分以内に2回かかってきたら鳴らす「緊急用」の設定もあります。目覚ましアラームは鳴り(止めることもできます)、動画や音楽の音も止まりません。
- 電話の着信も自動で拒否(Android 10以降):止めている間の電話を、鳴る前に自動で拒否できます。着信履歴には残ります。
- アプリを開かずに切り替え:クイック設定パネル(画面上から引き下ろすところ)のボタンや、ホーム画面のウィジェットからON/OFFできます。残り時間はボタンのまわりの輪でひと目で分かります。
- 日本語と英語に対応:日本語以外の設定のスマホでは英語で表示されます(英語名は「Notification Nap」)。
プライバシーについて
このアプリは、通知を消すために Android の「通知へのアクセス」という強い許可を使います。この許可があると、届いた通知の中身(アプリ名・タイトル・本文)を読み取れてしまうので、扱いにはとても気をつけました。
- 読み取った通知の内容は、「通知を消すこと」と「見逃した通知に表示すること」にだけ使います。
- 見逃した通知はスマホの中だけに保存され(最大500件)、外へ送ることはありません。クラウドへのバックアップの対象にもしていません。
- 保存は設定でオフにでき、画面からいつでも削除できます。アプリを消せば、保存した内容もすべて消えます。
- 連絡先は「連絡先の人の電話は鳴らす」をオンにしたときだけ、スマホの中で照らし合わせるのに使います。
- インターネット通信は、画面下のバナー広告(Google AdMob)を表示するためだけに使います。広告のために広告IDなどの情報が Google に送られますが、通知の内容・連絡先・電話番号が広告に使われることはありません。
- このアプリ自身が通知を出すこともありません。
くわしくはプライバシーポリシー(https://toybox-anime.github.io/tsuchi-off-site/privacy.html )に書いています。
技術構成
| 項目 | 内容 |
|---|---|
| 言語 | Kotlin |
| 対応OS | Android 8.0 以上(着信の自動拒否は Android 10 以上) |
| 通知を消す仕組み | NotificationListenerService(「通知へのアクセス」で動く機能) |
| 音・バイブを止める | Android のおやすみモード |
| 着信の自動拒否 | CallScreeningService(着信スクリーニング) |
| 時間になったら戻す | AlarmManager(スマホの再起動後も張り直す) |
| ボタン・ウィジェット | クイック設定タイル、ホーム画面ウィジェット |
| データの保存 | スマホの中だけ(設定値と、見逃した通知のファイル) |
| 広告 | Google AdMob のバナーのみ(全画面広告なし) |
| ビルドと配信 | GitHub Actions でビルドし、Google Play へ配信 |
| 開発の相棒 | Claude Code(AI) |
つまずいたところ
iPhone では作れなかった
この仕組みは、iPhone では作れません。iPhone では、ほかのアプリの通知にさわらせてもらえません。Android には「通知へのアクセス」という仕組みがあるので、届いた通知を消したり、中身をあとで読めるように残したりできます。そのため、このアプリは Android だけです。
消せない通知がある
通話中や音楽を再生しているときの表示など、Android の仕様で消せない通知があります。これらは無理に消そうとせず、対象外にしました。また、LINE通話のようなアプリの通話は、着信の自動拒否には対応できていません(音とバイブは止まります)。
「通知へのアクセス」のスイッチが押せない
Google Play を通さずにアプリを入れて試していたとき、Android 13 以降では「通知へのアクセス」のスイッチがグレーになって押せないことがありました。これは Android の「制限付き設定」という安全のための仕組みで、アプリ情報の右上の︙から「制限付き設定を許可」を選ぶ必要があります。アプリの中にも、この手順の案内を入れています。
Google Play に出すには、テスター12人×14日が必要だった
個人のアカウントで新しくアプリを Google Play に出すには、製品版の前に「12人以上のテスターに14日間使ってもらうクローズドテスト」が必要です。アプリを作り終えても、すぐには公開できません。このアプリでは、テスター募集サービスを利用して12人以上に14日間使ってもらい、テストを終えました。
テスト中にもらった声で直したところもあります。
- 通知へのアクセスを許可する前にメインのボタンを押しても、何も起きなかった → 理由の説明を出し、そこから設定画面を開けるようにしました。
- 日本語しかなくて分からない、英語版がほしい → アプリを英語に対応し、ストアの英語の説明文も用意しました。
まとめ
「通知おやすみ」は、ボタンひとつで決めた時間だけ通知を全部止めて、止めている間の通知はあとでまとめて読めるアプリです。毎晩決まった時間に自動で止めて、朝になったら元どおりにすることもできます。
通知を読み取る強い許可を使うアプリだからこそ、「通知の中身はスマホの外に出さない」ことを一番大事にして作りました。集中したいときや寝るときに、よかったら使ってみてください。
ほかに作ったアプリは https://nano-toy-lab.com/works/ にまとめています。
ナノトイラボ 