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 の確認¶
ページソースで以下を検索:
またはエンキューの条件確認¶
class-subscription-script-loader.php の is_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条件分岐を確認