※Claude Codeを使用して記事を作成しています。
シリーズ:Claude Codeで実務Androidアプリ開発
- 第1回:ログイン機能を作ろう
- 第2回:Firebaseでユーザー認証
- 第3回:クラウドにデータを保存しよう
- 第4回:Push通知を送ろう ← 今回
はじめに
今回はメモアプリにPush通知機能を追加します。
Push通知とは、アプリが起動していなくてもスマホの画面上部に表示されるあの通知です。
メモアプリへの活用例として、リマインダー機能を実装します。
メモに「通知する日時」を設定しておくと、その時間にスマホに通知が届く仕組みです。
今回実装する内容
| 機能 | 内容 |
|---|---|
| 通知の許可リクエスト | Android 13以降で必要な通知許可のダイアログ |
| ローカル通知 | 指定した日時にスマホ内から通知を送る |
| リマインダー設定 | メモに通知日時を設定できるようにする |
| 通知からアプリを開く | 通知をタップすると該当メモが開く |
💡 ローカル通知とFCM通知の違い:
Push通知には2種類あります。
「ローカル通知」はサーバー不要でスマホ単体で完結し、「FCM(Firebase Cloud Messaging)通知」はサーバーから全ユーザーに一斉送信できます。
今回はサーバー不要で実装できるローカル通知を使います。
Step 1:通知の許可リクエストを実装する
Android 13(API 33)以降では、通知を送るにはユーザーの許可が必要です。
✍️ Claude Codeへの指示例:
アプリ初回起動時に通知の許可をユーザーに求めるダイアログを表示してください。
・Android 13以上の場合のみ許可リクエストを出す
・許可を拒否した場合でもアプリは普通に使えるようにする
・許可を拒否した場合、リマインダー設定画面で「通知が許可されていません。設定から許可してください。」というメッセージを表示する
Step 2:メモにリマインダー日時を追加する
メモのデータにリマインダーの日時を追加します。
✍️ Claude Codeへの指示例:
メモの作成・編集画面にリマインダー設定を追加してください。
・「リマインダーを設定する」というトグルスイッチを追加する
・トグルをONにすると日付と時刻を選べるピッカーが表示される
・選択した日時をメモのデータに保存する
・Firestoreのメモデータにもリマインダーの日時を追加する
・設定したリマインダーは「2025年6月1日 09:00」のように表示する
Step 3:指定日時に通知を送る機能を実装する
✍️ Claude Codeへの指示例:
メモの保存時に、リマインダーが設定されていた場合、
指定した日時にローカル通知を送る機能を実装してください。
通知の内容:
・タイトル:「メモのリマインダー」
・本文:メモのタイトルを表示(例:「買い物リストの確認時間です」)
以下のケースも考慮してください。
・スマホを再起動しても通知が消えないようにする
・リマインダーを削除またはオフにしたら通知もキャンセルする
・すでに過去の日時が設定された場合はリマインダーを設定しない
Step 4:通知をタップして該当メモを開く
✍️ Claude Codeへの指示例:
通知をタップしたとき、そのリマインダーに紐づいたメモの
詳細画面(編集画面)が開くようにしてください。
アプリが起動していない状態からでも正しく動作するようにしてください。
Step 5:動作確認の工夫
リマインダーは設定した日時にならないと確認できないので、テスト用に短い時間で確認できる仕組みを作ります。
✍️ Claude Codeへの指示例:
デバッグ用として、設定画面に「10秒後に通知テスト」というボタンを追加してください。
ボタンを押すと10秒後にテスト通知が届くようにしてほしいです。
本番リリース時はこのボタンを非表示にする予定です。
動作確認チェックリスト
- [ ] アプリ初回起動時に通知許可ダイアログが表示される
- [ ] メモ作成・編集画面にリマインダー設定のトグルが表示される
- [ ] 日時ピッカーで日時を選択できる
- [ ] 「10秒後にテスト通知」ボタンを押すと10秒後に通知が届く
- [ ] 通知をタップすると該当のメモが開く
- [ ] スマホを再起動してもリマインダーが消えない
まとめ
| 学んだこと | ポイント |
|---|---|
| 通知許可リクエスト | Android 13以上では必須。拒否されても動作するように設計する |
| ローカル通知 | サーバー不要。指定日時にスマホ内から通知を送る |
| 再起動対応 | 「スマホ再起動後も通知が消えないように」と伝えるのが重要 |
| デバッグ用通知 | テスト専用のボタンを作ると確認が楽になる |

