PWA Push通知 仕様書
概要
INPortalのPush通知はFirebase Cloud Messaging (FCM) と Service Worker を使用したPWA(Progressive Web App)方式で実装されています。
対応環境
iOS
| バージョン |
対応状況 |
| iOS 16.3以下 |
❌ 非対応 |
| iOS 16.4以上 |
✅ 対応 |
要件:
- Safari経由でホーム画面にPWAを追加
- ホーム画面のアイコンからアプリを起動
- 通知許可を許可
Android
| ブラウザ |
対応状況 |
| Chrome |
✅ 対応 |
| Edge |
✅ 対応 |
| Firefox |
✅ 対応 |
通知配信方式
FCM Topic送信(推奨)
全員配信(scope=all)の場合、FCM Topicを使用して1リクエストで全ユーザーに配信。
| 項目 |
値 |
| Topic名 |
inportal_all |
| 配信時間 |
1秒以下 |
| 最大購読者数 |
無制限 |
個別トークン送信
特定ユーザーへの配信時に使用。1ユーザー1リクエスト。
バックグラウンド動作
通知受信の条件
| 状態 |
iOS |
Android |
| アプリ起動中 |
✅ |
✅ |
| バックグラウンド |
✅ |
✅ |
| アプリスイッチャーから削除 |
⚠️ |
✅ |
| 端末再起動後(PWA未起動) |
❌ |
⚠️ |
制限事項
- Service Worker依存: PWA通知はブラウザのService Workerが処理
- 端末再起動後: PWAを一度開くまでService Workerが起動しない
- バッテリー最適化: OSがService Workerを停止する場合がある
- ネイティブアプリとの違い: 完全なバックグラウンド動作は保証されない
FCMメッセージ構造
HTTP v1 API ペイロード
{
"message": {
"topic": "inportal_all",
"notification": {
"title": "通知タイトル",
"body": "通知本文"
},
"android": {
"priority": "high",
"notification": {
"channel_id": "inportal_notifications",
"notification_priority": "PRIORITY_HIGH"
}
},
"webpush": {
"headers": {
"Urgency": "high",
"TTL": "86400"
}
},
"apns": {
"headers": {
"apns-priority": "10",
"apns-push-type": "alert"
},
"payload": {
"aps": {
"alert": { "title": "...", "body": "..." },
"sound": "default",
"content-available": 1
}
}
}
}
}
管理画面機能
配信キュー(/wp-admin/admin.php?page=inportal-pwa-addon-queue)
- テンプレート選択または手入力で通知作成
- 予約配信対応
- 配信結果の確認
Push設定(/wp-admin/admin.php?page=inportal-pwa-addon-push-settings)
- 購読者数の確認
- FCMトピック移行ツール
- Firebase設定
トラブルシューティング
iOS通知が届かない
- iOS 16.4以上か確認
- PWAがホーム画面に追加されているか確認
- ホーム画面アイコンから起動しているか確認
- 設定 > INPortal > 通知 がオンか確認
- PWAを削除→Safari履歴クリア→再インストール
Android通知が届かない
- バッテリー最適化からブラウザを除外
- 通知設定でブラウザの通知が許可されているか確認
- PWAの通知チャンネルが有効か確認
端末再起動後に通知が届かない
仕様上の制限です。端末再起動後はPWAを一度開いてService Workerを起動する必要があります。
データベーステーブル
| テーブル名 |
用途 |
wp_pwa_subscribers |
購読者トークン |
wp_pwa_topic_subscriptions |
Topic登録済みトークン |
wp_pwa_notification_queue |
配信キュー |
wp_pwa_notification_templates |
通知テンプレート |
関連ファイル
inportal-pwa-addon/src/notification/class-notification-sender.php - FCM送信
inportal-pwa-addon/src/notification/class-notification-queue-processor.php - キュー処理
inportal-pwa-addon/src/notification/class-service-worker-bridge.php - Service Worker注入
inportal-pwa-addon/assets/js/subscription.js - クライアント側購読処理
更新履歴
| 日付 |
内容 |
| 2026-01-08 |
FCM Topic送信実装、iOS/Android優先度設定追加 |
| 2026-01-07 |
手入力での通知配信機能追加 |