コンテンツにスキップ

PWA通知設定問題 - デバッグチェックリスト

問題の状況

  • アプリを再起動すると通知設定モーダルが表示されない
  • [InportalPWA] のログがコンソールに全く表示されていない

ローカルファイルの修正状態 ✅

subscription.js (修正済み)

  • 行 5: console.log('[InportalPWA] subscription.js loaded'); - 無条件でログ出力
  • 行 14-17: config情報のデバッグログ
  • 行 504-532: Firebase非対応でも InportalPWA オブジェクトを公開

subscription-ui.js (修正済み)

  • 行 5: console.log('[InportalPWA] subscription-ui.js loaded'); - 無条件でログ出力
  • 行 10-14: UI config情報のデバッグログ
  • 行 627-630: shouldPromptSubscription のデバッグログ
  • 行 1168-1183: Push非対応でも社員認証は動作するよう条件緩和

デバッグ手順

Step 1: コンソールログの確認

本番サイト (https://kitazo-group.com/portal) で DevTools を開いて確認:

期待されるログ:
[InportalPWA] subscription.js loaded
[InportalPWA] config found: {hasVapidKey: ..., hasFirebaseConfig: ..., debug: ...}
[InportalPWA] subscription-ui.js loaded
[InportalPWA] UI config: {hasUiConfig: ..., hasAppConfig: ..., hasInportalPWA: ...}

Step 2: ログが表示されない場合の確認

2.1 スクリプトが読み込まれているか確認

DevTools → Network タブ → JS でフィルター - subscription.js が 200 で読み込まれているか? - subscription-ui.js が 200 で読み込まれているか?

2.2 キャッシュの問題確認

DevTools → Application → Service Workers - 「Update on reload」にチェック - 「Bypass for network」にチェック - ページをリロード

2.3 強制的にキャッシュをクリア

DevTools → Application → Storage → Clear site data

Step 3: スクリプトの中身が古い場合

Networkタブで subscription.js をクリック → Preview で中身を確認: - 1行目付近に console.log('[InportalPWA] subscription.js loaded'); があるか? - なければ、古いバージョンがキャッシュされている

対処法1: Service Worker を強制更新

// コンソールで実行
navigator.serviceWorker.getRegistrations().then(function(registrations) {
    for(let registration of registrations) {
        registration.unregister();
    }
}).then(function() {
    location.reload();
});

対処法2: FTPで再デプロイ(ファイル名にバージョン番号を追加)

Step 4: InportalPWAConfig が存在しない場合

コンソールで確認:

console.log('InportalPWAConfig:', window.InportalPWAConfig);
console.log('InportalPWAUiConfig:', window.InportalPWAUiConfig);

存在しない場合 → PHPの出力を確認: 1. ページソースを表示 (Ctrl+U) 2. InportalPWAConfig を検索 3. 見つからなければ class-subscription-script-loader.php のロジックを確認


追加調査: PHPの出力確認

wp_localize_script の確認

ページソースで以下を検索:

<script id='inportal-pwa-subscription-js-extra'>
または
var InportalPWAConfig = 

エンキューの条件確認

class-subscription-script-loader.phpis_frontend_context(): - is_admin() が false か - wp_doing_ajax() が false か


FTPデプロイコマンド

修正ファイルを再デプロイする場合:

# subscription.js
curl.exe -T "c:\Users\GE-N124\Local Sites\portal\app\public\wp-content\plugins\inportal-pwa-addon\assets\js\subscription.js" --ftp-create-dirs -u ksb1969:8wp912x5 "ftp://sv16678.xserver.jp/kitazo-group.com/public_html/portal/wp-content/plugins/inportal-pwa-addon/assets/js/subscription.js"

# subscription-ui.js
curl.exe -T "c:\Users\GE-N124\Local Sites\portal\app\public\wp-content\plugins\inportal-pwa-addon\assets\js\subscription-ui.js" --ftp-create-dirs -u ksb1969:8wp912x5 "ftp://sv16678.xserver.jp/kitazo-group.com/public_html/portal/wp-content/plugins/inportal-pwa-addon/assets/js/subscription-ui.js"

トラブルシューティングフローチャート

コンソールログを確認
  ├─ ログが表示される
  │   └─ shouldPromptSubscription のログを確認
  │       ├─ no block → HTMLに data-inportal-pwa-block がない
  │       ├─ no_modal=1 in URL → URLパラメータを削除
  │       ├─ data-require-subscription is not 1 → HTML属性を確認
  │       ├─ no employeeId → モーダル表示されるはず
  │       ├─ unsupported browser → Push非対応の処理に移行
  │       └─ already subscribed → 既に登録済み
  └─ ログが表示されない
      ├─ Networkタブでスクリプト確認
      │   ├─ 読み込まれていない → PHPを確認
      │   └─ 読み込まれている → キャッシュ問題
      └─ ページソースで InportalPWAConfig を確認
          ├─ 存在する → スクリプトの実行エラー
          └─ 存在しない → PHP条件分岐を確認