コンテンツにスキップ

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未起動) ⚠️

制限事項

  1. Service Worker依存: PWA通知はブラウザのService Workerが処理
  2. 端末再起動後: PWAを一度開くまでService Workerが起動しない
  3. バッテリー最適化: OSがService Workerを停止する場合がある
  4. ネイティブアプリとの違い: 完全なバックグラウンド動作は保証されない

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通知が届かない

  1. iOS 16.4以上か確認
  2. PWAがホーム画面に追加されているか確認
  3. ホーム画面アイコンから起動しているか確認
  4. 設定 > INPortal > 通知 がオンか確認
  5. PWAを削除→Safari履歴クリア→再インストール

Android通知が届かない

  1. バッテリー最適化からブラウザを除外
  2. 通知設定でブラウザの通知が許可されているか確認
  3. 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 手入力での通知配信機能追加