capacitor-push-notifications について
`@capacitor-firebase/messaging`を使ってCapacitorアプリにFirebase Cloud Messagingのプッシュ通知を導入する開発者向けスキルです。プロジェクトを検出し、Android、iOS、Webの設定から実装、テスト、トラブルシューティングまで段階的に案内します。
主な機能
- 01プラットフォーム、バージョン、競合の検出
- 02Firebaseとメッセージングプラグインの設定
- 03Android、iOS、Webの構成
- 04権限、トークン、リスナーの実装
- 05トピックと通知チャンネルの設定
- 06テストと一般的な問題の診断
活用シーン
- 01既存のCapacitorアプリにFCMを導入
- 02各プラットフォームのプッシュ通知設定
- 03権限、トークン、通知タップの処理
- 04通知未達やトークンの問題を調査
MCP 対応
Capawesome MCP serverとCapacitor MCP serverを使い、search_docsとget_doc_pageで関連ドキュメントを参照します。利用できない場合も、スキルに含まれる手順で続行します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ capawesome-team/ skills --skill capacitor-push-notificationsインストール後、Claude Code で/capacitor-push-notificationsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/android-setup.mdfirebase-setup.mdimplementation.mdios-setup.mdtesting.mdweb-setup.md詳細
Capacitor Push Notifications
@capacitor-firebase/messaging プラグインを使って Firebase Cloud Messaging(FCM)経由のプッシュ通知を設定し、Capacitor アプリで使用します。
前提条件
- Capacitor 6、7、または 8 のアプリ。
- Node.js と npm がインストールされていること。
- Firebase プロジェクト。必要に応じて Firebase コンソールで作成してください。
- iOS の場合:有料の Apple Developer Program メンバーシップと、Xcode がインストールされていること。
- Android の場合:Android Studio がインストールされていること。
@capacitor/push-notificationsはインストールしないでください。@capacitor-firebase/messagingと競合します。
エージェントの動作
- 手順を一つずつ案内する。 プロセスを一度に一つずつユーザーに案内します。関係のない質問を複数同時に提示しないでください。
- 質問する前に自動検出する。 プロジェクトのプラットフォーム(
android/、ios/)、ビルドツール、フレームワーク、package.jsonの依存関係を確認します。検出できない場合に限り、ユーザーに質問してください。 - 一度に一つの判断をする。 手順でユーザーの入力が必要な場合は、その質問だけをして回答を待ってから続行します。
- 選択肢を明確に提示する。 自由回答形式ではなく、具体的な選択肢(例:「トピックのサブスクリプションを設定しますか?(はい/いいえ)」)を提示します。
MCP サーバー
現在のドキュメントを提供するホスト型 MCP サーバーが 2 つあります。どちらも、このスキルに含まれるガイダンスより常に最新です。
- Capawesome MCP server — Capawesome プラグイン、Capawesome CLI、Capawesome Cloud を扱います。
- Capacitor MCP server(非公式)— Capacitor 自体を扱います。CLI、
capacitor.configファイル、ネイティブの Android および iOS プロジェクト、公式プラグイン API が対象です。
どちらも search_docs と get_doc_page を提供するため、いずれかを呼び出す前に、トピックに応じたサーバーを選んでください。
- MCP ツールが利用できる場合は、トピックを担当するサーバーで
search_docsを呼び出し、一致するページをget_doc_pageで読んでから、以下のガイダンスを適用してください。両者の内容が異なる場合は、ドキュメントに従ってください。 - MCP ツールが利用できない場合は、以下のコマンドでサーバーを追加できることを一度だけ伝えてから、このスキルを続けてください。利用できないことを理由に処理を止めないでください。
claude mcp add --transport http capawesome "https://mcp.capawesome.io/mcp"
claude mcp add --transport http capacitor "https://capacitor-mcp.capawesome.io/mcp"
ドキュメントの利用にアカウントやトークンは必要ありません。Capawesome Cloud ツールを含む完全なセットアップについては、capawesome-mcp および capacitor-mcp スキルを参照してください。
手順
ステップ 1:プロジェクトを分析する
プロジェクトファイルを読み取り、以下を自動検出します。推測できる情報をユーザーに尋ねないでください。
- プラットフォーム:存在するディレクトリ(
android/、ios/)を確認します。これらが設定対象のプラットフォームです。 - ビルドツール/フレームワーク:
vite.config.ts、angular.json、webpack.config.js、next.config.jsなどを確認します。 - Capacitor のバージョン:
package.jsonから@capacitor/coreのバージョンを読み取ります。 - 競合するプラグイン:
package.jsonに@capacitor/push-notificationsがあるか確認します。見つかった場合は、続行する前に削除する必要があることをユーザーに警告してください。npm uninstall @capacitor/push-notifications
ステップ 2:Firebase をセットアップする
Firebase がすでにプロジェクトで設定されているか確認します。
- Android:
android/app/google-services.jsonが存在するか確認します。 - iOS:
ios/App/App/GoogleService-Info.plistが存在するか確認します。
検出されたプラットフォームで Firebase が設定されていない場合は、references/firebase-setup.md を読み、不足している各プラットフォームの Firebase セットアップをユーザーに案内します。
ステップ 3:プラグインをインストールする
npm install @capacitor-firebase/messaging firebase
npx cap sync
ステップ 4:Android を設定する
android/ が存在しない場合はスキップします。
references/android-setup.md を読み、Android 固有の設定を適用します。
ステップ 5:iOS を設定する
ios/ が存在しない場合はスキップします。
references/ios-setup.md を読み、iOS 固有の設定を適用します。これには APNs キー/証明書のセットアップ、AppDelegate.swift の変更、ケイパビリティの有効化が含まれます。
ステップ 6:Web の設定(該当する場合)
プロジェクトが Web を対象としている場合(ビルドツールの設定またはユーザーへの確認によって判定)、
references/web-setup.md を読み、Web 固有の設定を適用します。
ステップ 7:Capacitor プラグインのオプションを設定する
iOS のフォアグラウンド通知の表示方法をカスタマイズするか、ユーザーに確認します。カスタマイズする場合は、capacitor.config.json または capacitor.config.ts を更新します。
{
"plugins": {
"FirebaseMessaging": {
"presentationOptions": ["alert", "badge", "sound"]
}
}
}
使用可能なオプションは、badge、sound、alert、criticalAlert です。デフォルトは ["alert", "badge", "sound"] です。
ステップ 8:プッシュ通知のコードを追加する
references/implementation.md を読み、プッシュ通知のコードをプロジェクトに追加します。ユーザーのフレームワークに合わせて、インポートと構成を調整します。
実装には、以下が含まれます。
- 権限のリクエスト
- FCM トークンの取得
- 通知の受信のリスニング
- 通知のタップへの対応
ステップ 9:オプション機能を設定する
有効にするオプション機能をユーザーに確認します。
- トピックのサブスクリプション — FCM トピックを登録/登録解除します(Android/iOS のみ)。
- 通知チャンネル — カスタムの Android 通知チャンネルを作成します(Android SDK 26 以降のみ)。
- トークン更新リスナー — FCM トークンの変更をリッスンします。
選択された機能ごとに、references/implementation.md を読み、該当するコードを適用します。
ステップ 10:同期してテストする
-
プロジェクトを同期します。
npx cap sync -
references/testing.mdを読み、Firebase コンソールからテスト通知を送信する手順をユーザーに案内します。
エラー処理
@capacitor/push-notificationsとの競合:@capacitor-firebase/messagingプラグインは@capacitor/push-notificationsと共存できません。競合するプラグインをアンインストールします:npm uninstall @capacitor/push-notifications && npx cap sync。- iOS:プッシュ通知を受信できない:APNs キー/証明書が Firebase コンソールにアップロードされていることを確認します。Push Notifications および Background Modes の機能が有効になっていることを確認します。
AppDelegate.swiftに必要なデリゲートメソッドが含まれていることを確認します。 - iOS:
didRegisterForRemoteNotificationsWithDeviceTokenが呼び出されない:Xcode の Signing & Capabilities で Push Notifications 機能が追加されていることを確認します。アプリのバンドル ID が Firebase および Apple Developer ポータルに登録されているものと一致することを確認します。 - Android:プッシュ通知を受信できない:
google-services.jsonがandroid/app/google-services.jsonにあることを確認します。Google サービスの Gradle プラグインが適用されていることを確認します。 - Android:通知アイコンが白い四角になる:通知アイコンは、透明な背景に白いピクセルで作成する必要があります。色付きのアプリアイコンは白い四角として表示されます。専用のプッシュ通知アイコンを追加します。
- Web:
getToken()が失敗する:VAPID キーが正しいことを確認します。firebase-messaging-sw.jsがドメインのルートにあることを確認します。ブラウザーが Push API をサポートしていることを確認します。 - FCM トークンが
nullになる:getToken()の呼び出し前にrequestPermissions()が呼び出され、grantedが返されていることを確認します。iOS では、デバイスがシミュレーターではないことを確認します(シミュレーターではプッシュ通知を受信できません)。 checkPermissions()がdeniedを返す:ユーザーが通知の権限を恒久的に拒否しています。デバイスの設定(設定 > アプリ > 通知)から再度有効にするよう案内します。- Android 13 以降:権限の確認画面が表示されない:Android 13(API 33)以降では、
requestPermissions()を明示的に呼び出す必要があります。それ以前の Android バージョンでは、通知の権限はデフォルトで許可されます。
関連スキル
capacitor-app-development— Capacitor 開発全般のトピック、トラブルシューティング、ベストプラクティスについて説明します。capacitor-plugins— 他の Firebase プラグインを含む、Capacitor プラグインのインストールと設定全般について説明します。capawesome-mcp— MCP クライアントをホスト型 Capawesome MCP サーバーに接続し、常に最新のドキュメントや Capawesome Cloud の管理機能を利用します。